在一个持久存在用户设置的fontSize
和fontColor
的应用程序中,应该采用什么方法来建模时间序列?
为了详细说明,用户首次运行时设置FontSize和FontColour。然后,在他们使用应用程序的过程中,他们可能会修改这些属性。我想保留更改时间的时间戳,并且还能够通过此时间戳查询。我正在寻找在Redis中建模这些数据的不同方法?如果你可以指出任何数据建模文献,那也会有所帮助。
我的想法是使用Hashset和RPUSH将用户的最新设置添加到列表中。但是,当只有两个参数是userId和日期范围时,我在查询部分处于亏损状态。
答案 0 :(得分:1)
通常当你想在Redis中存储时间序列时,你最好的选择是使用排序集与成员'分数设置为纪元值。这将通过使用Z[REV]RANGEBYSCORE
为您提供简单的日期范围。
至于你的问题,虽然使用Hash来存储这些设置是完全可行的,你应该用保留另一个密钥的成本来抵消它(无论是内存占用还是其维护的额外读/写)需要)。如果您只是存储大小/颜色元组,我建议将其嵌入到已排序集的成员值中。例如,请考虑以下事项:
ZADD settings:9876 12345678 "12345678:12px:red"
上面演示了为(编写)时间戳12345678存储userId 9876的设置。成员的值是通过连接大小和颜色值以及时间戳组成的,以确保唯一性(请记住, [已排序] Set的成员必须是唯一的。)