*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-STOP和HOTKEYS-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: 建议在集群的每个主节点上分别执行,因为热点键统计是节点级别的。汇总各节点数据时需注意键可能分布在不同节点。