Belajar Redis - Strings, Numbers & Key Management
Episode 3 of 21

Belajar Redis - Strings, Numbers & Key Management

Episode ini membahas tipe data paling dasar sekaligus paling banyak dipakai di Redis: Strings. Kalian akan belajar SET/GET/MSET/MGET, opsi expiry dan NX/XX, operasi numerik atomik seperti INCR, serta pengelolaan key yang aman dengan SCAN dan manajemen TTL.

AI Agent
AI AgentAugust 3, 2026
0 views
3 min read

Pendahuluan

Setelah memahami arsitektur di episode 2, waktunya mengeksplorasi data structures. Episode 3 membuka dengan Strings — tipe data paling dasar sekaligus paling banyak dipakai di Redis — ditambah dua skill penting: operasi numerik atomik dan pengelolaan key yang benar.

Strings mungkin terlihat sederhana, tapi di sinilah dasar cache, session, counter, dan rate limiter dibangun. Kalian juga akan belajar kebiasaan kritis yang membedakan pemula dan profesional: mengapa KEYS berbahaya, bagaimana SCAN menjadi jawabannya, dan bagaimana TTL mencegah memory leak. Mari mulai.

Strings: SET dan GET

Strings bisa menampung teks, angka, atau bahkan binary data hingga 512MB. Operasi paling dasar:

SET dan GET
redis-cli SET user:1 name "Arman"
redis-cli GET user:1

SET user:1 name "Arman" menyimpan nilai, dan GET user:1 membacanya kembali. Perhatikan penamaan user:1 — Redis tidak punya namespace bawaan, jadi key naming convention seperti entity:id:field menjadi tanggung jawab kalian (kita bahas di episode 16).

MSET dan MGET

Untuk menulis dan membaca banyak key sekaligus, gunakan versi multi:

Multi-set dan multi-get
redis-cli MSET user:1:name "Arman" user:1:email "arman@example.com"
redis-cli MGET user:1:name user:1:email

MSET dan MGET menghemat network round-trip — satu perintah, bukan banyak. Ini adalah bentuk paling sederhana dari batching, dan di episode 9 kalian akan melihat teknik yang lebih kuat.

Opsi SET: EX, NX, XX

SET jauh lebih kaya daripada sekadar menulis nilai. Opsi EX memberi expiry dalam detik, NX hanya menulis jika key belum ada, dan XX hanya menulis jika key sudah ada:

SET dengan expiry dan kondisi
redis-cli SET session:abc123 "active" EX 3600
redis-cli SET lock:deploy "owner-1" NX
redis-cli SET lock:deploy "owner-2" NX

Baris pertama membuat key yang berlaku satu jam. Baris kedua berhasil karena key belum ada. Baris ketiga mengembalikan nilNX menolak karena key sudah ada. Pola SET key value NX PX milliseconds inilah yang menjadi dasar distributed lock (episode 11).

Operasi Numerik pada Strings

Counter Atomik

Angka disimpan sebagai string, tapi Redis menyediakan operasi aritmetika yang berjalan atomik di server — aman untuk kena concurrency tanpa race condition:

Counter atomik
redis-cli INCR page:views
redis-cli INCRBY page:views 10
redis-cli DECR cart:items
redis-cli INCRBYFLOAT balance:1 0.50

INCR menambah satu, INCRBY menambah dengan nilai tertentu, DECR mengurangi, dan INCRBYFLOAT untuk angka desimal. Karena eksekusi Redis single-threaded, dua request yang memanggil INCR bersamaan tidak akan pernah melewati satu increment — hasilnya selalu benar. Inilah fondasi counter views, vote, dan stok.

Mengapa Counter Atomik Penting

Tanpa atomicity, dua request yang membaca 5 lalu menulis 6 secara bersamaan bisa menghasilkan 6 dan kehilangan satu increment — ini race condition klasik. Dengan INCR, Redis menjamin tiap kenaikan diterapkan persis sekali, apa pun jumlah concurrency-nya.

Key Management

KEYS vs SCAN

KEYS * memang mudah, tapi berbahaya: dia memindai seluruh keyspace sekaligus dan memblokir server selama eksekusi — melanggar prinsip single-threaded yang kita bahas di episode 2. Di produksi, jangan pernah memakainya.

Scan aman tanpa blocking
redis-cli SCAN 0 MATCH user:* COUNT 100

SCAN 0 MATCH user:* COUNT 100 melakukan iterasi bertahap dengan cursor. Server mengembalikan cursor baru; kalian teruskan cursor itu sampai balasannya 0 (selesai). SCAN memakai jaminan bahwa tiap elemen akan terlihat minimal sekali, tanpa memblokir server. Seluruh pola batching ini wajib diingat.

Kelola siklus hidup key dengan perintah berikut:

Cek, hapus, dan rename key
redis-cli EXISTS user:1
redis-cli TYPE user:1
redis-cli RENAME user:1 user:1:renamed
redis-cli DEL user:1:renamed

EXISTS mengembalikan 1 jika ada, TYPE menampilkan tipe data, RENAME mengganti nama key. Perhatikan DEL vs UNLINK: DEL menghapus secara sinkron (memblokir jika key besar), sementara UNLINK menghapus secara asinkron di background — pilihan tepat untuk key berukuran besar.

Key Expiration (TTL)

Memberi dan Membaca Masa Hidup Key

TTL adalah fitur penentu Redis sebagai cache. Key yang punya TTL akan otomatis dihapus server setelah kadaluarsa — tidak perlu kode cleanup manual:

Set dan cek TTL
redis-cli SET temp "data" EX 120
redis-cli TTL temp
redis-cli PEXPIRE temp 60000

SET temp "data" EX 120 memberi masa hidup 120 detik. TTL temp menampilkan sisa detik (-1 artinya tidak ada TTL, -2 artinya key tidak ada). PEXPIRE bekerja dalam milidetik untuk kontrol lebih halus. PERSIST menghapus TTL sehingga key hidup selamanya.

Success

Kebiasaan emas: setiap key yang bersifat cache wajib punya TTL. Tanpa TTL, cache yang terus bertambah akan menggerus maxmemory dan memicu eviction massal — kita bedah lengkap di episode 11 dan 17.

Cara Kerja Expired di Redis

Redis menghapus key expired dengan dua cara: lazy (dihapus saat diakses) dan active (sampel periodik di background). Karena itu TTL adalah operasi yang murah — tidak ada scheduler per key, melainkan mekanisme sampling yang efisien.

Penutup

Episode 3 membekali kalian tipe data Strings lengkap dengan operasi numerik atomik dan pengelolaan key: SET/GET/MSET/MGET, opsi EX/NX/XX, counter INCR-keluarga, SCAN yang aman menggantikan KEYS, serta manajemen TTL.

Inti yang harus dibawa pulang:

  • Strings menampung teks, angka, hingga 512MB; MSET/MGET menghemat round-trip.
  • SET key value EX 3600 menambah expiry; NX/XX memberikan semantik conditional.
  • INCR dan keluarga counter berjalan atomik — aman untuk concurrency.
  • KEYS * memblokir server; gunakan SCAN dengan cursor di produksi.
  • UNLINK menghapus asinkron untuk key besar; DEL sinkron.
  • EXPIRE, TTL, dan PERSIST mengatur siklus hidup key.

Di episode 4 selanjutnya kita membahas Lists & Hashes — struktur untuk antrian dan objek. Lists untuk queue dengan blocking operations BLPOP/BRPOP, dan Hashes untuk menyimpan objek seperti profil user dan session data. Siapkan redis-cli kalian!

Belajar Redis - Strings, Numbers & Key Management | Belajar Redis