redis有序集合型別sort set

weixin_30702413發表於2016-11-11

redis的資料型別之-有序集合

sort set和set型別一樣,也是string型別元素的集合,也沒有重複的元素,不同的是sort set每個元素都會關聯一個,通過權值可以有序的獲取集合中的元素

 

sort set的操作:

sort set型別適合場景:

   獲得排名最前的5個熱門帖子資訊(通過帖子回覆量標識熱門帖子),用sql的做法:select  *  from message order by backnum desc limit 5;但是當資料量足夠大時,比如有1億條資料,這一條sql下去就會耗費大量資料庫資源,查詢速度也很慢,即使在backnum(回覆量)上建立索引,也是很耗費資料庫資源的。如果用redis的sort set,就可以很高效地實現這一功能,就像上一個帖子裡的set集合類似,可以用set sort只儲存回覆量最多的前五條。

假設有如下的帖子資訊:      

 

 

用sort set 儲存帖子:切換到redis的執行目錄,後臺帶著配置檔案啟動redis服務,並啟動redis的操作終端:

 

執行命令select 1切換到第二個資料庫(其他的資料型別的例子都在這個資料庫裡)

1,zadd key score member命令:建立sort set排序集合,新增5條資料,hotmessage表示熱門帖子

 

2,zrevrange key start end 權值按從大到小排序,返回的是member列表,zrange key start end是權值從小到大排序。

 

增加第六條帖子回覆,然後再按權值從大到小排序,刪除權值最小的帖子回覆,sort set  hotmessage中保持回覆量最高的5條帖子

3,zremrangebyrank key min max:刪除集合中排名在指定區間的元素, 範圍0 0就表示第一個元素 ,

可以看到回覆量最小的id為14的帖子被刪除,id為16的帖子被新增進來,這樣集合裡一直儲存著回覆量最高的5個帖子。

 4,zcard key :返回集合中元素的個數

5,zscore key member:返回元素15對應的權值

6,zincrby key incr member:給元素為15的權值加100

7,zrem key  member:刪除指定的元素

 

轉載於:https://www.cnblogs.com/lihaoyang/p/6053492.html

相關文章