加入收藏 | 设为首页 | 会员中心 | 我要投稿 鄂州站长网 (https://www.0711zz.com/)- 数据分析、网络、云渲染、应用安全、大数据!
当前位置: 首页 > 数据库 > MsSql > 正文

数据库设计 – Redis数据结构设计,用于对基于时间的值进行排序

发布时间:2020-08-05 10:24:13 所属栏目:MsSql 来源:互联网
导读:我正在对数据流执行一些分析并在Redis频道上发布结果.消费者订阅这些频道并获得实时数据馈送.所有历史数据分析结果都将丢失. 现在我想添加在Redis中存储历史数据的功能,以便消费者可以查询这些历史数据(主要是按时间).由于分析结果按时间划分,将结果存储在Red

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

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

解决方法

使用redis sorted sets.

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

将项目添加到已排序的集合中…

zadd historical <timestamp> <dataValue>

..添加一些样本数据..

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

..使用开始/结束范围检索项目的子集…

zrangebyscore historical 2 5

..returns …

1) "data2"
2) "data3"
3) "data4"
4) "data5"

因此,在您的情况下,如果您想要检索最后一天的所有历史项目,请执行此操作…

zrangebyscore historical <currentTimeInMillis> <currentTimeInMillis - 86400000>

(编辑:鄂州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读