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

Approaches to versioning data stored in Redis by date

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

我的想法是使用哈希集并将用户的最新设置 RPUSH 到列表中。但是当只有两个参数是userId和date range时,我在查询部分不知所措。

通常,当您想在 Redis 中存储时间序列时,最好的办法是使用 Sorted Sets,并将成员的分数设置为纪元值。这将通过使用 Z[REV]RANGEBYSCORE.

为您提供微不足道的日期范围

至于你的问题,虽然使用哈希来存储这些设置是完全可行的,但你应该用保留另一个密钥的成本来抵消它(无论是内存占用还是额外的 read/writes 它的维护需要)。如果您只是想存储 size/color 元组,我建议将其嵌入到 Sorted Set 的成员值中。例如,请考虑以下内容:

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

上面演示了为(组成的)时间戳 12345678 存储 userId 9876 的设置。成员的值由大小和颜色值与时间戳连接而成,以确保唯一性(记住 [Sorted ] Set 的成员必须是唯一的)。