*Redis LATENCY HISTOGRAM 命令
LATENCY HISTOGRAM 用于查看指定事件的命令延迟累积分布直方图。
*语法
LATENCY HISTOGRAM event
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| event | String | 是 | 事件名称,如 command、fork、aof-write 等 |
*返回值
- Array:延迟直方图数据,每个元素包含
[时间桶上限, 该桶内的延迟样本数量] - Error:事件不存在或参数错误时返回错误
*时间复杂度
O(1)
*
*示例
*查看命令延迟直方图
> LATENCY HISTOGRAM command
1) 1) (integer) 1
2) (integer) 523
2) 1) (integer) 2
2) (integer) 120
3) 1) (integer) 4
2) (integer) 45
*查看 AOF 写入延迟直方图
> LATENCY HISTOGRAM aof-write
1) 1) (integer) 1
2) (integer) 1024
2) 1) (integer) 2
2) (integer) 8
3) 1) (integer) 8
2) (integer) 1
*查看 Fork 操作延迟直方图
> LATENCY HISTOGRAM fork
1) 1) (integer) 10
2) (integer) 2
2) 1) (integer) 100
2) (integer) 1
*常见错误
| 错误 | 原因 | 解决 |
|---|---|---|
| ERR No such latency event | 指定的事件名称不存在 | 使用 LATENCY LATEST 查看可用事件 |
| ERR wrong number of arguments | 缺少事件名称参数 | 提供需要监控的事件名称 |
*最佳实践
- 配合 LATENCY LATEST 先确认监控中的事件列表
- 用于识别延迟长尾问题,比平均值更能反映真实分布
- 建议定期采样并持久化到监控系统(如 Prometheus + redis_exporter)
- 大流量场景下关注高时间桶的累积数量,判断是否需优化
*FAQ
Q1: LATENCY HISTOGRAM 与 LATENCY HISTORY 有什么区别? A: LATENCY HISTORY 返回原始的时间序列采样数据,而 LATENCY HISTOGRAM 返回按时间桶聚合后的累积分布,更适合观察延迟分布形态。
Q2: 直方图的时间桶是如何划分的? A: Redis 使用指数增长的时间桶(如 1ms、2ms、4ms、8ms...),每个桶的上限值在返回结果的第一列中体现。
Q3: 为什么某些事件返回空数组? A: 如果该事件尚未发生或样本数不足,对应的桶计数可能为零。只要事件被监控且发生过,至少会有基础数据返回。