*Redis TDIGEST.INFO 命令
TDIGEST.INFO 返回指定 t-digest 数据结构的元信息和统计信息。
*语法
TDIGEST.INFO key
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| key | String | 是 | t-digest 键名 |
*返回值
- Array:键值对数组,包含以下信息:
Compression:压缩因子Capacity:容量(节点数上限)Merged nodes:已合并的节点数量Unmerged nodes:未合并的节点数量Total compressions:累计压缩次数Memory usage:内存使用量(字节)Observations:累计添加的观测值数量
- Error:key 不存在或类型错误
*时间复杂度
O(1)
*
*示例
*基本用法
> TDIGEST.CREATE mydigest
OK
> TDIGEST.ADD mydigest 1 2 3 4 5
OK
> TDIGEST.INFO mydigest
1) "Compression"
2) "100"
3) "Capacity"
4) (integer) 610
5) "Merged nodes"
6) (integer) 1
7) "Unmerged nodes"
8) (integer) 0
9) "Total compressions"
10) (integer) 1
11) "Memory usage"
12) (integer) 1792
13) "Observations"
14) (integer) 5
*空 t-digest
> TDIGEST.CREATE emptydigest
OK
> TDIGEST.INFO emptydigest
1) "Compression"
2) "100"
3) "Capacity"
4) (integer) 610
5) "Merged nodes"
6) (integer) 0
7) "Unmerged nodes"
8) (integer) 0
9) "Total compressions"
10) (integer) 0
11) "Memory usage"
12) (integer) 1792
13) "Observations"
14) (integer) 0
*监控内存使用
> TDIGEST.INFO latency | grep "Memory usage"
11) "Memory usage"
12) (integer) 8576
*常见错误
| 错误 | 原因 | 解决 |
|---|---|---|
| ERR wrong number of arguments | 未提供 key | 提供一个 key |
| ERR key does not exist | key 不存在 | 确认 key 已创建 |
| WRONGTYPE | key 不是 t-digest | 检查 key 的数据类型 |
*最佳实践
- 监控内存:通过
Memory usage和Observations评估内存效率 - 观测节点比例:
Merged nodes+Unmerged nodes反映内部状态,异常增长可能预示问题 - 容量规划:
Capacity与压缩因子成正比,可据此预估最大内存占用 - 配合 TDIGEST.CREATE:创建后查看 INFO 确认压缩因子生效
*FAQ
Q1: INFO 能获取最小值和最大值吗? A: 不能。INFO 只返回元信息,最小值和最大值需用 TDIGEST.MIN 和 TDIGEST.MAX 查询。
Q2: Observations 包含重复值吗? A: 包含。Observations 统计的是 ADD 操作累计添加的总次数,每个值(包括重复)都计数。
Q3: 如何清理 t-digest 但保留结构? A: 使用 TDIGEST.RESET 清空数据但保留 key 和配置,或 TDIGEST.CREATE 重置。