Connessione
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
Connessione con Driver (Python)
import redis r = redis.Redis(host='localhost', port=6379, db=0) r.set('key', 'value') print(r.get('key'))
Informazioni Server
PING -- restituisce PONG INFO server -- dettagli server INFO memory -- utilizzo memoria DBSIZE -- numero di chiavi nel db corrente
Stringhe
Operazioni di Base
SET name "Alice" GET name SET counter 100 MSET a 1 b 2 c 3 MGET a b c
Operazioni Numeriche
INCR counter -- 101 INCRBY counter 10 -- 111 DECR counter -- 110 DECRBY counter 5 -- 105 INCRBYFLOAT price 2.5
Comandi sulle Stringhe
SET key valImposta valore stringa
GET keyOttieni valore stringa
SETNX key valImposta solo se la chiave non esiste
SETEX key sec valImposta con scadenza in secondi
APPEND key valAggiunge al valore esistente
STRLEN keyLunghezza del valore stringa
Liste
Operazioni sulle Liste
LPUSH queue "first" RPUSH queue "last" LRANGE queue 0 -1 -- tutti gli elementi LPOP queue RPOP queue
Comandi sulle Liste
LPUSH / RPUSHInserisce a sinistra / destra della lista
LPOP / RPOPEstrae da sinistra / destra
LRANGE key start stopOttieni intervallo di elementi
LLEN keyLunghezza della lista
LINDEX key idxElemento all'indice
LREM key count valRimuovi count occorrenze di val
BLPOP key timeoutPop bloccante (per code)
Set e Set Ordinati
Operazioni sui Set
SADD tags "python" "redis" "docker" SMEMBERS tags SISMEMBER tags "python" -- 1 (vero) SREM tags "docker" SCARD tags -- conteggio
Operazioni sui Set
SUNION set1 set2 -- unione SINTER set1 set2 -- intersezione SDIFF set1 set2 -- differenza
Operazioni sui Set Ordinati
ZADD leaderboard 100 "Alice" 85 "Bob" ZRANGE leaderboard 0 -1 WITHSCORES ZREVRANGE leaderboard 0 2 ZSCORE leaderboard "Alice" ZRANK leaderboard "Alice" -- rank in base 0
Comandi sui Set Ordinati
ZADD key score memberAggiunge membro con punteggio
ZRANGE key start stopIntervallo per rank (dal basso)
ZREVRANGE key start stopIntervallo per rank (dall'alto)
ZINCRBY key incr memberIncrementa punteggio membro
ZRANGEBYSCORE key min maxIntervallo per valore del punteggio
ZCARD keyNumero di membri
Hash
Operazioni sugli 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
Comandi sugli Hash
HSET key field valImposta campo hash
HGET key fieldOttieni campo hash
HGETALL keyOttieni tutti i campi e valori
HDEL key fieldElimina campo hash
HEXISTS key fieldVerifica esistenza campo
HINCRBY key field nIncrementa valore campo
HKEYS keyTutti i nomi dei campi
HLEN keyNumero di campi
Chiavi e Scadenza
Comandi sulle Chiavi
KEYS patternTrova chiavi corrispondenti al pattern (lento)
SCAN cursor MATCH patItera le chiavi in modo incrementale (sicuro)
EXISTS keyVerifica se la chiave esiste
DEL keyElimina chiave
TYPE keyTipo di dato della chiave
RENAME key newkeyRinomina una chiave
Comandi di Scadenza
EXPIRE key 3600 -- scade in 1 ora PEXPIRE key 5000 -- scade in 5000 ms TTL key -- secondi alla scadenza PTTL key -- ms alla scadenza PERSIST key -- rimuovi scadenza
Pattern di Chiave
SET session:abc123 "data" EX 1800 -- EX = secondi, PX = millisecondi -- NX = solo se non esiste -- XX = solo se esiste SET lock:order42 "owner" NX EX 10
Pub/Sub
Pub/Sub di Base
-- Subscriber (terminale 1) SUBSCRIBE news alerts -- Publisher (terminale 2) PUBLISH news "Breaking: Redis 8 released"
Sottoscrizione per Pattern
PSUBSCRIBE news.* -- corrisponde a news.tech, news.sports, ecc.
Comandi Pub/Sub
SUBSCRIBE channelAscolta messaggi sul canale
PUBLISH channel msgInvia messaggio al canale
PSUBSCRIBE patternSottoscrive a un pattern
UNSUBSCRIBE channelSmetti di ascoltare
PUBSUB CHANNELSElenca i canali attivi
Transazioni
MULTI / EXEC
MULTI SET balance:1 900 SET balance:2 1100 EXEC -- esegue atomicamente
Lock Ottimistico
WATCH balance:1 val = GET balance:1 -- legge valore corrente MULTI SET balance:1 (val - 100) EXEC -- EXEC restituisce nil se balance:1 è cambiato
Comandi di Transazione
MULTIInizia il blocco transazione
EXECEsegue i comandi in coda
DISCARDScarta i comandi in coda
WATCH keyMonitora la chiave per cambiamenti (lock ottimistico)
UNWATCHDimentica tutte le chiavi monitorate
Persistenza
Snapshot RDB
SAVE -- snapshot sincrono BGSAVE -- snapshot in background LASTSAVE -- timestamp dell'ultimo salvataggio
AOF (Append Only File)
appendonly yesAbilita AOF in redis.conf
appendfsync alwaysFsync ad ogni scrittura (più sicuro, più lento)
appendfsync everysecFsync ogni secondo (raccomandato)
appendfsync noLascia decidere all'OS (più veloce, più rischioso)
Comandi di Persistenza
CONFIG GET save CONFIG SET save "900 1 300 10" -- snapshot se 1 modifica in 900s o 10 in 300s BGREWRITEAOF -- riscrive AOF in background
Pattern Comuni
Lock Distribuito
SET lock:resource "owner-id" NX EX 30 -- NX = acquisisci solo se non in possesso -- EX 30 = rilascio automatico dopo 30s DEL lock:resource -- rilascio esplicito
Rate Limiter
key = "rate:user:42" INCR key EXPIRE key 60 -- finestra di 60 secondi -- rifiuta se GET key > max_requests
Pattern di Cache
val = GET "cache:user:1" if val is nil: val = fetch_from_db(1) SET "cache:user:1" val EX 300
Storage di Sessione
HSET sess:abc uid 42 role "admin" EXPIRE sess:abc 1800 -- TTL 30 min HGETALL sess:abc