全部速查表

Redis CLI 命令速查

redis-cli 快速参考:连接与信息、键/字符串、哈希、列表、集合、有序集合、Stream、发布订阅、服务端管理、持久化与复制,以及诊断命令,并附带常用参数和实操示例。

42 条命令

连接与信息

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

连接 Redis 服务并进入交互式 REPL。

-h 主机;-p 6379;-a 密码;--user 用户;--pass 密码;--tls;--insecure;-n 数据库编号

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

键与字符串

GET / SET / SETEX / SETNX

读取 / 写入字符串值;SETEX 带 TTL,SETNX 仅当键不存在时写入。

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

多键字符串操作;MSETNX 在任一键存在时整体拒绝。

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

常用字符串键管理:追加内容、取长度、单键/多键删除。

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

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

键与 TTL

EXPIRE / PEXPIRE / TTL / PTTL / PERSIST / EXPIREAT

设置 / 查看 TTL(秒、毫秒、绝对 Unix 时间);PERSIST 用于清除 TTL。

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

把一个小对象存成 hash——适合用户资料、配置、会话。

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

对 hash 字段做原子计数——很适合嵌套计数指标。

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 后缀的命令会写入目标键。

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

有序集合的范围 / 排名 / 计数——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')

发布订阅与 Stream

SUBSCRIBE / PSUBSCRIBE / PUBLISH / UNSUBSCRIBE

基于连接的实时发布订阅——轻量级广播,不持久化。

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

Stream = 仅追加的日志,支持消费组(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>

查看键数量与运行时配置(内存上限、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 编码、单个键的内存占用(仅调试用)。

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 一次性发送,复用一次往返——批处理场景显著提速。

--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

找出最大的键 / 各键内存占用;基于采样,不会冻住服务端。

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

实时延迟直方图(min / max / avg),展示若干采样数据。

--latency;--latency-history -i 5;--intrinsic-latency N(排查 OS 时钟)

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

集群状态:slot 分布、节点角色(master/replica)、节点状态。

redis-cli --cluster check 10.0.0.1:6379

速查页版本 1.0.0

适用于 Redis 6.2+