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 值的数量
    countNaN NaN 值的数量(自 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 是每个桶的持续时间,单位为毫秒。

Notes

  • 只有创建规则后添加到源系列中的新样本才会被聚合。
  • 使用非空 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 相同。

参见

TS.DELETERULE

Redis时间系列

资料来源:Redis 官方 TS.CREATERULE 文档;中文内容参考 Redis 文档许可。