Redis adalah salah satu teknologi yang sering disebut-sebut ketika kita membahas aplikasi cepat, realtime, dan scalable. Tapi di balik popularitasnya, banyak developer yang belum benar-benar memahami bagaimana Redis bekerja di balik layar dan apa yang membuatnya secepat itu.

Di artikel ini, kita bahas dengan santai tapi detail: mulai dari konsep dasar, cara Redis menyimpan data, mekanisme in-memory, hingga bagaimana Redis bisa dipakai untuk caching, pub/sub, queue, dan masih banyak lagi.

Apa Itu Redis?
Redis adalah in-memory data store yang berfungsi sebagai:
Database
Cache
Message broker
Redis menyimpan data langsung di memori (RAM), bukan di disk seperti kebanyakan database tradisional. Ini yang membuat Redis punya performa super cepat — kecepatannya bisa hitungan mikrodetik.
Kenapa Redis Cepat?
Ada tiga alasan utama kenapa Redis dianggap sebagai “kilat”-nya dunia database:
1. In-Memory Storage
Semua data berada di RAM.
RAM jauh lebih cepat daripada SSD maupun HDD, sehingga operasi baca/tulis bisa terjadi hampir seketika.
2. Single-Threaded Architecture
Mungkin ini terdengar aneh — “kok malah single-threaded, bukannya jadi lambat?”
Tapi justru ini yang membuat Redis:
Menghindari overhead context switching
Tidak perlu locking kompleks dalam memproses data
Menjamin operasi lebih konsisten dan predictable
3. Optimized Data Structures
Redis tidak hanya menyimpan data sebagai string. Ia punya struktur seperti:
String
Hash
List
Set
Sorted Set
Bitmap
HyperLogLog
Stream
Data structure ini didesain sangat efisien untuk use case tertentu. Misal, counter pakai String, antrian pakai List, leaderboard pakai Sorted Set, dan sebagainya.
Cara Redis Menyimpan Data
Key-Value Store
Redis bekerja mirip dictionary/map:
SET user:1:name "Irfan"
GET user:1:nameSetiap data punya key dan value.
Key wajib unik, value bisa berupa tipe data apa pun yang didukung Redis.
Bagaimana Redis Menjaga Data agar Tidak Hilang?
Karena Redis berjalan di memori, mungkin kamu berpikir, “Kalau listrik mati, data hilang dong?”
Jawabannya: Tidak juga. Redis menyediakan dua mekanisme persistence:
1. RDB (Redis Database File) – Snapshot
Redis akan menyimpan snapshot isi memori dalam interval tertentu.
Kelebihan:
File lebih kecil
Recovery cepat
Kekurangan:
Ada kemungkinan kehilangan data terakhir sebelum snapshot
2. AOF (Append Only File) – Log Perintah
Setiap operasi ditulis ke file log.
Jika Redis restart, semua perintah direplay dari awal.
Kelebihan:
Data lebih aman
Kehilangan data minimal
Kekurangan:
Ukuran file lebih besar
3. RDB + AOF (Hybrid Mode)
Mode modern di Redis yang menggabungkan kecepatan RDB + keamanan AOF.
Cara Kerja Redis untuk Caching
Ini salah satu use case paling umum.
Flow sederhananya:
Aplikasi request data ke backend.
Backend cek Redis:
Kalau ada → balikan data cepat.
Kalau tidak ada → ambil dari DB, simpan ke Redis, lalu balikan ke user.
Data disimpan dengan TTL (time to live) supaya otomatis kadaluarsa.
Kode pseudo:
GET product:123
-> miss
SELECT * FROM products WHERE id=123
SET product:123 {...} EX 3600Hasilnya?
Aplikasi bisa melayani ribuan request per detik tanpa membebani database utama.
Cara Kerja Redis sebagai Message Broker (Pub/Sub)
Redis menyediakan fitur publish/subscribe untuk komunikasi realtime.
Flow:
Client A publish pesan ke channel.
Client B dan C yang subscribe channel tersebut menerima pesan secara realtime.
Contoh:
PUBLISH orders "New Order Created"
SUBSCRIBE ordersDipakai untuk:
Notifikasi realtime
Chat app
Log event distribusi
Cara Kerja Redis sebagai Queue (List, Stream)
Redis juga sering dipakai sebagai antrian.
Menggunakan List
LPUSH queue:email {...}
RPOP queue:emailSimple dan cepat, cocok untuk job kecil.
Menggunakan Stream
Untuk kebutuhan yang lebih kompleks:
Multi consumer
Acknowledge
Durability lebih baik
Contoh:
XADD messages * name "irfan"
XRANGE messages - +Cara Kerja Cluster dan Sharding di Redis
Ketika aplikasi tumbuh besar, satu node Redis mungkin tidak cukup.
Redis menyediakan cluster mode dengan fitur:
Sharding otomatis (membagi key ke beberapa node)
Failover otomatis (jika master mati, replica naik)
High availability
Cara Redis membagi key menggunakan CRC16 hash lalu memetakan key ke 16384 slot.
Setiap node memegang sebagian slot.
Bagaimana Proses Eksekusi Command Redis?
Redis punya event loop internal dengan mekanisme berikut:
Mendengarkan koneksi (socket).
Membaca perintah dari client.
Mem-parse perintah menggunakan RESP protocol (Redis Serialization Protocol).
Mengeksekusi perintah dalam satu-thread (atomic).
Mengembalikan hasil ke client.
Jika persistence aktif → tulis RDB/AOF.
RESP format sangat sederhana sehingga parsingnya cepat.
Keunggulan Utama Redis
Kecepatan ekstrem
Multi fungsi (cache, db, broker, queue)
Struktur data kaya
Mendukung persistence
Scalable via cluster
Reliable untuk sistem dengan traffic besar
Kapan Redis Jangan Dipakai?
Redis bukan pilihan ideal kalau:
Kamu butuh query kompleks (JOIN, aggregate)
Data sangat besar yang tidak cukup di memori
Akurasi data jangka panjang sangat penting (seperti ledger keuangan)
Tidak punya anggaran untuk RAM besar
Penutup
Redis adalah salah satu teknologi yang wajib dipahami oleh developer modern.
Cara kerjanya sederhana, tapi kemampuannya luar biasa kuat.
Dengan memahami konsep seperti:
In-memory engine
Single-threaded event loop
Data structure yang dioptimasi
Persistence (RDB/AOF)
Pub/Sub & Stream
Cluster dan sharding
Kamu bisa memaksimalkan penggunaan Redis untuk membuat aplikasi yang cepat, scalable, dan modern.