Redis命令拾遺五(有序集合)

本文版權歸博客園和做者吳雙本人共同全部,博客園蝸牛NoSql系列分享 http://www.cnblogs.com/tdws/tag/NoSql/
Sorted Set

有序集合—Sorted Set是我最後要分享的一種Redis數據類型,有序集合在集合的基礎上,爲每個元素,關聯了一個分數的概念(Score)。不要忘了,集合中元素是惟一的,可是有序集合中的Score是能夠相同的。web

下面經過命令的介紹,來幫助你們認識有序集合。微信

添加命令,ZADD  key score member score member....注意分數是在前面喲。而且成功後返回成功數量。若是你同時添加兩個相同元素,而且分數不一樣,那麼被存入的,是後者。spa

獲取元素,ZRANGE key start stop.在有序集合中,元素以score由小到大排序,而且索引從0開始。獲取所有,0 -1(最後面的元素索引是-1),和列表同樣,start索引要大於stop索引才能獲取到元素。另外還有一個可選參數,WithScores,會相應的輸出元素的分數。3d

另外還有ZRevRange,按照score從大到小的順序輸出。blog

Score支持雙精度浮點數。排序

ZRangeByScore和ZRevRangeByScore。前者按照分數由小到大,而且給定分數範圍,withScores是可選參數。limit也是可選參數,索引從0開始。後者則是由大到小。索引

另外須要特別注意的一點是,分數的篩選支持正無窮,和不包含‘(’符號。咱們看到結果中,並無95分的LeiJun。而且到正無窮。內存

ZSCORE,獲取指定key中指定元素的score。get

 ZInctBy ,爲指定鍵下的指定Member,增長指定的 分數。咱們給LeiJun增長了10分,返回105了。博客

 

 ZCARD,獲取鍵下元素個數。咱們看到有七個學生哈。

 ZCOUNT ,獲取制定分數區間,元素個數,注意分數篩選,也支持‘(’不包含選擇符。

 ZREM,移除元素。

ZRemRangeByScore,按照分數範圍刪除多個元素。

ZRemRangeByRank,按照正常由小到大的排名順序刪除,又有兩個分數低的被刪掉了。

 ZRANK,獲取指定元素的排名。從0開始。ZRevRank則相反

 不足之處,歡迎補充和交流。

 

 

 

最後再簡單總結有序集合和列表。有序集合和列表都是有序的,而且能夠按照範圍來獲取元素。
列表經過鏈表來實現,獲取靠近兩端的數據速度很快,當數據量比較大的時候,獲取中間的元素相應會變慢,好比你微信的朋友圈,大多令人看的都是這幾天,最多也不過近幾天的數據。中間元素不多會訪問。
而有序集合使用跳躍表和散列表實現,其時間複雜度O(log(N)),因此取中間元素也很快。而且有序集合能夠經過更改分數,來調整元素的位置。有序集合也更耗費內存。
相關文章
相關標籤/搜索