*Redis HOTKEYS-START 命令

HOTKEYS-START 用于启动 HotKeys 模块的访问频率监控,开始统计 Redis 实例中各键的访问频率。


*语法

HOTKEYS-START [frequency_threshold] [sample_rate]

*参数说明

参数 类型 必填 说明
frequency_threshold Integer 频率记录阈值,低于此值的访问不计入统计,默认 1
sample_rate Integer 采样率(百分比),100 为全量采样,默认 100

*返回值

  • OK:监控启动成功
  • Error:HotKeys 模块未加载或参数错误时返回

*时间复杂度

O(1)

*

*示例

*启动热点键监控

> HOTKEYS-START
OK

*启动并设置频率阈值

> HOTKEYS-START 10
OK
> GET user:1001:session
"active"
> HOTKEYS
1) "user:1001:session"
2) "1"

*启动并设置采样率

> HOTKEYS-START 1 50
OK

*常见错误

错误 原因 解决
ERR unknown command 'hotkeys-start' HotKeys 模块未加载 在 redis.conf 中加载 hotkeys.so 模块
ERR invalid frequency threshold 频率阈值非正整数 传入大于 0 的整数
ERR invalid sample rate 采样率不在 1-100 范围内 传入 1 到 100 之间的整数
ERR HotKeys already started 监控已启动 无需重复启动,或先执行 HOTKEYS-STOP

*最佳实践

  • 场景:大促前、版本发布前启动监控,识别潜在热点键风险
  • 高频 Redis 实例建议设置采样率(如 50)以降低监控开销
  • 建议仅在需要排查问题时启动监控,日常关闭以减少性能损耗
  • 配合 HOTKEYS-STOPHOTKEYS-RESET 管理完整的监控生命周期
  • 启动后至少等待 5-10 分钟再查询结果,确保有足够样本数据
  • 在 Redis Cluster 中,建议在每个主节点上分别启动监控

*FAQ

Q1: 启动监控后会影响 Redis 性能吗? A: 有一定影响,全量采样时约 5-10% 性能损耗,建议通过 sample_rate 参数降低采样率。

Q2: 监控会在 Redis 重启后保持吗? A: 不会,重启后需重新执行 HOTKEYS-START。建议通过 Redis 启动脚本自动调用。

Q3: 可以只监控特定数据库或特定前缀的键吗? A: 标准 HotKeys 模块不支持按 DB 或前缀过滤,需结合应用层日志或自定义模块实现。

Q4: 启动监控后多久能看到有意义的热点键数据? A: 取决于业务流量,通常 5-10 分钟即可看到初步结果。对于低频访问的业务,可能需要 30 分钟以上。

Q5: HOTKEYS-START 在 Redis 集群中如何正确使用? A: 建议在集群的每个主节点上分别执行,因为热点键统计是节点级别的。汇总各节点数据时需注意键可能分布在不同节点。