首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于时间值排序的Redis数据结构设计

基于时间值排序的Redis数据结构设计
EN

Stack Overflow用户
提问于 2013-06-18 01:15:26
回答 1查看 16.3K关注 0票数 17

我正在对数据流执行一些分析,并将结果发布到Redis通道上。消费者订阅这些渠道,并获得实时数据馈送。所有历史数据分析结果都将丢失。

现在我想在Redis中添加存储历史数据的功能,以便消费者可以查询这些历史数据(主要是按时间)。既然分析结果是按时间划分的,那么在Redis中存储结果的好设计是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-18 02:36:08

使用redis sorted sets

排序集根据“分数”存储数据,因此在您的示例中,只需使用millis中的时间戳;数据将自动排序,允许您使用开始/结束日期范围检索历史项目,以下是一个示例...

将项目添加到排序集...

代码语言:javascript
复制
zadd historical <timestamp> <dataValue>

..add一些样本数据..

代码语言:javascript
复制
 zadd historical 1 data1
 zadd historical 2 data2
 zadd historical 3 data3
 zadd historical 4 data4
 zadd historical 5 data5
 zadd historical 6 data6
 zadd historical 7 data7

使用开始/结束范围..retrieve项目子集...

代码语言:javascript
复制
 zrangebyscore historical 2 5

..returns...

代码语言:javascript
复制
1) "data2"
2) "data3"
3) "data4"
4) "data5"

因此,在您的例子中,如果您想检索前一天的所有历史项目,只需执行以下操作...

代码语言:javascript
复制
zrangebyscore historical <currentTimeInMillis - 86400000> <currentTimeInMillis> 
票数 37
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17153154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档