Redis 大 Key 与热 Key:治理实战

线上 Redis 的两大杀手:大 Key(单个 key 值巨大)和热 Key(单个 key 被疯狂访问)。一个阻塞集群,一个打爆节点。这篇文章是两次事故后的完整治理方案。

一、大 Key:阻塞的元凶

问题

R k e e d y i s k e 5 y 线 0 0 M B 5 0 0 = M B I D

本质:Redis 单线程模型下,慢命令的代价由全库承担

发现

1
2
3
4
5
6
7
8
# 1. 用 SCAN 找大 key(生产安全,不阻塞)
redis-cli --bigkeys --scan --pattern '*'

# 2. 按类型排查
redis-cli --bigkeys

# 3. 监控慢命令
redis-cli slowlog get 20

治理

1 2 3 4 . . . . h K a E h s / v Y a h a S s l h u * e S M / E N M B E I R D L S P O P u S s J O e k S R r e O T : y N 2 0 2 6 : 0 R 1 e d / i s S u C s A e N r / : 2 0 2 6 : 0 2

二、热 Key:打爆单节点的元凶

问题

k e y C P U 1 0 使 1 0 k e y

本质:Redis 集群按 key 分布,热 key 的访问无法分片

发现

1 2 3 . . . 访 R C e P d U i s S 4 D . K 0 + L k 9 F e 0 U y % 访 + 1 0 O % B J E C T F R E Q

治理

1 2 3 4 . . . . h o k k t k e e _ e k y 9 y k y e 0 e N y % y + h R o e t d _ i k s e C y " a # f 1 f " e ~ 穿 i " n # e N / " m N a p

三、两个事故复盘

事故 1:大 Key 引发的全库阻塞

线 s l o R w e l d o i g P s 9 9 2 + 0 S 0 I N 5 T + m P E s 9 R 9 I D 3 s 8 s k e y

事故 2:热 Key 打爆节点

R e d C i P s U R e k 1 d e s Q i y P s T S T L 8 + 8 C P U k 1 e 3 0 y 0 0 0 % 0 C P U 3 0 %

四、预防体系

线 - k - e b y i C K g P E k k U Y e e S y y / s s i z / e / 访 k e y

五、避坑清单

k k k e e e y y y S C A N K E Y S

总结

大 Key 与热 Key 的核心认知:

  1. 大 Key 阻塞全局:Redis 单线程,慢命令=全库卡顿
  2. 热 Key 无法分片:集群也救不了单个 key 的访问热点
  3. 治理三板斧:拆分(大 key)、本地缓存(热 key)、降级兜底
  4. 预防 > 救火:key 设计评审 + 巡检 + 监控

Redis 的性能杀手从来不是"数据量大",是"单个 key 的极端情况"。 把大 key 拆掉、热 key 挡住,Redis 才能稳定扛住业务。