我想维护一个我正在执行的python项目中的前100名用户(按得分)的列表。我认为redis sorted sets
可以达到上述目的。
但是,我不想保留曾经得分的每个用户的记录。那将是一个相当大的sorted set
,我只希望按综合得分排在前100名用户之列。
仍然在redis的范围内,有没有办法使用sorted sets
来实现这一目标?
我知道在使用列表的情况下可以执行lpush
和ltrim
,但这是一种更简单的情况,不需要按score
进行排序。那么我该怎么做呢?
我知道这个问题也可以在redis sorted sets
的范围之外回答,但是redis sorted sets
是一个很好的工具,因此,举例说明使用它们的答案将非常适合我我试图实现。
先谢谢了。
答案 0 :(得分:2)
您可以这样做,但是需要进行一些设置才能正确管理Top-100排序集。
该算法在https://www.cs.berkeley.edu/~satishr/cs270/sp11/rough-notes/Streaming-two.pdf中进行了说明(请参阅第一种算法)。我已经将它作为Redis模块(topk-https://github.com/RedisLabsModules/topk)实现了一段时间,但是它也应该在不依靠模块API的情况下也是可行的。
答案 1 :(得分:0)