这是this question的一个扩展,它已有近2年的历史。在这个问题中,@Danni说,API的目的是不返回部分桶的结果。
我的问题是,如果我想返回部分桶的结果,该如何返回?
例如,我希望ts.get返回100
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> ts.create src
OK
127.0.0.1:6379> ts.create dst
OK
127.0.0.1:6379> ts.createrule src dst aggregation first 3600000
OK
127.0.0.1:6379> ts.add src * 100
(integer) 1651515399055
127.0.0.1:6379> ts.add src * 200
(integer) 1651515402981
127.0.0.1:6379> ts.add src * 300
(integer) 1651515406787
127.0.0.1:6379> ts.add src * 400
(integer) 1651515410118
127.0.0.1:6379> ts.get dst
(empty array)发布于 2022-05-03 05:15:29
当前,当键是压缩时,TS.GET、TS.RANGE、TS.REVRANGE、TS.MRANGE和TS.MREVRANGE不会报告最新的原始桶的压缩值。
原因是最近的桶中的数据可能是部分的。一个桶是“关闭”的,只有在数据到达时“打开”一个新桶时才会进行压缩。
您肯定是对的--在某些情况下,还应该检索最新的(可能是部分的)桶的压缩。
在RedisTimeSeries 1.8中,我们将引入一个可选标志,允许接收最新(可能是部分)桶:
详细信息:
在上述命令中添加可选的最新命令:
TS.GET key [LATEST]
TS.MGET key [LATEST] ...
TS.RANGE key fromTimeStamp toTimeStamp [LATEST] …
TS.REVRANGE key fromTimeStamp toTimeStamp [LATEST] …
TS.MRANGE key fromTimeStamp toTimeStamp [LATEST] …
TS.MREVRANGE key fromTimeStamp toTimeStamp [LATEST] …最新
只有当键是压缩时才有效。如果指定-还检索最新(可能是部分)压缩桶。
现在您可以轻松完成的工作(RedisTimeSeries v1.6)是在最近的桶期手动聚合原始样本--直接从原始样本时间序列(而不是从压缩样本时间序列),使用以下方法:
TS.RANGE key bucket_startTimestamp bucket_endTimestamp AGGREGATION aggregator bucketDuration
https://stackoverflow.com/questions/72090857
复制相似问题