我正在对数据流执行一些分析,并将结果发布到Redis通道上。消费者订阅这些渠道,并获得实时数据馈送。所有历史数据分析结果都将丢失。
现在我想在Redis中添加存储历史数据的功能,以便消费者可以查询这些历史数据(主要是按时间)。既然分析结果是按时间划分的,那么在Redis中存储结果的好设计是什么?
发布于 2013-06-18 02:36:08
使用redis sorted sets。
排序集根据“分数”存储数据,因此在您的示例中,只需使用millis中的时间戳;数据将自动排序,允许您使用开始/结束日期范围检索历史项目,以下是一个示例...
将项目添加到排序集...
zadd historical <timestamp> <dataValue>..add一些样本数据..
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项目子集...
zrangebyscore historical 2 5..returns...
1) "data2"
2) "data3"
3) "data4"
4) "data5"因此,在您的例子中,如果您想检索前一天的所有历史项目,只需执行以下操作...
zrangebyscore historical <currentTimeInMillis - 86400000> <currentTimeInMillis> https://stackoverflow.com/questions/17153154
复制相似问题