2013-10-07 80 views
1

我試圖實現排名排行榜,數據在Redis中作爲排序集存儲。我想弄清楚的部分是如何實現高密度(即「1-2-2-3」)排名,其中,例如,用戶均位居正是如此:使用Redis Sorted Sets實現密集排序

Score User Rank 
--------------------- 
22  user1 1 
21  user2 2 
21  user3 2 
21  user4 2 
20  user5 3 
20  user6 3 

這樣的回答:https://stackoverflow.com/a/14944280/2177幾乎是我所需要的,但它相當於「1-2-2-4」的排名,這是不希望我的應用程序,如:

1-2-2-4 Ranking 
Score User Rank 
--------------------- 
22  user1 1 
21  user2 2 
21  user3 2 
21  user4 2 
20  user5 5 
20  user6 5 

這似乎將是一個相當常見的情況。有沒有人在Redis中成功實現過這樣的事情?如果是,如何實現?

回答

1

我最終做的是添加第二個排序集,其中只包含唯一分數,然後我可以在密集排名中查詢他們各自的位置。

+2

你是怎麼實現這個的? 獨特的分數集有價值[22,21,20],這意味着獨特的分數20的排名是3,但你會需要它是5.我很困惑。我在這裏錯過了什麼嗎? –

+1

@RegMem我認爲你的意思是'CompetitionRanking'而不是'DenseRanking' – Shouvik

+0

@Shouvik - 更新了標題,謝謝指出 –