HELLO 3★Switch to RESP3 protocol (7.0+) — maps, push, etc.
EXPIRE key 60 NX|XX|GT|LT★Conditional expire (7.0+): only if no TTL / greater / less.EXPIRETIME key·PEXPIRETIME keyAbsolute Unix expiry time (7.0+).
SET k v·GET k★Basic write / read.SET k v EX 60 NX★TTL + only-if-absent (lock pattern).SET k v NX GET7.0+ — set-if-absent and return the old value.SET k v KEEPTTLOverwrite value but preserve the existing TTL.INCR k·INCRBY k 5·INCRBYFLOAT k 1.5★Atomic counters.MSET k1 v1 k2 v2·MGET k1 k2★Multi-key set / get in one round-trip.APPEND k v·STRLEN k·GETRANGE k 0 4Append; length; substring.GETDEL k·GETEX k EX 30Get-and-delete / get-and-set-TTL (6.2+).
LPUSH k v·RPUSH k v★Prepend / append elements.LPOP k [count]·RPOP k★Pop from head / tail.LRANGE k 0 -1★Range by index; -1 is the last element.LLEN k·LINDEX k 0·LSET k 0 vLength; get / set by index.BLPOP k 5·BRPOP k 5★Blocking pop — wait up to N seconds.LMOVE src dst LEFT RIGHTAtomic transfer between lists (reliable queues).LTRIM k 0 99·LREM k 1 vKeep a window; remove occurrences.
HSET k field v [f2 v2]★Set one or many fields.HGET k field·HMGET k f1 f2★Get one / several fields.HGETALL k★All field/value pairs (RESP3 returns a map).HDEL k field·HEXISTS k fDelete field; test presence.HINCRBY k field 1★Atomic per-field counter.HKEYS k·HVALS k·HLEN k·HSCAN k 0Fields, values, count, cursor scan.HGETEX k FIELDS 1 f·HGETDEL k ...8.0 — get with TTL option / get-and-delete fields.
HEXPIRE k 60 FIELDS 1 field★Expire a single hash field in N seconds.HPEXPIRE k 500 FIELDS 1 fieldMillisecond precision.HEXPIREAT k 1893456000 FIELDS 1 fExpire a field at an absolute time.HTTL k FIELDS 1 field★Remaining TTL per field; HPTTL for ms.HEXPIRETIME k FIELDS 1 fAbsolute expiry timestamp of a field.HPERSIST k FIELDS 1 fieldRemove a field's TTL — huge for session stores.
SADD k m·SREM k m★Add / remove members.SISMEMBER k m·SMISMEMBER k m1 m2★Membership test (SMISMEMBER 6.2+).SMEMBERS k·SCARD k★All members; cardinality.SINTER k1 k2·SUNION·SDIFF★Intersection / union / difference.SINTERCARD 2 k1 k2 LIMIT 10★7.0+ — size of intersection without materializing it.SRANDMEMBER k 3·SPOP kRandom members / pop a random member.
ZADD k 100 m★Add member with a score; GT/LT/NX modifiers.ZRANGE k 0 -1 [REV] [WITHSCORES]★By rank; unified ranges (6.2+ replaces ZREVRANGE).ZRANGEBYSCORE k 10 50·ZRANGEBYLEXBy score / lexicographic range.ZRANK k m [WITHSCORE]·ZSCORE k m★Position / score of a member.ZINCRBY k 5 m·ZCARD k·ZCOUNT k 0 100Bump score; count total / within range.ZINTERCARD 2 k1 k2·ZDIFF·ZUNION7.0+ intersect-cardinality; set-style ops (6.2+).ZPOPMIN k·ZPOPMAX k·BZPOPMIN k 5Pop lowest / highest; blocking variant.
LMPOP 2 q1 q2 LEFT [COUNT 3]★Pop from the first non-empty list among many.BLMPOP 5 2 q1 q2 LEFT★Blocking multi-list pop — priority queues.ZMPOP 2 z1 z2 MINPop from the first non-empty sorted set.BZMPOP 5 2 z1 z2 MINBlocking sorted-set multi-pop.
SETBIT k 7 1·GETBIT k 7★Flip / read a single bit — presence flags.BITCOUNT k [0 0 BIT]★Count set bits; 7.0 adds BIT-index ranges.BITPOS k 1 [0 -1 BIT]First set/clear bit; BIT ranges (7.0+).BITOP AND|OR|XOR|NOT dst k1 k2★Bitwise ops; 8.2 adds DIFF/DIFF1/ANDOR/ONE.BITFIELD k INCRBY u8 0 1 GET u8 0Packed integer fields inside one string.PFADD k m·PFCOUNT k·PFMERGE d k1 k2★HyperLogLog — ~unique count in 12KB, 0.81% error.
XADD k * field v★Append an entry; * auto-generates the ID.XADD k MAXLEN ~ 1000 * ...★Append and cap length (~ = approximate trim).XLEN k·XRANGE k - +·XREVRANGE★Length; range scan of entries.XREAD BLOCK 0 STREAMS k $★Tail new entries, blocking.XGROUP CREATE k grp $★Create a consumer group.XREADGROUP GROUP grp c COUNT 10 STREAMS k >★Read as a group; > = never-delivered.XACK k grp id·XPENDING·XCLAIMAcknowledge; inspect / reclaim pending entries.XDELEX k ...·XACKDEL k ...8.0 — delete-with-condition / ack-and-delete.
GEOADD k lng lat name★Store a point (lon, lat, member).GEOSEARCH k FROMMEMBER x BYRADIUS 5 km ASC★6.2+ unified radius/box search (replaces GEORADIUS).GEOSEARCH k FROMLONLAT x y BYBOX 10 10 kmRectangular area search.GEODIST k a b km★Distance between two members.GEOPOS k name·GEOHASH k nameCoordinates / geohash string of a member.GEOSEARCHSTORE dst k ...Store search results into another key.
MULTI…EXEC★Queue commands, run atomically as a unit.DISCARDAbort a queued transaction.WATCH key★Optimistic lock — EXEC aborts if the key changed.UNWATCHForget all watched keys.
SUBSCRIBE channel·PUBLISH channel msg★Classic broadcast to all subscribers.PSUBSCRIBE "news.*"★Pattern subscription across channels.SSUBSCRIBE channel·SPUBLISH channel msg★Sharded pub/sub (7.0+) — scales in a cluster.PUBSUB SHARDCHANNELS·SHARDNUMSUBIntrospect sharded channels (7.0+).PUBSUB CHANNELS [pattern]·NUMSUBList active channels / subscriber counts.
EVAL "return redis.call('GET',KEYS[1])" 1 k★Run an inline Lua script atomically.SCRIPT LOAD "..."→EVALSHA sha 1 k★Cache by SHA, call without re-sending the body.EVAL_RO / EVALSHA_RO7.0+ read-only variants — safe on replicas.SCRIPT EXISTS sha·SCRIPT FLUSHCheck cache; clear all cached scripts.
FUNCTION LOAD "#!lua name=mylib ..."★Load a named library; persists & replicates like data.FCALL myfunc 1 key arg★Call a registered function by name.FCALL_RO myfunc 1 keyRead-only call — runs on replicas.FUNCTION LIST·FUNCTION STATSInspect libraries / running functions.FUNCTION DUMP·FUNCTION RESTORESerialize / reload all libraries.FUNCTION DELETE mylib·FLUSHRemove one library / all of them.
JSON.SET k $ '{"n":"Ada","tags":[]}'★Store a JSON document at the root path.JSON.GET k $.n★Fetch by JSONPath.JSON.SET k $.age 36Update a sub-path in place.JSON.NUMINCRBY k $.age 1Atomic numeric increment on a path.JSON.ARRAPPEND k $.tags '"db"'★Append to an array field.JSON.DEL k $.tmp·JSON.TYPE·JSON.OBJKEYSDelete a path; inspect type / keys.
FT.CREATE idx ON JSON PREFIX 1 "doc:" SCHEMA $.name AS name TEXT $.age AS age NUMERIC★Define a secondary index over hashes/JSON.FT.SEARCH idx "@name:Ada @age:[30 40]"★Full-text + tag + numeric query.FT.AGGREGATE idx "*" GROUPBY 1 @city REDUCE COUNT 0 AS n★Group / reduce / sort like a mini-SQL.FT.SEARCH idx "@vec:[VECTOR_RANGE ...]"Vector KNN inside a query (stemming, fuzzy, synonyms too).FT.HYBRID ...8.2 — fuse full-text + vector with RRF ranking.FT.INFO idx·FT.DROPINDEX idxInspect / drop an index (keeps the docs).
VADD k VALUES 4 0.1 0.2 0.3 0.4 elem★Add a vector embedding under a member name.VSIM k VALUES 4 0.1 0.2 0.3 0.4 COUNT 10★Find the nearest members (semantic search).VSIM k ELE elem COUNT 5Similar items to an existing member (recommendations).VDIM k·VCARD k·VREM k elemDimensions; count; remove a vector.
TS.CREATE temp RETENTION 86400000 LABELS sensor a★Create a series with retention & labels.TS.ADD temp * 21.5★Append a sample (* = now).TS.RANGE temp - + AGGREGATION avg 60000★Range query with downsampling buckets.TS.MRANGE - + FILTER sensor=a★Query many series by label filter.TS.CREATERULE src dst AGGREGATION avg 60000Auto-downsample into a compaction series.TS.INFO temp·TS.GET tempMetadata / latest sample.
BF.ADD k item·BF.EXISTS k item★Bloom filter — "seen before?" no false negatives.CF.ADD / CF.EXISTS / CF.DEL k itemCuckoo filter — like Bloom but supports deletion.CMS.INCRBY k item 1·CMS.QUERYCount-min sketch — approximate frequency counts.TOPK.ADD k item·TOPK.LIST k★Top-K — heavy hitters / trending items.TDIGEST.ADD k 12.5·TDIGEST.QUANTILE k 0.99t-digest — percentiles over a stream (p99 latency).
SAVE·BGSAVE★RDB snapshot — blocking / background fork.BGREWRITEAOF★Compact the append-only file.CONFIG SET appendonly yes★Enable AOF; 7.0 uses multi-part AOF (base + incr + manifest).LASTSAVEUnix time of the last successful save.CONFIG SET appendfsync everysecFsync policy: always / everysec / no.
REPLICAOF host port★Make this node a replica (NO ONE to promote).INFO replication★Role, connected replicas, offsets, lag.WAIT numreplicas timeout★Block until N replicas ack the writes.CONFIG SET repl-diskless-sync yesStream the RDB over the socket, skip disk.FAILOVER [TO host port]Coordinated, safe failover (6.2+).
CLUSTER INFO·CLUSTER NODES★Cluster health & node topology.CLUSTER SHARDS·CLUSTER SLOTS★Slot → node mapping (SHARDS 7.0+).CLUSTER KEYSLOT keyWhich of the 16384 hash slots a key lands in.CLUSTER ADDSLOTSRANGE 0 5000·DELSLOTSRANGE7.0+ — assign slot ranges in one call.CLUSTER LINKS7.0+ — inspect inter-node link state.
ACL SETUSER alice on >pw ~cache:* +@read★User + password + key pattern + command category.ACL SETUSER alice (~session:* +set +get)★Selectors (7.0+) — extra permission sets in parens.ACL GETUSER alice·ACL LIST★Inspect a user / list all rules.ACL WHOAMI·ACL CATCurrent user; list command categories.ACL DRYRUN alice GET foo★7.0+ — test if a user could run a command.AUTH [user] pass·ACL DELUSER aliceAuthenticate; remove a user.
CLIENT TRACKING ON★Server-assisted client-side caching invalidation.CLIENT NO-TOUCH ON7.2+ — read keys without bumping LRU/LFU.CLIENT NO-EVICT ON7.0+ — exempt this connection from eviction.CLIENT LIST·CLIENT INFO★Inspect connections & their state.CLIENT KILL ID n·CLIENT UNPAUSETerminate a client; resume paused traffic.CLIENT SETNAME·CLIENT GETNAMELabel a connection for observability.
CONFIG GET maxmemory·CONFIG SET maxmemory 2gb★Read / change config at runtime.CONFIG SET maxmemory-policy allkeys-lru★Eviction policy when memory is full.INFO [section]★Server stats: memory, clients, stats, keyspace.DBSIZE·MEMORY USAGE key·MEMORY DOCTORKey count; per-key bytes; memory advice.SLOWLOG GET [n|-1]Slow commands; -1 returns all (7.0+).CONFIG REWRITE·CONFIG RESETSTATPersist config to file; reset counters.
Core
| String | cache, counter, blob, bitmap base |
| List | queue, stack, timeline |
| Hash | object; per-field TTL (7.4) |
| Set / Sorted Set | tags, uniqueness / leaderboards |
Streaming & probabilistic
| Stream | event log + consumer groups |
| Bitmap / HLL | flags / approx-unique count |
| Bloom/Cuckoo/CMS | membership / frequency (8.0) |
Document & geo
| JSON | nested docs, indexable (8.0) |
| Geo | proximity on a sorted set |
| Time Series | metrics, IoT, downsampling (8.0) |
AI
| Vector Set | embeddings, semantic search (8.0 beta) |
| Query Engine | secondary index, KNN, full-text (8.0) |
| GET/SET/HGET | O(1) — constant |
| LPUSH/RPUSH/LPOP | O(1) at the ends |
| LINDEX / LINSERT | O(n) — walks the list |
| SADD/SISMEMBER | O(1) |
| ZADD / ZRANK | O(log n) |
| ZRANGE k 0 m | O(log n + m) |
| HGETALL / SMEMBERS | O(n) — whole collection |
| KEYS * | O(n) — blocks; use SCAN |
| SCAN / HSCAN | O(1) per call, cursored |
| PFCOUNT | O(1), ~12KB per HLL |
CONFIG SET notify-keyspace-events KEA★Enable events (K keyspace, E keyevent, A all).PSUBSCRIBE "__keyevent@0__:expired"★React to key expirations (cache-invalidation hook).PSUBSCRIBE "__keyspace@0__:user:*"All events on matching keys.// 8.0 adds OVERWRITTEN & TYPE_CHANGED eventsFiner visibility into what changed.
FLUSHDBwipes dbDelete every key in the current database.FLUSHALLwipes allDelete every key in every database.KEYS *blocksScans all keys — freezes the server in prod. Use SCAN.CONFIG SET appendonly nodurabilityDisables AOF — risk of data loss on crash.SHUTDOWN NOSAVEno saveStop the server without persisting.