~/VibeHandbook
PDF Gratis

Database

redis.io

Redis

Apa itu ini

Bayangkan menyimpan catatan yang kamu perlukan sekarang di atas meja di depanmu, alih-alih berjalan ke lemari arsip setiap kali membutuhkannya — jauh lebih cepat, tapi mejanya jadi kosong kalau listrik padam. Redis bekerja seperti meja itu: ia menyimpan data di memori kerja yang cepat (RAM, atau Random Access Memory) alih-alih di disk, sehingga pembacaan dan penulisan data menjadi sangat cepat. Redis juga bisa menyimpan data ke disk secara opsional. Ia bekerja sebagai penyimpanan key-value (kunci-nilai), tapi mendukung struktur data yang kaya seperti list, set, sorted set, hash, dan stream. Redis paling sering digunakan sebagai (penyimpanan sementara), penyimpan sesi, antrean (), atau pembatas laju (rate limiter) yang mendampingi utama.

Kelebihan

  • Latensi di bawah satu milidetik berkat operasi yang berjalan di memori.
  • Struktur data yang serbaguna: string, hash, list, set, sorted set, stream.
  • TTL (Time To Live)/masa berlaku bawaan — setiap entri bisa menghapus dirinya sendiri secara otomatis setelah waktu tertentu — menjadikannya ideal untuk cache dan sesi.
  • Operasi atomik dan scripting Lua untuk penghitung (counter) dan lock yang aman.
  • Dukungan pub/sub dan stream untuk messaging dan pipeline event.

Kompromi (trade-off)

  • Data dibatasi oleh memori yang tersedia; dataset besar jadi mahal.
  • Persistensi bersifat opsional dan bisa kehilangan tulisan terbaru saat crash.
  • Bukan pengganti penyimpanan relasional yang tahan lama (durable).
  • Clustering menambah kompleksitas operasional untuk sharding dan failover.

Kapan menggunakannya

Gunakan Redis untuk meng-cache hasil query yang mahal, menyimpan sesi, menerapkan pembatasan laju (rate limiting), mengelola antrean pekerjaan, membangun papan peringkat (leaderboard), atau mengirim pesan real-time. Padukan dengan database yang tahan lama sebagai sumber kebenaran (source of truth).

Kecocokan dengan vibe coding

Saat mengarahkan AI, tegaskan bahwa Redis adalah cache atau penyimpanan tambahan, bukan sistem pencatatan utama. Jadi AI harus selalu menetapkan TTL pada entri yang di-cache. AI juga harus merancang skema penamaan kunci yang jelas (misalnya user:123:profile). Minta AI menggunakan perintah atomik seperti INCR untuk counter dan SET ... NX EX untuk lock, alih-alih urutan baca-ubah-tulis (read-modify-write) yang bisa menyebabkan race condition. Tips yang bagus: minta AI menggunakan pola cache-aside. Artinya sederhana: pertama-tama cari di cache; jika tidak ada, ambil dari database; lalu simpan ke cache untuk pemakaian berikutnya. Minta juga AI menjelaskan strategi invalidasinya — cara data lama yang sudah usang dibersihkan — supaya data yang kedaluwarsa tidak tertinggal.

# Cache a value with a 1-hour expiry
SET user:123:profile "{\"name\":\"Ada\"}" EX 3600

# Atomic rate-limit counter
INCR rate:ip:203.0.113.5
EXPIRE rate:ip:203.0.113.5 60

# Distributed lock: set only if not exists, auto-expire
SET lock:job:42 "owner-a" NX EX 30

# Leaderboard with a sorted set
ZADD leaderboard 4200 "player:7"
ZREVRANGE leaderboard 0 9 WITHSCORES