有没有办法用Redis保持前N名单?

时间:2015-07-30 00:38:45

标签: redis

我使用MongoDB连接并手头有一个Redis Elastic Cache。有一个Mongo集合,它基本上每周更改几次,它包含一个totalPoints,我想对它们进行排序,甚至全部,这个集合有大量的记录。

所以,排序需要对DB做很多工作,我真的不能假装在查询中订购它们,所以我想要一个TOP列表。

我希望能够推动记录,无论是srtings还是对象,并将它们作为最大尺寸为n的桶进行排序。

1 个答案:

答案 0 :(得分:4)

您可以在此处使用anitrez描述的模式:http://oldblog.antirez.com/post/take-advantage-of-redis-adding-it-to-your-stack.html

基本上只需使用有序集合,并将得分值作为totalPoints添加。

zadd toplist totalPoints <collectionItemIdentifier>

然后以

取得前100名
ZREVRANGE toplist 0 99

您可以定期使用ZREMRANGEBYSCORE来检查尺寸(不应要求),并删除分数在一定范围内的元素。

检查http://redis.io/commands#sorted_set以获取有关排序集的更多信息和命令。