Redis
Redis adalah in-memory data store yang menyimpan data langsung di RAM - bukan di disk - sehingga operasi baca/tulisnya bisa ratusan kali lebih cepat dari database biasa. Biasa dipakai sebagai cache, session storage, atau message broker.
Apa itu Redis?
Redis (Remote Dictionary Server) adalah data store open-source yang menyimpan semua datanya di RAM (memory), bukan di disk seperti database konvensional. Ini yang bikin Redis luar biasa cepat - latensinya bisa di bawah 1 milidetik, dan throughput-nya bisa mencapai jutaan operasi per detik dalam kondisi yang tepat.
Redis dibuat oleh Salvatore Sanfilippo pada 2009, awalnya untuk mengatasi masalah performa di platform social media Italia. Sekarang Redis dipakai oleh hampir semua perusahaan teknologi besar - dari Twitter sampai GitHub sampai Stack Overflow - sebagai lapisan data yang cepat di antara aplikasi dan database utama.
Tipe Data yang Didukung Redis
Ini yang bikin Redis beda dari in-memory cache sederhana lainnya - Redis bukan sekadar key-value store. Redis mendukung berbagai struktur data:
| Tipe Data | Deskripsi | Contoh Use Case |
|---|---|---|
| String | Nilai teks atau binary | Cache HTML, session token |
| Hash | Map dari field ke value | User session data, profil user |
| List | Linked list dengan order | Message queue, activity feed |
| Set | Kumpulan nilai unik tanpa duplikat | Tag, unique visitors |
| Sorted Set | Set dengan score numerik | Leaderboard, rate limiting |
| Bitmap | Bit array yang efisien | Feature flags, analitik kehadiran |
| HyperLogLog | Estimasi cardinality | Unique page views (aproximasi) |
| Stream | Append-only log terstruktur | Event streaming, audit log |
Redis sebagai Cache: Pola Paling Umum
Use case paling umum Redis adalah sebagai cache layer di depan database utama. Polanya seperti ini:
- Request masuk ke aplikasi
- Aplikasi cek Redis dulu - apakah data sudah ada di cache (cache hit)?
- Kalau ada di Redis, langsung kembalikan data tanpa query ke database
- Kalau tidak ada (cache miss), query ke database, simpan hasilnya ke Redis dengan TTL (time-to-live), baru kembalikan ke user
Dengan pola ini, response time aplikasi bisa turun drastis karena mayoritas request dilayani dari RAM yang super cepat, bukan dari disk.
Redis Persistence
Meskipun data disimpan di RAM, Redis punya beberapa mekanisme persistence supaya data tidak hilang kalau server restart:
| Mekanisme | Cara Kerja | Trade-off |
|---|---|---|
| RDB Snapshot | Dump data ke disk secara periodik | Bisa kehilangan data sejak snapshot terakhir |
| AOF (Append-Only File) | Tulis setiap operasi ke log file | Lebih aman tapi file lebih besar dan recovery lebih lambat |
| RDB + AOF | Kombinasi keduanya | Paling aman, direkomendasikan untuk production |
| No persistence | Data hanya di RAM | Tercepat, tapi hilang kalau restart |
Untuk use case cache murni, biasanya tidak perlu persistence - kalau Redis restart, cache tinggal diisi ulang dari database. Tapi untuk session storage atau job queue, persistence penting supaya data tidak hilang.
Redis vs Alternatif Cache
| Aspek | Redis | Memcached | DynamoDB DAX |
|---|---|---|---|
| Tipe data | Kaya (8+ tipe) | Hanya string | Key-value |
| Persistence | Opsional | Tidak ada | Managed |
| Pub/Sub messaging | Built-in | Tidak ada | Tidak ada |
| Clustering | Built-in (Redis Cluster) | Client-side | Managed |
| Lisensi | Open-source (SSPL) | Open-source (BSD) | Proprietary/berbayar |
| Lua scripting | Ya | Tidak | Tidak |
Use Case Redis Lainnya
Selain cache, Redis sering dipakai untuk:
Session storage: Simpan data sesi login user dengan TTL otomatis. Lebih cepat dari menyimpan session di database, dan mudah di-scale horizontal.
Rate limiting: Pakai Sorted Set atau atomic INCR untuk membatasi berapa kali user boleh hit endpoint tertentu dalam window waktu tertentu.
Message broker sederhana: Dengan Pub/Sub atau Streams, Redis bisa jadi message broker ringan untuk komunikasi antar service.
Leaderboard real-time: Sorted Set Redis sangat cocok untuk leaderboard - cukup update score, dan Redis otomatis menjaga urutan.
Redis di NgulikData
NgulikData pakai Redis (via library ioredis) untuk beberapa hal sekaligus: caching status premium user supaya nggak perlu query Supabase setiap request, dan caching response API yang sering diakses. Ini yang bikin halaman di NgulikData bisa load cepat meski traffic sedang tinggi.
Udah paham Redis? Lanjut latihan SQL dan Excel yuk!
Latihan interaktif, langsung di browser.