Skip to content
Redis 持久化与性能治理 · 第 3 篇 / 共 4 篇
领域数据与中间件
专题Redis 专题
当前序列Redis 持久化与性能治理
阅读位置第 3 篇 / 共 4 篇当前专题第 3 个序列 / 共 7 个序列

Redis 大 Key 和热 Key 怎么排查:现象、风险和处理思路

Redis 出问题时,很多人第一反应是“是不是机器不够了”。但真实场景里,更常见的是:

  • 单个 key 太大,传输和删除都很重
  • 单个 key 太热,所有流量集中打到一个分片

这两个问题经常一起出现,但处理思路并不一样。

先说结论

  • 大 Key:单个 Key 对应的 value 体积过大
  • 热 Key:单个 Key 被访问得过于频繁
  • 大 Key 先看数据模型和删除方式,热 Key 先看热点流量和回源保护
  • 不要只会扩 Redis,很多问题本质上是建模和访问模式出了问题

一、大 Key 有什么风险

它常见的风险是:

  • 网络传输变慢
  • 删除或迁移成本高
  • 主从复制压力变大
  • 内存抖动更明显
  • RDB / AOF 期间放大阻塞和 IO 压力

常见场景:

  • 一个超大的 hash
  • 一个塞了大量成员的 set
  • 一个很大的 JSON 字符串
  • 把整页结果、整份配置、整批明细直接塞进一个 key

二、热 Key 有什么风险

热 Key 的问题不在“它大不大”,而在“访问集中度太高”,导致单个分片被打成热点。

典型表现:

  • 某个热点请求延迟上升
  • Redis 单实例某一时段 QPS 极高
  • CPU 被某几个 Key 明显打满
  • 网络出口流量集中到少量节点
  • 应用侧开始超时并回源数据库

常见场景:

  • 首页热门数据
  • 秒杀商品库存
  • 单个配置项被高频读取
  • 大促活动页的统一配置
  • 爆款商品详情、库存或活动状态

三、怎么先判断是哪一类问题

如果是大 Key,更常看到:

  • 某类命令单次 RT 变长
  • 同一个 key 删除、迁移、复制时抖动明显
  • 一次读取返回的数据量很大

如果是热 Key,更常看到:

  • 单节点 QPS、CPU、网络远高于其他节点
  • 慢日志里不一定有异常,但接口 RT 明显波动
  • 回源数据库或下游接口的流量跟着一起上升

四、怎么应对大 Key

更稳妥的方向通常是:

  • 拆分存储
  • 避免一次返回超大对象
  • 设置合理过期与淘汰策略
  • 删除时注意分批处理
  • 大 key 清理时优先异步或分片删除,避免直接重操作

本质上,大 Key 往往说明建模方式需要重新看。

五、怎么应对热 Key

常见思路:

  • 本地缓存分担一部分流量
  • 多副本或分片分散热点
  • 热点数据预热
  • 在业务层做限流
  • 控制回源,避免 Redis 抖动时把数据库一起打穿

如果这是秒杀、活动类场景,还要进一步考虑:

  • 流量控制
  • 读写分离
  • 请求削峰

六、排查时最容易忽略的两件事

1. 热 Key 不一定出现在慢日志里

因为单次命令可能很快,真正的问题是“频率太高”。

2. 大 Key 和热 Key 可能同时出现

比如一个热点商品详情 key 既很大又很热,这时候影响会更重:

  • 每次请求都要搬大对象
  • 还集中压在一个分片上

七、什么时候要优先怀疑它们

如果你看到这些现象,可以优先怀疑:

  • Redis 响应时间突然升高
  • 某些接口平时正常,活动时明显变慢
  • 网络带宽压力异常
  • 主从同步延迟变大
  • 少数节点明显比其他节点更忙

总结

大 Key 解决的是“单个对象太胖”,热 Key 解决的是“访问热点太集中”。两者本质上都不是命令层的小技巧问题,而是数据模型、访问模型和流量治理的问题。先分清是哪一类,再决定是拆对象、改建模,还是做热点隔离和回源保护。

延伸阅读相关文章优先当前专题,再补跨专题关联。
同一序列 · 顺着当前主线继续读Redis 热 Key 治理适合把持久化、内存淘汰、大 Key 和热 Key 这类稳定性问题集中来看。Redis 专题 · Redis 持久化与性能治理同一序列 · 回看前文会更完整Redis 内存、过期与淘汰策略适合把持久化、内存淘汰、大 Key 和热 Key 这类稳定性问题集中来看。Redis 专题 · Redis 持久化与性能治理同专题其他序列 · 共享标签:线上排障、案例排障缓存穿透、击穿、雪崩与缓存一致性适合把缓存更新、击穿雪崩、回源策略和事务边界放到同一条缓存治理主线上看。Redis 专题 · Redis 缓存一致性与更新策略同专题其他序列 · 共享标签:线上排障、案例排障主从复制积压和断连恢复怎么理解适合把复制、故障切换、槽迁移、内存碎片和冷启动预热放在一条 Redis 稳定性主线上看。Redis 专题 · Redis 高可用、过期与性能治理跨专题关联 · 共享标签:线上排障、案例排障磁盘打满后为什么删除文件不一定立刻生效适合把 Redis 抖动、MySQL 连接打满、MQ 积压、ES 发黄、ClickHouse 合并堆积和磁盘打满放在同一条基础设施排障主线上看。数据与基础设施排障专题 · 数据与基础设施故障的分层排查跨专题关联 · 共享标签:线上排障、案例排障大 Header、buffer、timeout 问题怎么排查适合把 location 匹配、缓冲区和负载均衡放在一起看。容器与站点部署专题 · Nginx 进阶路由与代理治理
继续阅读Redis 持久化与性能治理当前序列第 3 篇 / 共 4 篇当前专题第 3 个序列 / 共 7 个序列
往前看
上一篇Redis 内存、过期与淘汰策略回到当前序列上一章上一序列Redis 缓存一致性与更新策略从第 1 篇开始:Redis 缓存更新策略
往后看
下一篇Redis 热 Key 治理继续当前序列下一章下一序列Redis 进阶数据模型与业务场景从第 1 篇开始:Redis String、List、Set、ZSet 怎么做业务建模

把零散经验整理成可查、可复用、可持续更新的企业级知识门户