*Redis LATENCY HISTOGRAM 命令

LATENCY HISTOGRAM 用于查看指定事件的命令延迟累积分布直方图。


*语法

LATENCY HISTOGRAM event

*参数说明

参数 类型 必填 说明
event String 事件名称,如 commandforkaof-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: 如果该事件尚未发生或样本数不足,对应的桶计数可能为零。只要事件被监控且发生过,至少会有基础数据返回。