redis中的有序集:在得分关系的情况下随机输出

时间:2012-11-08 14:12:49

标签: redis sortedset

我在Redis中有一个有序集(我实际上使用的是python客户端https://github.com/andymccurdy/redis-py),例如:

zadd myset 1 key1
zadd myset 1 key2
zadd myset 1 key3
zadd myset 0 key4

请注意,3个键具有相同的分数。

使用ZRANGE,我想得到前2个条目(即最低分)。 “key4”将始终是第一个结果,因为它具有较低的值,但我希望在tie:key1,key2,key3之间随机选择第二个返回值。 ZRANGE实际上按照索引的顺序返回键:“keys1”总是我的第二个结果:

zrange myset 0 -1 WITHSCORES
1) "key4"
2) "0"
3) "key1"
4) "1"
5) "key2"
6) "1"
7) "key3"
8) "1"

任何想法? 谢谢, 学家

正如Linus G Thiel所要求的,以下是有关我的用例的更多详细信息:

我想使用zsets来执行一个简单的排名系统。我有一个项目列表,每个项目都有一个表示项目相关性的分数。对于我的系统的冷启动,大多数分数将是相同的(即0),并且我想在具有相同分数的项目中随机选择。否则,我将始终返回完全相同的词典顺序,这将在系统中引入偏差。

您建议的解决方案,使用每个重复分数值的一个特定集合将起作用。我试试看。

谢谢,

0 个答案:

没有答案