首页 > 解决方案 > redis排序集中基于时间间隔的桶

问题描述

有没有办法使用 redis 排序集生成基于时间间隔的存储桶。我想在特定的时间间隔内创建不同的排序集(比如说 15 分钟)

t1, t2 是分数

键排序集

bucket#V1 (t1,1),(t2,2).....(提交的bucket)

bucket#V1+15 (t3,1),(t4,2).....(提交的bucket)

bucket#V1+30 (t5,1),(t6,2).....(当前运行的bucket)

即在 15 分钟间隔内,它应该自动创建新密钥并开始在新排序集中提取数据。V1+15 应该在 15 分钟后开始...

第二个挑战是如何查询已提交的存储桶?(不运行仍在摄取数据的存储桶)。

最终目标是首先查询已提交的存储桶,然后使用时间范围查询(基于分数,即 ZRANGEBYSCORE)查询每个存储桶中的数据

标签: redis

解决方案


您的密钥将类似于 DateTime.Now.SecondsSinceEpoch / TimeSpan.FromMinutes(15) 格式化为固定长度的字符串。这是一个 powershell 脚本,展示了如何获取间隔键值。您可以使用类似的例程来存储数据或请求任何过去(或将来)的时间间隔。这里的间隔是 3 秒,Epoch 值是 Jan 1, 1970,但可以使用任何你想要的。

1..7 | % { $interval = [int] (((get-date) - (epoch)).TotalSeconds / 3) ; $interval ; start-sleep -Seconds 1 }
514663592
514663593
514663593
514663593
514663594
514663594
514663594

推荐阅读