是否可以使用 Redisson lib 中的 ScoredSortedSet 在具有大量写入的环境中获取实际项目排名?

Is it ok to use ScoredSortedSet from Redisson lib to get actual item rank within environment with extensive writes?

我想将 Redis 与 java Redis 子库一起使用。我的任务是根据某些项目的字段按排序顺序存储项目。主要有三个限制条件:

  1. 项目的排序字段可以经常更新。整个 collection.
  2. 每秒最多可能有 25k 次更新
  3. 我需要非常快地(最多 5 毫秒)获得我 collection 中每个项目的实际排名。
  4. collection 大小最多可达 2500 万个项目。

在这样的约束下使用Redissons ScoredSortedSet.rank方法是否可以,还是不合适有更好的解决方案?

I have a task to store items in a sorted order, based on some item's field

您应该使用 RSortedSet 或 PriorityQueue 而不是 ScoredSortedSet。因为 ScoredSortedSet 使用数字来维护顺序,而 RSortedSet 或 PriorityQueue 使用用于按对象字段进行比较的 Comparator。

是的,ScoredSortedSet 一切皆有可能(它映射到 Redis Sorted Set),但我需要将我的字段转换为分数,以便 ScoredSortedSet 工作。 Nikita 建议使用 RSortedSet 或 PriorityQueue,但是它们没有我需要的 'rank' 命令。