TS.CREATERULE
创建压缩规则
语法
TS.CREATERULE sourceKey destKey AGGREGATION bucketDuration [alignTimestamp]
引入版本:1.0.0
复杂度摘要:O(1)
[!NOTE] 此命令的行为在集群 Redis 环境中有所不同。请参阅 多键操作 页面了解更多信息。
创建压缩规则
必需参数
sourceKey
是源时间序列的键名称。
destKey
是目标(压缩)时间序列的键名称。它必须在调用 TS.CREATERULE 之前创建。
AGGREGATION aggregator bucketDuration
将结果汇总到时间段中。
-
aggregator采用以下聚合类型之一:aggregator说明 avg所有非 NaN 值的算术平均值 sum所有非 NaN 值的总和 min最小非 NaN 值 max最大非 NaN 值 range最大和最小非 NaN 值之间的差异 count非 NaN 值的数量 countNaNNaN 值的数量(自 Redis 8.6 起) countAll值的数量,包括 NaN 和非 NaN(自 Redis 8.6 起) first桶中时间戳最小的非NaN值 last桶中时间戳最大的非NaN值 std.p非 NaN 值的总体标准差 std.s非 NaN 值的样本标准差 var.p非 NaN 值的总体方差 var.s非 NaN 值的样本方差 twa存储桶时间范围内的时间加权平均值(忽略 NaN 值)(自 RedisTimeSeries 1.8 起) -
bucketDuration是每个桶的持续时间,单位为毫秒。
- 只有创建规则后添加到源系列中的新样本才会被聚合。
- 使用非空
destKey调用TS.CREATERULE可能会导致原始数据和压缩数据之间不一致。 - 向压缩时间序列显式添加样本(使用
TS.ADD、TS.MADD、TS.INCRBY或TS.DECRBY)可能会导致原始数据和压缩数据之间不一致。压缩过程可能会覆盖此类样本。 - 如果在一个桶期间没有向源时间序列添加样本。没有 压实样品 添加到目标时间序列。
- 添加到目标时间序列的压缩样本的时间戳设置为适当压缩桶的开始时间戳。例如,对于没有对齐的10分钟压缩桶,压缩后的样本时间戳为
x:00、x:10、x:20等。 - 删除
destKey将导致压缩规则也被删除。
[!警告] 在集群环境中,必须使用 哈希标签 强制
sourceKey和destKey存储在同一个哈希槽中。如果不这样做,Redis 可能无法压缩数据而不显示任何错误消息。
可选参数
alignTimestamp(自 RedisTimeSeries 1.8 起)
确保有一个存储桶完全从 alignTimestamp 开始,并相应地对齐所有其他存储桶。它以毫秒表示。默认值为 0:与 Unix 纪元对齐。
例如,如果 bucketDuration 为 24 小时 (24 * 3600 * 1000),则将 alignTimestamp 设置为 Unix 纪元 (6 * 3600 * 1000) 之后的 6 小时可确保每个存储桶的时间范围为 [06:00 .. 06:00)。
示例
Create a compaction rule
创建一个时间序列来存储在特拉维夫测量的温度。
127.0.0.1:6379> TS.CREATE temp:{TLV} 标签类型临时位置 TLV OK
接下来,创建一个名为 每日平均温度 的压缩时间序列,其中每 24 小时包含一个压缩样本:从午夜到下一个午夜进行的所有测量值的时间加权平均值。
127.0.0.1:6379> TS.CREATE dailyAvgTemp:{TLV} LABELS 类型临时位置 TLV 127.0.0.1:6379> TS.CREATERULE temp:{TLV} dailyAvgTemp:{TLV} AGGREGATION twa 86400000
现在,还创建一个名为 每日差异温度 的压缩时间序列。该时间序列将包含每 24 小时一个压实样本:06:00 到第二天 06:00 之间测量的最低温度和最高温度之间的差异。这里,86400000是24小时的毫秒数,21600000是6小时的毫秒数。
127.0.0.1:6379> TS.CREATE dailyDiffTemp:{TLV} LABELS 类型临时位置 TLV 127.0.0.1:6379> TS.CREATERULE temp:{TLV} dailyDiffTemp:{TLV} 聚合范围 86400000 21600000
Redis Software 与 Redis Cloud 兼容性
| Redis 软件 |
Redis Cloud |
说明 |
|---|---|---|
| ✅ 支持 |
✅ 灵活且每年一次 ✅ 免费和固定 |
返回值
RESP2
以下之一: * 简单字符串回复:压缩规则创建成功时的OK。 * 简单错误回复 在这些情况下:无效参数、错误的键类型、sourceKey 不存在、destKey 不存在、sourceKey 已经是压缩规则的目标、destKey 已经是压缩规则的源或目标,或者 sourceKey 和 destKey 相同。
RESP3
以下之一: * 简单字符串回复:压缩规则创建成功时的OK。 * 简单错误回复 在这些情况下:无效参数、错误的键类型、sourceKey 不存在、destKey 不存在、sourceKey 已经是压缩规则的目标、destKey 已经是压缩规则的源或目标,或者 sourceKey 和 destKey 相同。
参见
相关主题
资料来源:Redis 官方 TS.CREATERULE 文档;中文内容参考 Redis 文档许可。