Redis 命令速查表 - Redis 缓存数据库常用命令大全

面向用 Redis 做缓存、需要操心内存与过期策略的开发者。Redis 命令本身容易上手,难的是 big key 撑爆内存、热点 key 单点压力、以及缓存穿透/击穿/雪崩这些业务侧问题。读完能按数据结构选对命令,用 INFO memory 与 object encoding 定位内存大户,理解 RDB/AOF 持久化取舍,并用 SCAN/UNLINK 安全地处理大 key 而不阻塞。

数据库·共 43 条命令·最后更新 2026-07-21
redis缓存nosql内存

典型使用场景

缓存与键值存储运维:连接、基础读写、查看内存与键空间、排查内存暴涨、缓存击穿/雪崩、连接数耗尽,以及持久化(RDB/AOF)与恢复。

连接与基础 Connection 6

redis-cli -h 127.0.0.1 -p 6379 -a password
连接指定实例,-a 指定密码(会警告不安全)
redis-cli --scan --pattern "user:*"
安全扫描匹配的 key,不用 KEYS(阻塞)
redis-cli -r 5 -i 1 INFO memory
每秒采集一次内存信息,重复 5 次,监控用
AUTH password
连接后认证;密码错误返回 WRONGPASS,多用于交互会话,脚本里优先用 -a 一次性传入
SELECT 0
切换到 0 号库(集群模式不支持)
DBSIZE
查看当前库 key 数量

数据结构 Data Structure 11

SET key value EX 300
设置键值并 300 秒过期,原子操作
GET key
返回 key 的字符串值;key 不存在返回 nil,可据此区分"未缓存"与"缓存为空"
MSET k1 v1 k2 v2
批量设置,减少网络往返
HSET user:1 name "tom" age 30
设置哈希多个字段,适合缓存一个对象的若干属性,字段与键都会自动创建
HGETALL user:1
获取哈希所有字段和值
LPUSH queue task1
左推入列表(队头)
BRPOP queue 30
阻塞右弹出(队尾),30 秒超时
ZADD rank 100 "user1" 200 "user2"
添加有序集合成员和分数
ZRANGE rank 0 -1 WITHSCORES
按分数升序返回所有成员
SADD tags "python" "redis"
往 Set 添加成员,重复自动去重,返回值表示本次实际新增数量
SINTER set1 set2
返回两个 Set 的交集,常用于标签过滤、共同好友等集合关系运算

键空间 Key Space 8

EXPIRE key 300
设置 300 秒后过期
TTL key
查看剩余生存时间(-1 永久,-2 不存在)
TYPE key
查看 key 的数据类型
DEL key1 key2
同步删除;删除含大量元素的大 key 会阻塞主线程,这种场景应改用 UNLINK 异步删
UNLINK key
异步删除大 key,不阻塞主线程
RENAME old_key new_key
原地重命名,不复制数据;目标键已存在会直接覆盖,先确认无同名键再执行
RANDOMKEY
随机返回一个 key
OBJECT ENCODING key
查看 key 的内部编码(ziplist/hashtable/int 等)

持久化与内存 Persistence & Memory 7

BGSAVE
后台异步 RDB 快照,不阻塞
LASTSAVE
查看上次成功 RDB 保存的 Unix 时间戳
BGREWRITEAOF
后台异步重写 AOF 文件,压缩体积
INFO memory
查看内存详情,关注 used_memory_human 和 mem_fragmentation_ratio
MEMORY USAGE key
查看单个 key 占用内存字节数
CONFIG GET maxmemory
查看最大内存限制
CONFIG GET maxmemory-policy
查看淘汰策略(noeviction/allkeys-lru 等)

慢查询与监控 Slowlog & Monitor 6

SLOWLOG GET 10
查看最近 10 条慢查询
SLOWLOG RESET
清空慢查询日志
CONFIG GET slowlog-log-slower-than
查看慢查询阈值(微秒,0=全记,-1=禁用)
CLIENT LIST
列出所有连接,找空闲连接和来源 IP
CLIENT KILL ID <id>
杀指定连接
INFO clients
查看客户端统计,关注 connected_clients 和 blocked_clients

集群与复制 Cluster & Replication 5

CLUSTER INFO
查看集群状态,cluster_state 应为 ok
CLUSTER NODES
查看所有节点角色和连接状态
CLUSTER KEYSLOT key
查看 key 所属的哈希槽(0-16383)
INFO replication
查看主从角色和同步状态
ROLE
简查看角色(master/slave)和偏移量

参数矩阵

参数作用示例
-h指定主机redis-cli -h 127.0.0.1
-p指定端口(默认 6379)redis-cli -p 6380
-a指定密码(建议用 --user)redis-cli -a secret
--scan安全遍历大键空间,避免 KEYS 阻塞redis-cli --scan --pattern "session:*" | head
INFO memory查看内存使用与碎片率redis-cli INFO memory
EXPIRE给键设置过期时间EXPIRE token:1 3600
TTL查看键剩余存活时间TTL token:1
CONFIG SET运行时改配置(部分需重启)redis-cli CONFIG SET maxmemory 2gb
SAVE/BGSAVE同步/后台落盘 RDBredis-cli BGSAVE
FLUSHDB清空当前库(危险)redis-cli FLUSHDB

易错点与避坑指南

现象内存持续增长直至触发 maxmemory 被逐出或 OOM。

原因键未设过期、大 key(如巨大 hash/list),或客户端缓存无限增长。

处置为缓存键统一设 EXPIRE;用 redis-cli --bigkeys 找大 key 拆分;设合理 maxmemory-policy(如 allkeys-lru)。

现象KEYS * 导致 Redis 卡死、超时雪崩。

原因KEYS 生产环境遍历全量键,阻塞单线程。

处置改用 SCAN/--scan 增量遍历;线上严禁 KEYS *,可用 rename-command 禁用。

现象缓存集中过期,瞬间大量请求穿透到数据库。

原因大量键同一时刻过期(缓存雪崩),或热点 key 失效(击穿)。

处置过期时间加随机抖动避免同时失效;热点 key 用互斥锁/逻辑过期重建;数据库侧加限流。

现象重启后数据全丢。

原因只开 RDB 且间隔长,或 AOF 未开启且崩溃发生在两次快照之间。

处置按重要程度开启 AOF(appendonly yes)并选合适 fsync 策略;关键数据双持久化。

现象连接数打满,新连接被拒。

原因客户端连接未复用、连接泄漏,或 maxclients 过小。

处置用连接池复用;redis-cli CLIENT LIST 查来源;调大 maxclients;排查未关闭连接的代码。

现象误执行 FLUSHDB/FLUSHALL 清空数据。

原因在生产执行了清理命令,且无持久化或副本已同步清空。

处置用 rename-command 重命名危险命令;依赖 AOF/RDB 恢复;从副本或备份重建。

排障路径

  1. 1查看内存与碎片率

    redis-cli INFO memory

    关注 used_memory_human 与 mem_fragmentation_ratio,>1.5 说明碎片偏高。

  2. 2找出大 key 与类型分布

    redis-cli --bigkeys

    定位需要拆分的大 hash/list/set,避免单 key 阻塞。

  3. 3安全遍历键空间

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

    替代 KEYS,避免阻塞单线程。

  4. 4查看当前连接来源

    redis-cli CLIENT LIST

    定位连接泄漏的客户端 IP 与空闲连接。

提示

  • 生产环境禁用 KEYS *,用 SCAN 代替,KEYS 会阻塞主线程导致卡顿。
  • 删除大 key(列表/哈希/集合)用 UNLINK 不用 DEL,DEL 会阻塞主线程。
  • mem_fragmentation_ratio > 1.5 说明碎片率高,考虑重启或使用 activedefrag。

常见问题

Redis 和 Memcached 有什么区别,什么时候该用 Redis?

Redis 支持多种数据结构(字符串、哈希、列表、集合、有序集合)并自带持久化,适合需要复杂数据操作或数据落盘的场景;Memcached 仅支持简单键值且纯内存。需要缓存对象、排行榜、消息队列或会话存储时优先选 Redis。

生产环境为什么不能用 KEYS * 命令?

KEYS * 会遍历整个键空间并阻塞 Redis 主线程,数据量大时会导致服务卡顿甚至超时。应使用 SCAN 命令以增量、非阻塞的方式分批迭代扫描 key。

Redis 的数据会丢吗?如何保证持久化?

Redis 提供 RDB(定时快照)和 AOF(追加日志)两种持久化方式。RDB 恢复快但可能丢最近一次快照后的数据;AOF 更安全但文件更大。生产环境通常同时开启两者以平衡性能与安全性。

官方参考来源

下方为命令对应的官方权威文档,供你核对最新用法与深入查阅。

由 巧匠 维护

公开更新于 2026年7月21日,内容持续校对官方文档。

联系我们

命令或描述有误?提交反馈、商务合作或产品建议都可发送邮件给我们。

联系我们