*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 usageObservations 评估内存效率
  • 观测节点比例Merged nodes + Unmerged nodes 反映内部状态,异常增长可能预示问题
  • 容量规划Capacity 与压缩因子成正比,可据此预估最大内存占用
  • 配合 TDIGEST.CREATE:创建后查看 INFO 确认压缩因子生效

*FAQ

Q1: INFO 能获取最小值和最大值吗? A: 不能。INFO 只返回元信息,最小值和最大值需用 TDIGEST.MINTDIGEST.MAX 查询。

Q2: Observations 包含重复值吗? A: 包含。Observations 统计的是 ADD 操作累计添加的总次数,每个值(包括重复)都计数。

Q3: 如何清理 t-digest 但保留结构? A: 使用 TDIGEST.RESET 清空数据但保留 key 和配置,或 TDIGEST.CREATE 重置。