2012-01-07 92 views
3

我在Redis的有序集合包含像下面这些值:相交的有序集合在Redis的

ZADD ranking1 0 Kyle Neath 
ZADD ranking1 1 Cameron McEfee 
ZADD ranking1 2 Ben Bliekamp 
ZADD ranking1 3 Justin Palmer 

ZADD ranking2 0 Cameron McEfee 
ZADD ranking2 1 Justin Palmer 
ZADD ranking2 2 Kyle Neath 
ZADD ranking2 3 Ben Bliekamp 

...等等。

有没有办法为某个人提取分数并以列表形式返回?例如,拨打Kyle Neath将返回[0, 2]。我是否应该用不同的方式建模来实现相同的目的?

回答

3

随着数据的当前布局,实现该列表的唯一方法是使用每个排名一个zscore

除了这个排序集,你可以在每个排名中每个人都有一个散列位置。内存使用率不会高很多,因为字符串被重用并且哈希值很便宜。 例如:

HMSET "Kyle Neath" ranking1 0 ranking2 2 
HMSET "Cameron McEfee" ranking1 1 ranking2 0 
HMSET "Ben Bliekamp" ranking1 2 ranking2 3 
HMSET "Justin Palmer" ranking1 3 ranking2 1 

并获取列表

HVALS "Kyle Neath" 

但你必须确保在应用程序代码的哈希值进行排序套的一致性。

+2

恕我直言,这是正确的做法(每人有一个额外的散列) – antirez 2012-01-08 02:14:40