2012-01-07 80 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