我想将 Redis 与 Java Redisson 库一起使用。我的任务是根据某些项目的字段按排序顺序存储项目。主要有以下三个限制:
- 项目的排序字段可以经常更新。整个集合每秒最多可能有 25k 次更新。
- 我需要非常快(最多 5 毫秒)获得我收藏中每个项目的实际排名。
- 集合大小可能高达 2500 万个项目。
是否可以使用具有此类约束的 Redisson ScoredSortedSet.rank 方法,或者它不适合并且有更好的解决方案?
是的,ScoredSortedSet 一切皆有可能(它映射到 Redis 排序集),但我需要将我的字段转换为 score,以便 ScoredSortedSet 工作。Nikita 建议使用 RSortedSet 或 PriorityQueue,但是它们没有我需要的“rank”命令。
我的任务是根据某些项目的字段按排序顺序存储项目
您应该使用 RSortedSet 或 PriorityQueue 而不是 ScoredSortedSet。因为 ScoredSortedSet 使用数字来维护顺序,而 RSortedSet 或 PriorityQueue 使用 Comparator 用于按对象字段进行比较。