Sorting Redis-寻找数据建模建议
我使用Redis来存储来自许多模拟传感器的数据日志。我的目标是根据日志时间戳对数据进行排序,并从特定的日期时间范围提取数据。我最初的数据模型是使用传感器名称作为密钥,并为每个时间戳和附加到hashkey的值设置一个哈希 所以。如果我有传感器a、传感器B和传感器C,执行a键*将返回1。传感器A,2。传感器B和3。传感器C。做hget SensorB 20110111172900会返回,比如说25 当前建模的问题是它不允许按时间戳排序,或者我认为是这样,因为我所尝试的都失败了Sorting Redis-寻找数据建模建议,sorting,redis,data-modeling,Sorting,Redis,Data Modeling,我使用Redis来存储来自许多模拟传感器的数据日志。我的目标是根据日志时间戳对数据进行排序,并从特定的日期时间范围提取数据。我最初的数据模型是使用传感器名称作为密钥,并为每个时间戳和附加到hashkey的值设置一个哈希 所以。如果我有传感器a、传感器B和传感器C,执行a键*将返回1。传感器A,2。传感器B和3。传感器C。做hget SensorB 20110111172900会返回,比如说25 当前建模的问题是它不允许按时间戳排序,或者我认为是这样,因为我所尝试的都失败了 是否有人能够建议一个允
是否有人能够建议一个允许对数据范围进行排序和提取的数据模型,或者建议在上面的数据模型中使用适当的排序参数。在这种情况下,排序集可能比哈希更合适 该值将是时间戳和传感器值的组合。分数就是时间戳。使用ZRANGEBYSCORE检索值。读和写都是从O(1)到O(Log(N)),但是您可以获得返回一系列值的能力
您还可以使用列表来获得O(1)插入。读取对于检索特定条目而言是O(N),但获取最新条目则是O(1)。再次以您给我的视角查看排序集,使它们成为明显的选择。-谢谢你,汤姆!不过我们发现了一个小小的警告。如果传感器多次读取相同的值(成员)(这是非常轻微的),则先前的分数(时间戳)将被覆盖。这就是为什么存储组合而不是实际值-例如zadd SensorA 20110111172900 20110111172900:25您是对的,在激励中,我们完全忽略了这些细节。我们按照您的建议实施,效果非常好。非常感谢你。