redis - 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)查询每个存储桶中的数据
解决方案
您的密钥将类似于 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
推荐阅读
- c++ - 您可以从 std::transform_reduce 中的变换步骤修改临时中间值吗?
- kotlin - 如何在 Kotlin 的函数类型中接收 null 作为参数
- javascript - 有没有更优雅的方法可以使用 array.map 在 NodeJS 中解决这个问题?
- typescript - Flickity 渲染重复的幻灯片,直到 Inspector 关闭或打开
- c++ - 为什么 std::all_of() 的编码版本与对 std::all_of() 的调用不同?
- javascript - auth0 loginWithRedirect() 不同提供者的不同范围
- python - Python Selenium 等待不起作用/Java Selenium 问题
- r - R:函数返回未使用的参数
- loss-function - 我可以根据人口的子集为 GBM(或任何 ML 算法)指定损失函数吗?
- c# - Visual Studio 未找到任何引用或包