将 List<T> 存储在 StackExchange.Redis 中的最佳实践

Best practice to store List<T> in StackExchange.Redis

我正在尝试找到针对 ReportingDate 键存储一组 List 对象的最佳实践(有效)方法。

列表可以序列化为 Xml/DataContract 或 ProtoBuf....

鉴于某些数据可能很大(对于那部分密钥):

Tnx

听起来您想要一个有序集 - 请参阅 https://redis.io/topics/data-types#sorted-sets。您可以使用日期作为值,也许是纪元时间(因为它需要是一个数字)。 SE.Redis 支持您希望获得值范围的所有操作(位置范围 - 前 20 条记录等;或基于值的绝对范围 - 两个日期之间以同一单位表示的所有项目)。查看以“SortedSet...”开头的方法。

该值可以是二进制的,所以 protobuf-net 没问题(您可以分别序列化每个日期的值)。只需传递一个 byte[] 作为值。需要单独处理序列化到redis库。

至于换出数据:没有。 Redis 具有基于日期的过期时间,但没有冷热存储。它要么存在,要么不存在。您可以使用计划任务根据日期范围清除或移动数据,再次使用任何 Z* (redis) 或 SortedSet* (SE.Redis) 方法。

有关 Z* 操作的完整列表,请参阅:https://redis.io/commands#sorted_set。它们都应该在 SE.Redis.

中可用