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