我使用MongoDB连接并手头有一个Redis Elastic Cache。有一个Mongo集合,它基本上每周更改几次,它包含一个totalPoints
,我想对它们进行排序,甚至全部,这个集合有大量的记录。
所以,排序需要对DB做很多工作,我真的不能假装在查询中订购它们,所以我想要一个TOP列表。
我希望能够推动记录,无论是srtings还是对象,并将它们作为最大尺寸为n的桶进行排序。
答案 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以获取有关排序集的更多信息和命令。