我正在对数据流执行一些分析并在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>
原文地址:https://www.jb51.cc/mssql/80002.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。