Cheatsheet comandi Redis
Riferimento rapido paste-ready. Le voci tra <...> sono segnaposto. La
maggior parte dei comandi è valida da Redis 6.x; dove serve, è indicata la
versione minima. Per i dettagli operativi vedi i moduli del corso.
redis-cli — connessione e flag utili
Sezione intitolata “redis-cli — connessione e flag utili”redis-cli # localhost:6379redis-cli -h <host> -p <port> -n <db> # host/porta/numero DB (0-15, non in cluster)redis-cli -u redis://user:pass@host:6379/0 # connessione via URIredis-cli -a <password> # auth (meglio: export REDISCLI_AUTH=<password>)redis-cli --tls --cacert ca.crt -p 6379 # connessione TLSredis-cli -c -p 7000 # modalità cluster (segue i redirect MOVED/ASK)redis-cli -r 5 -i 1 <comando> # ripeti 5 volte, 1s di intervalloredis-cli --eval script.lua key1 , arg1 # esegue uno script Lua (la virgola separa KEYS/ARGV)Operazioni e diagnostica (one-liner ops-ready)
Sezione intitolata “Operazioni e diagnostica (one-liner ops-ready)”redis-cli PING # PONG se vivoredis-cli --scan --pattern 'user:*' # elenca chiavi senza bloccare (usa SCAN)redis-cli --bigkeys # trova le chiavi più grandi per tiporedis-cli --memkeys # trova le chiavi che occupano più memoriaredis-cli --hotkeys # chiavi più "calde" (richiede maxmemory-policy LFU)redis-cli --latency # latenza live (ms)redis-cli --latency-history -i 5 # latenza campionata ogni 5sredis-cli --stat # statistiche live (ops/sec, memoria, client)redis-cli --intrinsic-latency 5 # latenza intrinseca della macchina (5s)redis-cli --rdb dump.rdb # scarica un dump RDB dal serverredis-cli MONITOR # stream live di TUTTI i comandi (solo debug!)Chiavi (generiche)
Sezione intitolata “Chiavi (generiche)”EXISTS <key> [<key> ...] # quante esistonoTYPE <key> # tipo (string/list/set/zset/hash/stream)DEL <key> ... # cancella (sincrono)UNLINK <key> ... # cancella in background (non blocca)RENAME <key> <newkey> # rinominaRANDOMKEY # una chiave a casoKEYS <pattern> # ⚠️ O(N) BLOCCANTE — non usare in produzioneSCAN <cursor> MATCH <pat> COUNT <n> # iterazione a cursore (preferito)OBJECT ENCODING <key> # encoding interno (listpack/quicklist/...)OBJECT IDLETIME <key> # secondi dall'ultimo accessoOBJECT FREQ <key> # frequenza accessi (richiede LFU)MEMORY USAGE <key> # byte stimati occupati dalla chiaveCOPY <src> <dst> [REPLACE] # copia chiave (6.2+)DUMP <key> / RESTORE <key> <ttl> <data> # serializza / ripristinaTTL e scadenze
Sezione intitolata “TTL e scadenze”EXPIRE <key> <sec> [NX|XX|GT|LT] # scadenza relativa (opzioni 7.0+)PEXPIRE <key> <ms> # scadenza in millisecondiEXPIREAT <key> <unix-ts> # scadenza a timestamp assolutoTTL <key> / PTTL <key> # secondi / ms rimanenti (-1 nessuna, -2 assente)EXPIRETIME <key> # timestamp unix di scadenza (7.0+)PERSIST <key> # rimuove la scadenzaSET <key> <val> [EX s|PX ms|EXAT ts] [NX|XX] [GET] [KEEPTTL]GET <key>MSET <k1> <v1> <k2> <v2> / MGET <k1> <k2>SETEX <key> <sec> <val> / PSETEX <key> <ms> <val>GETSET <key> <val> # (deprecato → SET ... GET)GETDEL <key> # leggi e cancella (6.2+)GETEX <key> EX <sec> # leggi e (ri)imposta TTL (6.2+)APPEND <key> <val> / STRLEN <key>INCR <key> / DECR <key> / INCRBY <key> <n> / INCRBYFLOAT <key> <f>SETRANGE <key> <offset> <val> / GETRANGE <key> <start> <end>HSET <key> <field> <val> [<field> <val> ...]HGET <key> <field> / HMGET <key> <f1> <f2> / HGETALL <key>HDEL <key> <field> ... / HEXISTS <key> <field>HINCRBY <key> <field> <n> / HINCRBYFLOAT <key> <field> <f>HKEYS <key> / HVALS <key> / HLEN <key>HRANDFIELD <key> [<count>] [WITHVALUES] # 6.2+HSCAN <key> <cursor> MATCH <pat> COUNT <n> [NOVALUES]# Scadenza per singolo campo (7.4+):HEXPIRE <key> <sec> FIELDS <n> <field> ... / HTTL <key> FIELDS <n> <field> ...LPUSH/RPUSH <key> <val> ... / LPOP/RPOP <key> [<count>]LRANGE <key> <start> <stop> / LLEN <key> / LINDEX <key> <i>LSET <key> <i> <val> / LINSERT <key> BEFORE|AFTER <pivot> <val>LREM <key> <count> <val> / LTRIM <key> <start> <stop>LMOVE <src> <dst> LEFT|RIGHT LEFT|RIGHT # sposta atomico (6.2+)LPOS <key> <val> # posizione di un elemento (6.0.6+)LMPOP <numkeys> <k> ... LEFT|RIGHT [COUNT n] # pop multi-key (7.0+)BLPOP/BRPOP <key> ... <timeout> # pop bloccante (code)BLMOVE <src> <dst> LEFT|RIGHT LEFT|RIGHT <timeout>SADD <key> <m> ... / SREM <key> <m> ...SMEMBERS <key> / SCARD <key> / SISMEMBER <key> <m>SMISMEMBER <key> <m1> <m2> # 6.2+SINTER/SUNION/SDIFF <k1> <k2> ...SINTERCARD <numkeys> <k> ... [LIMIT n] # 7.0+SINTERSTORE/SUNIONSTORE/SDIFFSTORE <dst> <k> ...SRANDMEMBER <key> [<count>] / SPOP <key> [<count>]SSCAN <key> <cursor> MATCH <pat> COUNT <n>Sorted Set (ZSet)
Sezione intitolata “Sorted Set (ZSet)”ZADD <key> [NX|XX|GT|LT] [CH] <score> <m> [<score> <m> ...]ZSCORE <key> <m> / ZMSCORE <key> <m1> <m2> / ZCARD <key>ZINCRBY <key> <n> <m>ZRANGE <key> <start> <stop> [REV] [WITHSCORES] # forma unificata 6.2+ZRANGE <key> <min> <max> BYSCORE [LIMIT off cnt] # per punteggioZRANGE <key> <min> <max> BYLEX # lessicograficoZRANK/ZREVRANK <key> <m> [WITHSCORE]ZCOUNT <key> <min> <max> / ZREMRANGEBYRANK|BYSCORE|BYLEXZPOPMIN/ZPOPMAX <key> [<count>] / BZPOPMIN/BZPOPMAX <key> ... <timeout>ZMPOP <numkeys> <k> ... MIN|MAX [COUNT n] # 7.0+ZUNIONSTORE/ZINTERSTORE/ZDIFFSTORE <dst> <numkeys> <k> ...ZSCAN <key> <cursor> MATCH <pat> COUNT <n>Bitmap / HyperLogLog / Geo
Sezione intitolata “Bitmap / HyperLogLog / Geo”# BitmapSETBIT <key> <offset> <0|1> / GETBIT <key> <offset>BITCOUNT <key> [start end [BYTE|BIT]] / BITPOS <key> <bit> [...]BITOP AND|OR|XOR|NOT <dst> <k> ... / BITFIELD <key> ...# HyperLogLog (conteggio unici approssimato)PFADD <key> <el> ... / PFCOUNT <key> ... / PFMERGE <dst> <src> ...# GeoGEOADD <key> <lon> <lat> <member> ...GEOSEARCH <key> FROMMEMBER <m>|FROMLONLAT <lon> <lat> BYRADIUS <r> m|km ASCGEODIST <key> <m1> <m2> [m|km] / GEOPOS <key> <m>Streams
Sezione intitolata “Streams”XADD <key> [MAXLEN ~ <n>] '*' <field> <val> ... # '*' = id automaticoXLEN <key> / XRANGE <key> - + / XREVRANGE <key> + -XREAD [COUNT n] [BLOCK ms] STREAMS <key> <id|$>XDEL <key> <id> ... / XTRIM <key> MAXLEN ~ <n># Consumer groupXGROUP CREATE <key> <group> <id|$> [MKSTREAM]XREADGROUP GROUP <group> <consumer> COUNT <n> STREAMS <key> '>'XACK <key> <group> <id> ...XPENDING <key> <group> [<start> <end> <count>]XCLAIM <key> <group> <consumer> <min-idle-ms> <id> ...XAUTOCLAIM <key> <group> <consumer> <min-idle-ms> <start> # 6.2+XINFO STREAM <key> / XINFO GROUPS <key>Pub/Sub
Sezione intitolata “Pub/Sub”SUBSCRIBE <canale> ... / UNSUBSCRIBE [<canale>]PSUBSCRIBE <pattern> ... / PUBLISH <canale> <msg>PUBSUB CHANNELS [pattern] / PUBSUB NUMSUB <canale># Sharded Pub/Sub (consigliato in cluster, 7.0+)SSUBSCRIBE <canale> / SPUBLISH <canale> <msg>Transazioni e scripting
Sezione intitolata “Transazioni e scripting”MULTI ... <comandi> ... EXEC # esegue la coda atomicamenteDISCARD # annulla la transazioneWATCH <key> ... / UNWATCH # optimistic lock (CAS)EVAL "<script>" <numkeys> <key> ... <arg> ... # LuaEVALSHA <sha1> <numkeys> ... / SCRIPT LOAD "<script>" / SCRIPT FLUSHFUNCTION LOAD "<code>" / FCALL <func> <numkeys> ... # Functions (7.0+)Persistenza
Sezione intitolata “Persistenza”SAVE # snapshot sincrono (BLOCCA — solo emergenze)BGSAVE # snapshot in background (fork)BGREWRITEAOF # riscrive/compatta l'AOFLASTSAVE # timestamp dell'ultimo salvataggio RDBCONFIG SET appendonly yes|no # abilita/disabilita AOF a caldoCONFIG SET save "900 1 300 10" # punti di salvataggio RDB# Da shell:redis-check-rdb dump.rdb / redis-check-aof --fix appendonlydir/<file>Replica
Sezione intitolata “Replica”REPLICAOF <host> <port> # rendi questa istanza replicaREPLICAOF NO ONE # promuovi a master (stop replica)WAIT <numreplicas> <timeout-ms> # attendi ack da N replicaINFO replication # role, connected_slaves, master_link_status, offsetCluster
Sezione intitolata “Cluster”# ClientCLUSTER INFO # cluster_state, slots_assigned, known_nodesCLUSTER NODES # elenco nodi (id, ip:port, flags, master/slave, slot)CLUSTER SHARDS / CLUSTER SLOTS # mappa slot→nodoCLUSTER KEYSLOT <key> / CLUSTER MYIDCLUSTER COUNTKEYSINSLOT <slot> / CLUSTER GETKEYSINSLOT <slot> <n>CLUSTER FAILOVER [FORCE|TAKEOVER] # da eseguire su una replica# Amministrazione (redis-cli --cluster)redis-cli --cluster create <ip:port> ... --cluster-replicas 1redis-cli --cluster check <ip:port>redis-cli --cluster info <ip:port>redis-cli --cluster add-node <new> <existing> [--cluster-slave]redis-cli --cluster del-node <ip:port> <node-id>redis-cli --cluster reshard <ip:port>redis-cli --cluster rebalance <ip:port> [--cluster-use-empty-masters]redis-cli --cluster fix <ip:port>Sentinel
Sezione intitolata “Sentinel”redis-cli -p 26379 SENTINEL mastersredis-cli -p 26379 SENTINEL master <name>redis-cli -p 26379 SENTINEL replicas <name>redis-cli -p 26379 SENTINEL sentinels <name>redis-cli -p 26379 SENTINEL get-master-addr-by-name <name>redis-cli -p 26379 SENTINEL ckquorum <name> # verifica il quorumredis-cli -p 26379 SENTINEL failover <name> # failover manualeredis-cli -p 26379 SENTINEL reset <pattern> # reset statoACL e sicurezza
Sezione intitolata “ACL e sicurezza”ACL WHOAMI # utente correnteACL LIST / ACL USERS / ACL GETUSER <user>ACL SETUSER <user> on >'<pass>' ~<key-pat> +@<cat> -@dangerousACL DELUSER <user> / ACL CAT / ACL GENPASSACL LOG [<count>] / ACL LOG RESET # accessi negatiAUTH [<user>] <password>CONFIG SET requirepass '<password>' # password istanza (utente default)Client e connessione
Sezione intitolata “Client e connessione”HELLO [<protover>] # handshake / info protocollo (RESP2/3)CLIENT ID / CLIENT INFO / CLIENT LISTCLIENT SETNAME <nome> / CLIENT GETNAMECLIENT KILL ID <id> | ADDR <ip:port>CLIENT NO-EVICT on|off / CLIENT NO-TOUCH on|offCLIENT PAUSE <ms> [WRITE|ALL] / CLIENT UNPAUSESELECT <db> / SWAPDB <i> <j> / ECHO <msg>Server, memoria e diagnostica
Sezione intitolata “Server, memoria e diagnostica”INFO [section] # server|clients|memory|persistence|stats|replication|cpu|cluster|keyspaceDBSIZE # numero di chiavi nel DB correnteCONFIG GET <param> / CONFIG SET <param> <val> / CONFIG REWRITECONFIG RESETSTAT # azzera le statisticheMEMORY USAGE <key> / MEMORY DOCTOR / MEMORY STATS / MEMORY PURGESLOWLOG GET [n] / SLOWLOG RESET / SLOWLOG LENLATENCY DOCTOR / LATENCY HISTORY <event> / LATENCY RESETLATENCY LATEST / CONFIG SET latency-monitor-threshold <ms>COMMAND COUNT / COMMAND DOCS <cmd> / COMMAND INFO <cmd>TIME / LOLWUT # ora del server / easter egg di versioneDEBUG SLEEP <sec> / DEBUG OBJECT <key> # solo debugNotifiche keyspace (eventi su chiavi)
Sezione intitolata “Notifiche keyspace (eventi su chiavi)”CONFIG SET notify-keyspace-events KEA # abilita tutti gli eventiPSUBSCRIBE '__keyevent@0__:expired' # ascolta le chiavi scadute sul DB 0PSUBSCRIBE '__keyspace@0__:<key>' # eventi su una chiave specificaAmministrazione e comandi “pericolosi”
Sezione intitolata “Amministrazione e comandi “pericolosi””FLUSHDB [ASYNC] # ⚠️ svuota il DB correnteFLUSHALL [ASYNC] # ⚠️ svuota TUTTI i DBSHUTDOWN [NOSAVE|SAVE] # arresta il serverRESET # resetta lo stato della connessioneFAILOVER [TO <host> <port>] [ABORT] # failover coordinato (6.2+)In produzione, rimuovi o limita i comandi pericolosi via ACL (
-@dangerous -flushall -flushdb -config -debug) e riservali a un utente amministrativo (modulo 03).
redis-benchmark (test di carico)
Sezione intitolata “redis-benchmark (test di carico)”redis-benchmark -h <host> -p 6379 -t set,get -n 100000 -qredis-benchmark -n 200000 -r 100000 -d 100 -P 16 -c 50 # pipeline 16, 50 client, valori 100Bredis-benchmark -t set -n 1000000 --threads 4 # multi-threadPer il contesto e le motivazioni operative dietro a questi comandi, vedi i moduli del corso: chiavi/tipi → 01, sicurezza/ACL → 03, persistenza → 04, replica/Sentinel → 05, cluster → 06, diagnostica → 07.