*Redis LATENCY HISTORY 命令
LATENCY HISTORY 用于返回指定监控事件的原始延迟时间序列采样数据。
*语法
LATENCY HISTORY event
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| event | String | 是 | 事件名称,如 command、fork、aof-write 等 |
*返回值
- Array:时间序列采样数组,每个元素为
[UNIX 时间戳, 延迟毫秒数] - Error:事件不存在时返回错误
*时间复杂度
O(1)
*
*示例
*查看命令延迟历史
> LATENCY HISTORY command
1) 1) (integer) 1717462800
2) (integer) 3
2) 1) (integer) 1717462801
2) (integer) 5
3) 1) (integer) 1717462802
2) (integer) 2
*查看 AOF 延迟历史
> LATENCY HISTORY aof-write
1) 1) (integer) 1717462800
2) (integer) 12
2) 1) (integer) 1717462805
2) (integer) 15
*查看 rdb-save 延迟历史
> LATENCY HISTORY rdb-save
1) 1) (integer) 1717461000
2) (integer) 200
2) 1) (integer) 1717464600
2) (integer) 180
*常见错误
| 错误 | 原因 | 解决 |
|---|---|---|
| ERR No such latency event | 指定的事件未被监控或不存在 | 先用 LATENCY LATEST 确认事件名称 |
| ERR wrong number of arguments | 未提供事件名称 | 补充需要查询的事件名称 |
*最佳实践
- 配合 LATENCY GRAPH 可视化历史趋势
- 用于故障排查时回溯具体时间点的延迟毛刺
- 采样数据有限(默认 160 条),超出后会被覆盖,关键场景应外接监控
- 注意:生产环境高频调用可能增加额外开销,建议仅排查时手动执行
*FAQ
Q1: LATENCY HISTORY 最多保留多少条记录? A: Redis 默认保留最近 160 条延迟采样记录,超出后采用 FIFO 方式覆盖旧数据。
Q2: 返回的时间戳是什么格式? A: 返回的是 UNIX 时间戳(秒级),表示该延迟采样被记录的时间点。
Q3: 所有事件都支持 LATENCY HISTORY 吗?
A: 只有已被 Redis 内部监控的事件才支持,如 command、fork、aof-write、rdb-save 等系统级事件。