【问题标题】:Redis - Seeking Data Modeling SuggestionsRedis - 寻求数据建模建议
【发布时间】:2015-11-15 05:40:32
【问题描述】:

我正在使用 Redis 存储来自许多模拟传感器的数据日志。我的目标是根据日志时间戳对数据进行排序,并从特定日期时间范围内提取数据。我的原始数据模型是使用传感器名称作为键,并为每个时间戳设置一个哈希值,并将值附加到哈希键上。

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

当前建模的问题是它不允许对时间戳进行排序,或者我认为因为我尝试过的所有方法都失败了。

是否有人能够建议一个允许对数据范围进行排序和提取的数据模型,或者建议在上面的数据模型中允许这样做的正确排序参数。

【问题讨论】:

  • 以您给我的视角再次查看已排序的集合使它们成为显而易见的选择。 - 谢谢汤姆!

标签: sorting redis data-modeling


【解决方案1】:

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

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

您也可以使用列表来获得 O(1) 插入。检索特定条目的读取时间为 O(N),但获取最新条目的时间为 O(1)。

【讨论】:

  • 我们发现了一个小警告。如果传感器最终多次读取相同的值(成员)(这不仅仅是非常轻微),则之前的分数(时间戳)将被覆盖。
  • 这就是为什么你存储一个组合而不是实际值 - 例如 zadd SensorA 20110111172900 20110111172900:25
  • 你是对的,在兴奋中,我们完全忽略了这个细节。我们按照您的建议实施,效果很好。非常感谢你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-22
  • 2010-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-28
相关资源
最近更新 更多