Perintah dasar

Sepuluh menit pertama di redis-cli: SET, GET, DEL, INCR, dan TTL untuk pola penggunaan paling dasar.

Daftar isi

Sepuluh menit pertama di redis-cli sudah cukup untuk mempraktikkan pola penggunaan Redis yang paling dasar: menyimpan dan membaca nilai dengan SET dan GET, menghapus key dengan DEL, menaikkan penghitung dengan INCR, serta mengendalikan masa hidup key dengan TTL. Seluruh contoh menggunakan awalan dasar: pada nama key agar demo mudah dikenali dan aman dijalankan ulang kapan pun. Menjalankan ulang contoh selalu menimpa nilai lama, sehingga keluarannya tetap sama.

Menyimpan dan membaca nilai#

Perintah SET menyimpan sebuah nilai pada key tertentu dan selalu menjawab OK apabila berhasil. Bila key sudah ada, nilai lamanya ditimpa tanpa peringatan, sehingga penulisan pada key demo dapat diulang kapan pun. Perintah GET membaca key yang dituju dan mengembalikan nilainya apa adanya.

bash
# menyimpan nilai string pada key dasar:salam
redis-cli SET dasar:salam "Halo, Redis"
# membaca kembali nilai key dasar:salam
redis-cli GET dasar:salam
# membaca key yang belum pernah dibuat
redis-cli GET dasar:tidak-ada
text Keluaran
OK
Halo, Redis

Baris terakhir dari eksekusi di atas kosong karena GET menunjuk key yang belum pernah dibuat, yaitu dasar:tidak-ada. Pada mode non-interaktif, redis-cli menampilkan nilai yang tidak ada sebagai baris kosong, nilai integer tanpa awalan (integer), dan string tanpa tanda kutip. Tampilan sesi interaktif di terminal memuat prompt, kutip, dan awalan tersebut secara lengkap, sebagaimana berikut.

text Tampilan sesi interaktif redis-cli
127.0.0.1:6379> SET dasar:salam "Halo, Redis"
OK
127.0.0.1:6379> GET dasar:salam
"Halo, Redis"
127.0.0.1:6379> GET dasar:tidak-ada
(nil)

Menghapus key#

Perintah DEL menghapus key beserta nilainya dan mengembalikan jumlah key yang benar-benar terhapus. Key yang tidak ada tidak dihitung, sehingga angka yang dikembalikan mencerminkan penghapusan yang nyata. DEL juga menerima lebih dari satu key dalam satu pemanggilan, sehingga pembersihan beberapa key dapat dilakukan sekaligus.

bash
# menyiapkan key contoh beserta nilainya
redis-cli SET dasar:salam "Halo, Redis"
# menghapus key dasar:salam dan memperoleh jumlah key yang terhapus
redis-cli DEL dasar:salam
# menyiapkan dua key contoh sekaligus
redis-cli SET dasar:arsip "laporan 2025"
redis-cli SET dasar:draf "catatan rapat"
# menghapus dua key dalam satu pemanggilan
redis-cli DEL dasar:arsip dasar:draf
text Keluaran
OK
1
OK
OK
2

Keluaran 1 pada penghapusan pertama menunjukkan satu key terhapus, sedangkan 2 pada penghapusan kedua menunjukkan dua key sekaligus. Apabila GET dasar:salam dijalankan sekarang, jawabannya kosong, sebagaimana perilaku key yang tidak ada pada bagian sebelumnya.

Penghitung dengan INCR#

Perintah INCR menaikkan nilai bilangan bulat pada sebuah key sebanyak satu dan mengembalikan nilai barunya. Operasi ini atomik, sehingga banyak proses dapat menaikkan penghitung yang sama tanpa saling menimpa. Redis membuat key penghitung otomatis dengan nilai satu apabila key belum ada, tetapi contoh berikut menyiapkan key dengan SET bernilai nol agar alur nilainya terbaca jelas.

bash
# menginisialisasi penghitung dengan nilai 0
redis-cli SET dasar:hitung 0
# menaikkan penghitung tiga kali secara berurutan
redis-cli INCR dasar:hitung
redis-cli INCR dasar:hitung
redis-cli INCR dasar:hitung
# membaca nilai akhir penghitung dengan GET
redis-cli GET dasar:hitung
text Keluaran
OK
1
2
3
3

Tiga kali eksekusi INCR mengembalikan 1, 2, lalu 3, dan pembacaan terakhir dengan GET menunjukkan nilai yang sama. Pola ini menjadi dasar pembatasan laju, statistik, dan leaderboard: setiap peristiwa menaikkan key penghitung, dan nilainya dapat dibaca tanpa operasi baca-tulis manual yang rawan mengalami race condition, yaitu dua proses yang saling menimpa hasil kerjanya.

Masa hidup key dan TTL#

Sebuah key dapat diberi masa hidup (time to live, TTL) sehingga Redis menghapusnya otomatis setelah waktu tersebut habis. Pola ini berguna untuk data sementara seperti kode verifikasi sesi, tautan unduhan berbatas waktu, dan status antrean yang usang. Perintah TTL melaporkan sisa masa hidup key dalam satuan detik, angka -1 bila key menetap tanpa masa hidup, dan -2 bila key tidak ada.

bash
# menyimpan key tanpa masa hidup
redis-cli SET dasar:notulensi "rapat pukul 10.00"
# key tanpa masa hidup dilaporkan -1 oleh TTL
redis-cli TTL dasar:notulensi
text Keluaran
OK
-1

Masa hidup dapat ditetapkan saat key dibuat melalui opsi EX pada SET, atau setelahnya dengan perintah EXPIRE terhadap key yang sudah ada. Demo kedaluwarsa berikut menetapkan masa hidup satu detik, menunggu dua detik, lalu memeriksa kondisi key tersebut. Hasil pemeriksaan menunjukkan key hilang tanpa perintah penghapusan apa pun.

bash
# menyimpan key contoh
redis-cli SET dasar:kode-otp "135790"
# menetapkan masa hidup key selama satu detik
redis-cli EXPIRE dasar:kode-otp 1
# menunggu dua detik agar masa hidup habis
sleep 2
# key yang sudah kedaluwarsa dilaporkan tidak ada oleh EXISTS
redis-cli EXISTS dasar:kode-otp
# sisa masa hidup key yang sudah kedaluwarsa dilaporkan -2 oleh TTL
redis-cli TTL dasar:kode-otp
text Keluaran
OK
1
0
-2

EXPIRE menjawab 1 karena masa hidup berhasil dipasang. Dua detik kemudian, EXISTS menjawab 0 dan TTL menjawab -2, yang berarti key dasar:kode-otp sudah kedaluwarsa dan dihapus oleh server tanpa perintah DEL apa pun. Bila masa hidup masih berjalan, TTL melaporkan sisa detik yang terus bergerak turun, misalnya nilai 45 pada key yang dibuat lima belas detik lalu dengan masa hidup 60 detik.

Kesalahan umum#

Kesalahan pertama adalah menaikkan key yang nilainya bukan bilangan bulat. INCR hanya bekerja pada nilai bilangan bulat, sedangkan string biasa ditolak dengan pesan error yang jelas.

bash
# menyiapkan key berisi teks
redis-cli SET dasar:kota "Bandung"
# menaikkan key berisi teks memicu error
redis-cli INCR dasar:kota
text Keluaran
OK
ERR value is not an integer or out of range

Pesan ERR value is not an integer or out of range muncul karena Bandung bukan bilangan bulat. Perbaikannya mengikuti maksud semula: gunakan key penghitung baru yang diisi angka, atau hapus key lama bila isinya memang bukan penghitung.

Kesalahan kedua adalah menyimpan nilai berisi spasi tanpa tanda kutip. Shell memecah baris perintah pada setiap spasi, sehingga SET menerima lebih banyak argumen daripada yang diperbolehkan dan server menolaknya.

bash
# menyimpan nilai berisi spasi tanpa tanda kutip
redis-cli SET dasar:salam Halo, Redis
text Keluaran
ERR syntax error

Pesan ERR syntax error dijawab server karena argumen Halo, dan Redis membuat struktur SET menjadi tidak sah. Penutupan nilai dengan tanda kutip, sebagaimana contoh pada bagian pembuka, menyatukan kedua kata itu menjadi satu argumen utuh.

Ringkasan#

  • SET menyimpan dan menimpa nilai pada key, sedangkan GET membacanya dan menjawab kosong bila key tidak ada.
  • DEL menghapus key dan melaporkan jumlah key yang benar-benar terhapus.
  • INCR menaikkan penghitung bilangan bulat secara atomik dan mengembalikan nilai barunya.
  • TTL melaporkan sisa masa hidup dalam satuan detik, dengan -1 untuk key tanpa masa hidup dan -2 untuk key yang tidak ada.

Referensi#

  • SET — Redis — Dokumentasi resmi perintah SET beserta opsi masa hidup seperti EX.
  • GET — Redis — Dokumentasi resmi perintah GET untuk membaca nilai string.
  • DEL — Redis — Dokumentasi resmi perintah DEL untuk menghapus satu atau lebih key.
  • INCR — Redis — Dokumentasi resmi perintah INCR beserta perilaku atomiknya.
  • TTL — Redis — Dokumentasi resmi perintah TTL beserta arti nilai -1 dan -2.