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 valSet nilai string
GET keyAmbil nilai string
SETNX key valSet hanya jika key belum ada
SETEX key sec valSet dengan kedaluwarsa dalam detik
APPEND key valTambahkan ke nilai yang ada
STRLEN keyPanjang nilai string
List
Operasi List
LPUSH queue "first" RPUSH queue "last" LRANGE queue 0 -1 -- semua elemen LPOP queue RPOP queue
Perintah List
LPUSH / RPUSHPush ke kiri / kanan list
LPOP / RPOPPop dari kiri / kanan
LRANGE key start stopDapatkan rentang elemen
LLEN keyPanjang list
LINDEX key idxElemen pada indeks
LREM key count valHapus count kemunculan val
BLPOP key timeoutBlocking 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 memberTambahkan member dengan skor
ZRANGE key start stopRentang berdasarkan rank (rendah ke tinggi)
ZREVRANGE key start stopRentang berdasarkan rank (tinggi ke rendah)
ZINCRBY key incr memberTambahkan skor member
ZRANGEBYSCORE key min maxRentang berdasarkan nilai skor
ZCARD keyJumlah 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 valSet field hash
HGET key fieldAmbil field hash
HGETALL keyAmbil semua field dan nilai
HDEL key fieldHapus field hash
HEXISTS key fieldPeriksa keberadaan field
HINCRBY key field nTambahkan nilai field
HKEYS keySemua nama field
HLEN keyJumlah field
Key & Kedaluwarsa
Perintah Key
KEYS patternTemukan key yang cocok pola (lambat)
SCAN cursor MATCH patIterasi key secara bertahap (aman)
EXISTS keyPeriksa apakah key ada
DEL keyHapus key
TYPE keyDapatkan tipe data key
RENAME key newkeyGanti 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 channelDengarkan pesan di channel
PUBLISH channel msgKirim pesan ke channel
PSUBSCRIBE patternSubscribe ke pola
UNSUBSCRIBE channelBerhenti mendengarkan
PUBSUB CHANNELSDaftar 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
MULTIMulai blok transaksi
EXECEksekusi perintah yang diantrekan
DISCARDBuang perintah yang diantrekan
WATCH keyPantau key untuk perubahan (optimistic lock)
UNWATCHLupakan semua key yang dipantau
Persistence
Snapshot RDB
SAVE -- snapshot sinkron BGSAVE -- snapshot di background LASTSAVE -- timestamp save terakhir
AOF (Append Only File)
appendonly yesAktifkan AOF di redis.conf
appendfsync alwaysFsync setiap penulisan (paling aman, paling lambat)
appendfsync everysecFsync sekali per detik (disarankan)
appendfsync noBiarkan 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