redis有序集合類型sort set

redis的數據類型之-有序集合redis

sort set和set類型同樣,也是string類型元素的集合,也沒有重複的元素,不一樣的是sort set每一個元素都會關聯一個,經過權值能夠有序的獲取集合中的元素sql

 

sort set的操做:數據庫

sort set類型適合場景:spa

   得到排名最前的5個熱門帖子信息(經過帖子回覆量標識熱門帖子),用sql的作法:select  *  from message order by backnum desc limit 5;可是當數據量足夠大時,好比有1億條數據,這一條sql下去就會耗費大量數據庫資源,查詢速度也很慢,即便在backnum(回覆量)上創建索引,也是很耗費數據庫資源的。若是用redis的sort set,就能夠很高效地實現這一功能,就像上一個帖子裏的set集合相似,能夠用set sort只保存回覆量最多的前五條。3d

假設有以下的帖子信息:      blog

 

 

用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是權值從小到大排序。rem

 

增長第六條帖子回覆,而後再按權值從大到小排序,刪除權值最小的帖子回覆,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:刪除指定的元素

相關文章
相關標籤/搜索