首页/数据/Redis 进阶速查/redis-cli --hotkeys 热点键分析
性能与排障129 条

redis-cli --hotkeys 热点键分析

redis-cli --hotkeys 基于 LFU 计数扫描热点键;requirement:maxmemory-policy 必须为 LFU 系,否则直接报错。

Redis 进阶速查数据更新于 2026-10-13

--hotkeys 是什么

redis-cli --hotkeys 用 LFU 的访问计数找出全库最热的键,每条结果带着计数一起输出,并附上采样键数。它必须运行在 maxmemory-policy 为 LFU 系的实例上,否则命令直接报错。用途是把「哪个键把单核打满」这件事从猜测变成可查的证据,再据此决定本地缓存、分片加盐还是限流。

基本信息

命令redis-cli --hotkeys
前提maxmemory-policy 为 allkeys-lfu 或 volatile-lfu
统计口径OBJECT FREQ 的对数频率计数
遍历方式全库 SCAN,可配合 -i 限速
输出热点键与对应计数、采样键数
局限只给少数最热键,不含业务维度聚合

典型使用场景

  • 热点治理:定位少数高频键后做本地缓存或读写拆分
  • 分片方案评估:热点集中在少数键说明按 key 取模分片无效,需要按业务加盐
  • 改造效果验证:加本地缓存或加盐后重跑,看计数是否被摊薄
  • 容量决策:把热点键的计数与体积一起看,决定是否单独拆分
  • 故障排查:命中率骤降时确认是否有个别键被反复击穿

最小示例

最小示例
redis-cli CONFIG GET maxmemory-policy      # 必须为 LFU,否则 --hotkeys 直接报错
redis-cli --hotkeys                        # 扫描并输出热点键与计数
redis-cli --hotkeys -i 0.1                 # 限速扫描,降低对线上的影响
redis-cli OBJECT FREQ user:1001            # 复核单个键的计数
redis-cli INFO commandstats                # 从命令维度确认哪些操作最频繁

结果怎么读

观察含义动作
少数键计数远高于其他存在明显热点加本地缓存或按业务键分片
计数普遍偏低且无尖峰访问较分散不是热点问题,转向慢命令与网络排查
扫描没有输出策略不是 LFU 或键太少先 CONFIG GET maxmemory-policy 确认
计数与业务认知不符计数未稳定或键名不同让实例再运行一段时间后重扫
计数是对数刻度且会随时间衰减,刚被访问的键计数还没涨起来很正常;热点判断看数量级差异,不要抠具体数值。
它只覆盖 key 维度。线程池睡眠、连接池等待、大命令阻塞造成的问题,要用 INFO commandstats 与慢查询日志一起看。
扫描会遍历全库并逐个读取计数,大实例上要配合 -i 限速并避开业务高峰,优先在从库执行。

易错点

  • 在 LRU 策略下直接运行:命令会报错,先确认或切换策略
  • 切换策略后立刻扫描:旧键计数是随机初值,排名不可信,需要运行一段时间
  • 把计数当访问次数:对数刻度的概率计数,只能比数量级
  • 以为热点只可能是键:慢命令、慢客户端同样拖慢实例,要配合命令统计与慢日志
  • 高峰不限速全库扫描:额外占用 CPU 与网络,与业务压力叠加

数据来源与参考

  • Redis 官方文档:--hotkeys 说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌