2013-08-02 23 views
0

對於Redis''分數'和'排名'功能的某些用例,有哪些(除了典型的「排行榜」遊戲示例?米試圖找出如何利用這些動態的新功能,我預計從使用傳統的關係型數據庫的Redis作爲持久性數據存儲移動。用例對於Redis''Score'和'Ranking'集合的功能

回答

1

zset是關鍵的唯一一種誰可以排序

舉例來說,您可以想象將某個特定文章的所有註釋關鍵標識置於zset中, 用戶將對每條評論進行上/下投票,這將改變評分值

後,當你需要畫的意見,你可以讓他們有序的,排在首位更好的意見(喜歡這裏)

使用ZREMRANGEBYSCORE你能想象刪除所有非常糟糕的評論的每天

但因爲每個Redis的類型,他們仍然是基本的,給你一個專用的用例是很難的,可以有一些: - )

5

ZSET s是偉大的選擇或基於分數的範圍,但分數可以是任何數值,如時間戳。

我們用redis存儲美國所有股票的每日股價。下面是eBay的一個例子...

ZADD key score member [score member ...] 
... 
ZADD stocks:ebay 1 30.39 2 32.70 3 31.25 4 31.75 5 29.12 6 29.87 7 29.93 

在這種情況下,score值通常將是長期的時間戳,與不談,如果我們想每天的價格在過去3天,我們根本就是兩個日期轉換爲時間戳和從使用時間戳範圍1 3 Redis的拉...

zrangebyscore stocks:ebay 1 3 

1) "30.39" 
2) "32.70" 
3) "31.25" 

查詢是非常快,很適合我們的需要。

希望它有幫助!

+0

zset不是二叉樹。它是字典和跳過列表的組合。算法的複雜性也不同。 –

+0

Redis源代碼:https://github.com/antirez/redis/blob/unstable/src/t_zset.c#L31 –

+2

這種方法可能存在一個缺陷:由於這是一個SET,當增加一個重複的股票價格它不會被儲存! 'ZADD股票:易趣8 30.39' – olegueret