全部速查表

Redis CLI 命令速查

redis-cli 快速參考:連線與資訊、key/string、雜湊、列表、集合、有序集合、串流、pub/sub、伺服器管理、持久化與複製、診斷——附常用參數與實作範例。

42 條命令

連線與資訊

redis-cli -h <host> -p <port> -a <pwd>

連線到 Redis 伺服器並開啟互動式 REPL。

-h 主機;-p 6379;-a 密碼;--user 使用者;--pass 密碼;--tls;--insecure;-n dbnum

redis-cli -h redis.internal -p 6379 --user monitoring --pass ***
redis-cli AUTH <password>

在已開啟的 REPL 中進行認證。

--user <user> && AUTH password;ACL 風格

redis-cli AUTH my_secret_password
redis-cli PING

發送 PING;應回覆 PONG——基本連線/健康探測。

任何連線參數,如 -h / -p / --pass;-r 重複;-i 間隔

redis-cli -h redis -p 6379 -i 5 PING
redis-cli INFO [section]

顯示伺服器統計資訊(server / clients / memory / replication / keyspace / stats / …)。

INFO [server|clients|memory|stats|replication|keyspace|cluster|commandstats];--stat 簡易即時計數

redis-cli -h redis INFO memory | head && redis-cli --stat -i 5 -h redis
redis-cli CLIENT LIST

列出當前的用戶端連線(id、addr、fd、name 等)。

CLIENT LIST;CLIENT GETNAME;CLIENT SETNAME

redis-cli CLIENT LIST | awk '{print $1, $2}' | head
redis-cli CLIENT KILL <id|addr>

中斷一個用戶端(依 id、addr host:port、TYPE/ADDR/USER/LADDR 篩選)。

KILL ADDR ip:port;KILL TYPE normal|master|replica|pubsub;KILL USER username

redis-cli CLIENT KILL ADDR 10.0.1.42:54321 && redis-cli CLIENT LIST | wc -l

Key 與 String

GET / SET / SETEX / SETNX

讀取/寫入字串值;SETEX 附帶 TTL,SETNX 只在 key 不存在時寫入。

SET key val EX N(TTL 秒) | PX N(毫秒) | NX/XX;GETEX(Redis 6.2)

redis-cli SET session:42 '{"user":42}' EX 3600 NX && redis-cli GET session:42
MSET / MGET / MSETNX

多 key 字串操作;MSETNX 在任一 key 已存在時會整批拒絕。

redis-cli MSET cache:hit:1 ok cache:hit:2 ok && redis-cli MGET cache:hit:1 cache:hit:2 cache:miss:1
INCR / INCRBY / INCRBYFLOAT

原子計數操作——適合用於限流器與計數器。

redis-cli INCR ratelimit:user:42 redis-cli INCRBY hitcounter:2026-07-23 5 redis-cli INCRBYFLOAT metric:load 0.05
APPEND / STRLEN / DEL / EXISTS

常見的字串 key 管理:附加內容、長度、單/多筆刪除。

DEL key [key ...];EXISTS k1 k2(存在的數量);TYPE key

redis-cli APPEND log:42 'request\n' && redis-cli STRLEN log:42

Key 與 TTL

EXPIRE / PEXPIRE / TTL / PTTL / PERSIST / EXPIREAT

設定/查詢 TTL(秒、毫秒、絕對 Unix 時間);PERSIST 可清除。

EXPIRE key seconds;PEXPIRE key ms;EXPIREAT key unix_seconds;NX/XX/GT/LT

redis-cli EXPIRE session:42 300 && redis-cli TTL session:42
KEYS pattern / SCAN

KEYS 是 O(N),在大資料庫上有風險——建議改用帶游標的 SCAN。

SCAN cursor MATCH pattern COUNT N TYPE type;--no-warnings

redis-cli --scan --pattern 'cache:hit:*' | head -20
OBJECT ENCODING|HELP|FREQ|IDLETIME|REFCOUNT <key>

檢視內部編碼、記憶體與最後存取時間(除錯與 RDS 調優用)。

redis-cli OBJECT ENCODING big:set && redis-cli OBJECT IDLETIME big:set

雜湊

HSET / HGET / HMSET / HMGET / HGETALL

將小型物件存為雜湊——適合個人檔案、設定、工作階段。

HSET key f1 v1 f2 v2;HMGET key f1 f2;HSETNX f v 僅在欄位不存在時設定

redis-cli HMSET user:42 name Alice email [email protected] && redis-cli HGETALL user:42
HKEYS / HVALS / HLEN / HEXISTS / HDEL

瀏覽與裁剪雜湊:列出鍵/值、長度、存在性、刪除。

redis-cli HKEYS user:42 && redis-cli HLEN user:42 && redis-cli HEXISTS user:42 admin
HINCRBY / HINCRBYFLOAT

對雜湊欄位的原子計數——適合巢狀計數指標。

redis-cli HINCRBY orders:2026-07-23 paid_count 1 && redis-cli HINCRBYFLOAT orders:2026-07-23 gmv 19.95

列表

LPUSH / RPUSH / LPOP / RPOP

把列表當作佇列(LPUSH/LPOP = FIFO)或堆疊(LPUSH/RPOP = 帶退避的佇列)。

redis-cli RPUSH jobs:queue job1 job2 job3 && redis-cli LPOP jobs:queue
LRANGE / LLEN / LINDEX / LSET / LREM

讀取/管理列表的範圍;LSET 需指定索引;LREM count>0 由頭端刪,<0 由尾端刪。

LRANGE key 0 -1 全部;LINDEX 0 頭;LREM 0 value 全部;LTRIM start stop 保留範圍

redis-cli LRANGE jobs:queue 0 -1 && redis-cli LTRIM logs:2026-07-23 -1000 -1
BLPOP / BRPOP / BRPOPLPUSH

阻塞版本——若為空就等待 N 秒才彈出;適合安全的佇列消費者。

BLPOP key timeout(秒,0 = 永久);Redis 6.2+ 可用 COUNT

redis-cli BLPOP jobs:queue 0
RPOPLPUSH src dst / LMOVE src dst LEFT|RIGHT (6.2+)

從一端原子地彈出並推到另一端——安全處理佇列。

redis-cli LMOVE jobs:queue jobs:processing RIGHT LEFT

集合

SADD / SMEMBERS / SCARD / SISMEMBER

集合操作:成員關係、大小、批次檢查(回傳 0/1)。

SADD k m1 m2 ...;SCARD k;SISMEMBER k m

redis-cli SADD tags:42 redis postgres mongo && redis-cli SCARD tags:42
SREM / SPOP / SRANDMEMBER

移除、隨機彈出(會刪除)或隨機挑選(不刪除)——抽樣/抽獎很實用。

redis-cli SRANDMEMBER lottery:tickets 3 && redis-cli SPOP lottery:tickets 1
SINTER / SUNION / SDIFF / SDIFFSTORE

集合代數——計算交集、聯集、差集;*_STORE 會將結果寫入 key。

redis-cli SINTER tags:a tags:b tags:c && redis-cli SDIFFSTORE missing:set tags:all tags:42

有序集合 (Zset)

ZADD / ZSCORE / ZRANGE / ZCARD

儲存帶分數的成員;ZRANGE 可依分數(WITHSCORES)或字典序排序。

ZADD k score m [score m ...];ZRANGEBYSCORE -inf +inf;ZREVRANGE

redis-cli ZADD lb:game alice 1500 bob 1300 carol 1750 && redis-cli ZRANGE lb:game 0 -1 REV WITHSCORES
ZRANGEBYSCORE / ZRANK / ZINCRBY / ZREM

Zset 的範圍/排名/計數——Top-N、動態下限、排行榜。

ZRANGEBYSCORE min max LIMIT offset count;ZREVRANK;ZREM k m [m...]

redis-cli ZADD ratelimit:api 1750731000.123 10.0.1.42 1750731050.456 10.0.1.7 && redis-cli ZREMRANGEBYSCORE ratelimit:api 0 $(date +%s.%N --date='-5 minutes')

Pub/Sub 與串流

SUBSCRIBE / PSUBSCRIBE / PUBLISH / UNSUBSCRIBE

線上即時 pub/sub——輕量廣播,無持久化。

PSUBSCRIBE news:*;PUBLISH channel msg;PUB/SUB NUMSUB 檢視

redis-cli PSUBSCRIBE 'app.*' & PID=$!; redis-cli PUBLISH app.notice 'red-button pressed'; sleep 0.1; kill $PID
XADD / XLEN / XRANGE / XREAD

串流 = 僅追加的日誌,可搭配消費者群組(Redis 5+)。

XADD k * f v;XADD k MAXLEN ~ 1000 * f v(容量上限);XREAD / XREADGROUP;消費者名稱;XAUTOCLAIM

redis-cli XADD events * user 42 action click && redis-cli XLEN events && redis-cli XRANGE events - +
XREAD BLOCK 0 STREAMS k $

永久阻塞等待新項目——搭配消費者群組可作為工作者佇列。

redis-cli XGROUP CREATE events grp1 0 MKSTREAM && redis-cli XREADGROUP GROUP grp1 c1 BLOCK 0 COUNT 10 STREAMS events '>'

伺服器管理

FLUSHDB / FLUSHALL [ASYNC]

清空當前(FLUSHDB)或所有(FLUSHALL)資料庫。⚠️ 具有破壞性。

FLUSHALL ASYNC;FLUSHDB ASYNC;--no-auth-warning

redis-cli -h dev FLUSHDB
DBSIZE / CONFIG GET|SET <key>

檢視 key 數量與執行時設定(記憶體上限、appendonly 等)。

CONFIG GET dir/save/maxmemory;CONFIG SET maxmemory 1gb;CONFIG REWRITE 持久化

redis-cli CONFIG SET maxmemory-policy allkeys-lru && redis-cli CONFIG REWRITE
SLOWLOG GET|len|reset

檢視超出 slowlog-log-slower-than(微秒)的指令。

SLOWLOG GET 10;SLOWLOG LEN;SLOWLOG RESET

redis-cli SLOWLOG GET 10 | jq '.[].command'
MONITOR

串流輸出每個用戶端執行的所有指令——僅供除錯,開銷極大。

無額外參數;--bigkeys(建議搭配 redis-cli --bigkeys);--memkeys;--latency;--intrinsic-latency

timeout 2 redis-cli MONITOR | grep -E 'EXPIRE|GET.*:42'
DEBUG ... / MEMORY USAGE <key>

檢視內部狀態:OBJECT 編碼、單 key 記憶體(僅限除錯旗標)。

MEMORY USAGE key [SAMPLES N];DEBUG OBJECT-DURATION 或 DEBUG RELOAD-ALL-COMMANDS(少用)

redis-cli MEMORY USAGE user:42 SAMPLES 5 && redis-cli MEMORY DOCTOR
ACL WHOAMI / ACL CAT / ACL GETUSER

ACL 除錯(Redis 6+)。

redis-cli ACL WHOAMI && redis-cli ACL GETUSER deployer | head -20

持久化

BGSAVE / SAVE / LASTSAVE

觸發 RDB 快照(BGSAVE = fork 後非同步);LASTSAVE 回傳上次快照時間戳。

redis-cli BGSAVE && redis-cli LASTSAVE
BGREWRITEAOF

在背景重寫 AOF 檔(壓實)。

重寫時仍會短暫阻塞;可由 auto-aof-rewrite-percentage 自動觸發

redis-cli BGREWRITEAOF && redis-cli INFO persistence | head
REPLICAOF host port (was SLAVEOF)

將本實例設為另一台的複本(或用 REPLICAOF NO ONE 升為主節點)。

redis-cli REPLICAOF redis-master 6379 && redis-cli REPLICAOF NO ONE

管線與掃描

redis-cli ... < commands.txt

管線模式:將指令從 stdin 批次送出,單次 round-trip 處理——批次場景快很多。

--pipe 模式使用 RESP;< file.txt

printf 'SET k1 v1\nSET k2 v2\nGET k1\nGET k2\nINCR counter\n' | redis-cli --pipe | head
redis-cli --scan --pattern '...'

伺服器端游標掃描,不會像 KEYS 一樣產生 O(N) 的雪崩。

--scan --pattern p;--bigkeys / --memkeys / --hotkeys(取樣)

redis-cli --scan --pattern 'session:*' | wc -l

診斷

redis-cli --bigkeys / --memkeys

找出最大的 key/單 key 記憶體;以取樣方式進行(不會凍結伺服器)。

redis-cli -h prod --bigkeys --i 0.01 | tee /tmp/bigkeys.log
redis-cli --latency / --latency-history

即時延遲直方圖(最小/最大/平均),取多個樣本。

--latency;--latency-history -i 5;--intrinsic-latency N(診斷作業系統時鐘)

redis-cli -h prod --latency-history -i 5 > /tmp/lat.log & sleep 30; kill %1
redis-cli CLUSTER INFO / CLUSTER NODES

叢集狀態:槽位、節點角色(master/replica)、狀態。

redis-cli --cluster check 10.0.0.1:6379

速查頁版本 1.0.0

適用於 Redis 6.2+