TS.CREATERULE

Syntax
TS.CREATERULE sourceKey destKey 
  AGGREGATION aggregator bucketDuration 
  [alignTimestamp]
Available in:
Redis Stack / TimeSeries 1.0.0
Time complexity:
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 是每个桶的持续时间,以毫秒为单位。

备注

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

可选参数

alignTimestamp (since RedisTimeSeries v1.8)

确保有一个桶正好从alignTimestamp开始,并相应地调整所有其他桶。它以毫秒表示。默认值为0:与Unix纪元对齐。

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

返回值

返回以下回复之一:

  • Simple string reply - OK 如果正确执行
  • [] 在错误情况下(无效参数、错误的键类型等),当 sourceKey 不存在时,当 destKey 不存在时,当 sourceKey 已经是压缩规则的目标时,当 destKey 已经是压缩规则的源或目标时,或者当 sourceKeydestKey 相同时

示例

Create a compaction rule

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

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

另请参阅

TS.DELETERULE

RedisTimeSeries


RATE THIS PAGE
Back to top ↑