2011-01-11 47 views
3

我使用Redis来存储来自许多模拟传感器的数据日志。我的目标是根据日志时间戳对数据进行排序,并从特定的日期时间范围中提取数据。我的原始数据模型是使用传感器名称作为关键字,并为每个时间戳和附加到hashkey的值设置一个散列。Redis - 寻求数据建模建议

所以。如果我有SensorA,SensorB和SensorC,则执行Keys *将返回1. SensorA,2. SensorB和3. SensorC。做hget SensorB 20110111172900会返回,比方说25.

当前建模的问题是,它不允许排序时间戳,或者所以我认为,因为我所有尝试失败。

有人能够建议一个数据模型,允许排序和提取数据范围,或建议适当的排序参数,这将允许在上面的数据模型中。

+0

再次看着你已经给我的视觉排序集,使他们明显的选择。 - 谢谢汤姆! – 2011-01-12 13:05:28

回答

6

在这种情况下,排序集合可能比散列更合适。

该值将是时间戳和传感器值的组合。得分将是时间戳。使用ZRANGEBYSCORE检索值。读取和写入都从O(1)到O(Log(N)),但您可以返回一系列值。

您也可以使用列表来获取O(1)插入。读取O(N)用于检索特定条目,但获取最新条目将是O(1)。

+0

虽然我们发现了一个小小的警告。如果传感器结束多次读取相同的值(成员)(超过非常轻微),则先前的得分(时间戳)将被覆盖。 – 2011-01-12 17:19:18