按日期对存储在Redis中的数据进行版本控制的方法

时间:2015-03-24 17:15:49

标签: redis data-modeling key-value-store

在一个持久存在用户设置的fontSizefontColor的应用程序中,应该采用什么方法来建模时间序列? 为了详细说明,用户首次运行时设置FontSize和FontColour。然后,在他们使用应用程序的过程中,他们可能会修改这些属性。我想保留更改时间的时间戳,并且还能够通过此时间戳查询。我正在寻找在Redis中建模这些数据的不同方法?如果你可以指出任何数据建模文献,那也会有所帮助。

我的想法是使用Hashset和RPUSH将用户的最新设置添加到列表中。但是,当只有两个参数是userId和日期范围时,我在查询部分处于亏损状态。

1 个答案:

答案 0 :(得分:1)

通常当你想在Redis中存储时间序列时,你最好的选择是使用排序集与成员'分数设置为纪元值。这将通过使用Z[REV]RANGEBYSCORE为您提供简单的日期范围。

至于你的问题,虽然使用Hash来存储这些设置是完全可行的,你应该用保留另一个密钥的成本来抵消它(无论是内存占用还是其维护的额外读/写)需要)。如果您只是存储大小/颜色元组,我建议将其嵌入到已排序集的成员值中。例如,请考虑以下事项:

ZADD settings:9876 12345678 "12345678:12px:red"

上面演示了为(编写)时间戳12345678存储userId 9876的设置。成员的值是通过连接大小和颜色值以及时间戳组成的,以确保唯一性(请记住, [已排序] Set的成员必须是唯一的。)