redis有序集合類型sort set


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:刪除指定的元素

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM