如何高效聚合大型 Redis 有序集?

问题描述 投票:0回答:0

老实说,这更像是一个思想实验或算法挑战。
我很好奇我在 Redis 中创建的排行榜系统是否可以扩展到超过 1 个服务器节点的容量。

排行榜条目是存储在订单集(ZSET)中的

key
score
对。
条目被添加到从密钥的哈希码中选择的随机集中,有效地分片数据。

排行榜支持多种类型的查询,我能够在分片变体(可能不会在生产中使用)中有效地实现所有这些查询,除了一个。

我想实现迭代,返回给定

skip
limit
参数的有序条目。 首先,比如说,10 个元素很容易:我从每个分片中请求最大的 10 个条目,然后在排序时聚合集合,然后保留聚合集合中的前 10 个元素。 然而,随着我们想要使用
skip
进入排行榜,这变得非常低效。

问题:

  1. 有没有办法在对数时间内满足这个查询?
  2. 我可以在插入期间创建有助于满足此类查询的元数据吗?希望将插入时间从 O(1) 增加到 O(log n) max?
algorithm sorting redis
© www.soinside.com 2019 - 2024. All rights reserved.