创建时间序列压缩规则

语法
TS.CREATERULE sourceKey destKey 
  AGGREGATION aggregator bucketDuration 
  [alignTimestamp]
可用版本
Redis Stack / 时间序列 1.0.0
时间复杂度
O(1)

创建压缩规则

示例

必选参数

sourceKey

源时间序列的键名。

destKey

目标(压缩)时间序列的键名。在调用 TS.CREATERULE 之前,必须先创建它。

AGGREGATION aggregator bucketDuration

将结果聚合到时间桶中。

  • aggregator 可以使用以下聚合类型之一:

    aggregator 描述
    avg 所有值的算术平均值
    sum 所有值的总和
    min 最小值
    max 最大值
    range 最高值和最低值之间的差值
    count 值的个数
    first 桶中时间戳最小的值
    last 桶中时间戳最大的值
    std.p 值的总体标准差
    std.s 值的样本标准差
    var.p 值的总体方差
    var.s 值的样本方差
    twa 桶时间范围内的加权平均值(从 RedisTimeSeries v1.8 开始)
  • bucketDuration 是每个桶的持续时间,单位为毫秒。

注意

  • 只有在创建规则后添加到源序列的新样本才会被聚合。
  • 使用非空 destKey 调用 TS.CREATERULE 可能导致原始数据和压缩数据之间出现不一致。
  • 显式地将样本添加到压缩的时间序列(使用 TS.ADDTS.MADDTS.INCRBYTS.DECRBY)可能会导致原始数据和压缩数据之间出现不一致。压缩过程可能会覆盖此类样本。
  • 如果在桶周期内没有样本添加到源时间序列,则不会将压缩样本添加到目标时间序列。
  • 添加到目标时间序列的压缩样本的时间戳设置为相应压缩桶的起始时间戳。例如,对于一个没有对齐的 10 分钟压缩桶,压缩样本的时间戳分别为 x:00x:10x:20 等等。
  • 删除 destKey 会导致压缩规则也被删除。
警告
在集群环境中,您必须使用 哈希标签 来强制将 sourceKeydestKey 存储在同一个哈希槽中。

可选参数

alignTimestamp(从 RedisTimeSeries v1.8 开始)

确保有一个桶从 alignTimestamp 开始,并相应地对齐所有其他桶。它以毫秒为单位。默认值为 0:与 Unix 时间戳对齐。

例如,如果 bucketDuration 为 24 小时 (24 * 3600 * 1000),将 alignTimestamp 设置为 Unix 时间戳后的 6 小时 (6 * 3600 * 1000) 确保每个桶的时间范围为 [06:00 .. 06:00)

返回值

返回以下回复之一:

  • 简单字符串回复 - 如果执行正确,则返回 OK
  • [] 出错时(无效参数、错误的键类型等),当 sourceKey 不存在时,当 destKey 不存在时,当 sourceKey 已经是压缩规则的目标时,当 destKey 已经是压缩规则的源或目标时,或者当 sourceKeydestKey 相同。

示例

创建压缩规则

创建一个时间序列来存储特拉维夫测量的温度。

127.0.0.1:6379> TS.CREATE temp:TLV LABELS type temp location TLV
OK

接下来,创建一个名为 dailyAvgTemp 的压缩时间序列,包含每 24 小时一个压缩样本:从午夜到下一天午夜的所有测量的加权平均值。

127.0.0.1:6379> TS.CREATE dailyAvgTemp:TLV LABELS type temp location TLV
127.0.0.1:6379> TS.CREATERULE temp:TLV dailyAvgTemp:TLV AGGREGATION twa 86400000 

现在,还创建一个名为 dailyDiffTemp 的压缩时间序列。该时间序列将包含每 24 小时一个压缩样本:在每天 06:00 到第二天 06:00 之间测量的最低温度和最高温度之间的差值。这里,86400000 是 24 小时的毫秒数,21600000 是 6 小时的毫秒数。

127.0.0.1:6379> TS.CREATE dailyDiffTemp:TLV LABELS type temp location TLV
127.0.0.1:6379> TS.CREATERULE temp:TLV dailyDiffTemp:TLV AGGREGATION range 86400000 21600000

另请参阅

删除时间序列压缩规则

RedisTimeSeries


RATE THIS PAGE
Back to top ↑