REFERENSI CEPAT REDIS
String, list, set, hash, pub/sub, persistence
Menghubungkan
CLI
redis-cli
redis-cli -h 127.0.0.1 -p 6379
redis-cli -a password -n 2
redis-cli --tls -u rediss://user:pass@host:6380
Koneksi Driver (Python)
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
r.set('key', 'value')
print(r.get('key'))
Info Server
PING -- mengembalikan PONG
INFO server -- detail server
INFO memory -- penggunaan memori
DBSIZE -- jumlah key di db saat ini
String
Operasi Dasar
SET name "Alice"
GET name
SET counter 100
MSET a 1 b 2 c 3
MGET a b c
Operasi Numerik
INCR counter -- 101
INCRBY counter 10 -- 111
DECR counter -- 110
DECRBY counter 5 -- 105
INCRBYFLOAT price 2.5
Perintah String
| SET key val | Set nilai string |
| GET key | Ambil nilai string |
| SETNX key val | Set hanya jika key belum ada |
| SETEX key sec val | Set dengan kedaluwarsa dalam detik |
| APPEND key val | Tambahkan ke nilai yang ada |
| STRLEN key | Panjang nilai string |
List
Operasi List
LPUSH queue "first"
RPUSH queue "last"
LRANGE queue 0 -1 -- semua elemen
LPOP queue
RPOP queue
Perintah List
| LPUSH / RPUSH | Push ke kiri / kanan list |
| LPOP / RPOP | Pop dari kiri / kanan |
| LRANGE key start stop | Dapatkan rentang elemen |
| LLEN key | Panjang list |
| LINDEX key idx | Elemen pada indeks |
| LREM key count val | Hapus count kemunculan val |
| BLPOP key timeout | Blocking pop (untuk queue) |
Set & Sorted Set
Operasi Set
SADD tags "python" "redis" "docker"
SMEMBERS tags
SISMEMBER tags "python" -- 1 (true)
SREM tags "docker"
SCARD tags -- jumlah
Operasi Matematika Set
SUNION set1 set2 -- union
SINTER set1 set2 -- irisan
SDIFF set1 set2 -- selisih
Operasi Sorted Set
ZADD leaderboard 100 "Alice" 85 "Bob"
ZRANGE leaderboard 0 -1 WITHSCORES
ZREVRANGE leaderboard 0 2
ZSCORE leaderboard "Alice"
ZRANK leaderboard "Alice" -- rank berbasis 0
Perintah Sorted Set
| ZADD key score member | Tambahkan member dengan skor |
| ZRANGE key start stop | Rentang berdasarkan rank (rendah ke tinggi) |
| ZREVRANGE key start stop | Rentang berdasarkan rank (tinggi ke rendah) |
| ZINCRBY key incr member | Tambahkan skor member |
| ZRANGEBYSCORE key min max | Rentang berdasarkan nilai skor |
| ZCARD key | Jumlah member |
Hash
Operasi Hash
HSET user:1 name "Alice" age 30
HGET user:1 name
HGETALL user:1
HMSET user:2 name "Bob" age 25
HMGET user:1 name age
Perintah Hash
| HSET key field val | Set field hash |
| HGET key field | Ambil field hash |
| HGETALL key | Ambil semua field dan nilai |
| HDEL key field | Hapus field hash |
| HEXISTS key field | Periksa keberadaan field |
| HINCRBY key field n | Tambahkan nilai field |
| HKEYS key | Semua nama field |
| HLEN key | Jumlah field |
Key & Kedaluwarsa
Perintah Key
| KEYS pattern | Temukan key yang cocok pola (lambat) |
| SCAN cursor MATCH pat | Iterasi key secara bertahap (aman) |
| EXISTS key | Periksa apakah key ada |
| DEL key | Hapus key |
| TYPE key | Dapatkan tipe data key |
| RENAME key newkey | Ganti nama key |
Perintah Kedaluwarsa
EXPIRE key 3600 -- kedaluwarsa dalam 1 jam
PEXPIRE key 5000 -- kedaluwarsa dalam 5000 ms
TTL key -- detik hingga kedaluwarsa
PTTL key -- ms hingga kedaluwarsa
PERSIST key -- hapus kedaluwarsa
Pola Key
SET session:abc123 "data" EX 1800
-- EX = detik, PX = milidetik
-- NX = hanya jika belum ada
-- XX = hanya jika sudah ada
SET lock:order42 "owner" NX EX 10
Pub/Sub
Pub/Sub Dasar
-- Subscriber (terminal 1)
SUBSCRIBE news alerts
-- Publisher (terminal 2)
PUBLISH news "Breaking: Redis 8 released"
Subscribe Pola
PSUBSCRIBE news.*
-- cocok dengan news.tech, news.sports, dll.
Perintah Pub/Sub
| SUBSCRIBE channel | Dengarkan pesan di channel |
| PUBLISH channel msg | Kirim pesan ke channel |
| PSUBSCRIBE pattern | Subscribe ke pola |
| UNSUBSCRIBE channel | Berhenti mendengarkan |
| PUBSUB CHANNELS | Daftar channel aktif |
Transaksi
MULTI / EXEC
MULTI
SET balance:1 900
SET balance:2 1100
EXEC -- dieksekusi secara atomik
Optimistic Locking
WATCH balance:1
val = GET balance:1 -- baca nilai saat ini
MULTI
SET balance:1 (val - 100)
EXEC
-- EXEC mengembalikan nil jika balance:1 berubah
Perintah Transaksi
| MULTI | Mulai blok transaksi |
| EXEC | Eksekusi perintah yang diantrekan |
| DISCARD | Buang perintah yang diantrekan |
| WATCH key | Pantau key untuk perubahan (optimistic lock) |
| UNWATCH | Lupakan semua key yang dipantau |
Persistence
Snapshot RDB
SAVE -- snapshot sinkron
BGSAVE -- snapshot di background
LASTSAVE -- timestamp save terakhir
AOF (Append Only File)
| appendonly yes | Aktifkan AOF di redis.conf |
| appendfsync always | Fsync setiap penulisan (paling aman, paling lambat) |
| appendfsync everysec | Fsync sekali per detik (disarankan) |
| appendfsync no | Biarkan OS memutuskan (tercepat, paling berisiko) |
Perintah Persistence
CONFIG GET save
CONFIG SET save "900 1 300 10"
-- snapshot jika 1 perubahan dalam 900d atau 10 dalam 300d
BGREWRITEAOF -- tulis ulang AOF di background
Pola Umum
Distributed Lock
SET lock:resource "owner-id" NX EX 30
-- NX = ambil hanya jika belum dikunci
-- EX 30 = auto-lepas setelah 30d
DEL lock:resource -- lepas secara eksplisit
Rate Limiter
key = "rate:user:42"
INCR key
EXPIRE key 60 -- jendela 60 detik
-- tolak jika GET key > max_requests
Pola Caching
val = GET "cache:user:1"
if val is nil:
val = fetch_from_db(1)
SET "cache:user:1" val EX 300
Penyimpanan Sesi
HSET sess:abc uid 42 role "admin"
EXPIRE sess:abc 1800 -- TTL 30 menit
HGETALL sess:abc