Redis - 寻求数据建模建议

3
我正在使用Redis存储来自许多模拟传感器的数据日志。我的目标是按照日志时间戳对数据进行排序,并从特定的日期时间范围中提取数据。我的原始数据模型是使用传感器名称作为键,并为每个时间戳使用哈希,将值附加到哈希键上。
因此,如果我有SensorA、SensorB和SensorC,执行Keys *将返回1. SensorA、2. SensorB和3. SensorC。执行hget SensorB 20110111172900将返回25。
当前建模的问题在于它不允许按时间戳排序,或者至少我认为如此,因为我尝试过的所有方法都失败了。
是否有人能够建议一种数据模型,可以允许排序和提取数据范围,或者建议适当的排序参数,以允许在上述数据模型中实现这一点。

重新审视已排序集合,结合您给我的观点,它们显然是最佳选择。- 谢谢Tom! - Daniel Tardif
1个回答

6
在这种情况下,排序集合可能比哈希更适合使用。值将是时间戳和传感器值的组合。分数将是时间戳。可以使用ZRANGEBYSCORE检索值。读和写都从O(1)变为O(Log(N)), 但您获得了返回一系列值的能力。
您还可以使用列表来实现O(1)插入。检索特定条目的读取将是O(N),但获取最近的条目将是O(1)。

我们发现一个小问题。如果传感器多次读取相同的值(成员),之前的分数(时间戳)将被覆盖。 - Daniel Tardif
1
这就是为什么你存储的是组合而不是实际值 - 例如 zadd SensorA 20110111172900 20110111172900:25 - Tom Clarkson
你说得对,在兴奋中我们完全忽略了这些细节。我们按照你的建议实施了,效果非常好。非常感谢你。 - Daniel Tardif

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接