Redis探索之旅(10)- Redis資料結構之有序集合
在前面的部落格文章中,已經簡單的講述了Redis的常用資料型別資料結構,今天我們來對最後一個進行簡單說明,因為自身用的不多,因此這裡簡單說明一下。
有序集合,顧名思義,就是集合時有序的,預設情況下,怎麼才能保證有序呢?集合怎麼知道哪個元素在前,哪個元素在後呢?當然這個判定標準需要我們告訴Redis集合。怎麼去告訴Redis呢?很簡單,我們在日常開發過程中,其實對於兩個元素的排序,無非是根據這兩個元素的一些特性(屬性)的值的大小進行比較,小的在前,大的在後。這裡的有序集合也是採用同樣的處理辦法,就是給儲存到集合中的每個元素賦予一個值,根據這個值的大小比較來決定元素在集合中的順序。
首先我們來看看怎麼往有序集合中新增元素,新增元素分為一次新增一個,或者一次新增多個,寫法如下所示:
從截圖中我們通過兩種方式向sortedset有序集合中插入了若干元素,並且通過zange方法檢視了相應的元素。(zrange後面帶的數字其實是元素的順序標識,因為有序集合時有序的,預設情況下按照從小到大進行排序,那麼元素的順序應該是orange -> apple -> pear -> banana, 這時候如果對元素按照順序標識,那麼第一個元素是0, 第二個元素是1,依次類推...所以zrange sortedset 2 4 返回的就是pear和banana了,這裡只要記住zrange是以元素位置下表作為查詢引數就可以啦^_^,如果想按照從大到小的順序檢視,那麼就要使用zrevrange了...)
如果想知道有序集合中有多少元素?可以使用“zcard key名”。如果你不是簡簡單單想知道整個集合的元素數,而是想知道位於某個區間範圍的元素個數,那麼需要藉助另一個指令zcount,使用方法:zcount key名 min值 max值
可見,值位於2~4之間(閉包)的有三個元素,他們分別為apple、pear和banana。
如果你覺得資料有問題,也可以檢視你懷疑的那個元素的情況,使用zscore來檢視某個元素對應的值,如下所示:
如果你覺得這個值有問題,那麼你可以通過下面的方式修改元素的值,或者通過zadd重新設定元素的值。
這裡,我們通過zincrby命令給orange這個元素的值增加了5,從返回結果中可以看出,該元素對應的值已經變為6了。
按照上面更新之後,按理說元素的位置應該發生了變化,orange權值最大,應該在最後,apple最小,應該在最前,為了驗證,我們通過zrank和zrange來分別看看:
從返回結果看,順序的確發生了變化,orange變成了最後,且orange的位置索引為3。(-1表示右邊倒數第一個元素)
除了上面的所有操作以外,緊接著的集合內操作可能就是刪除了,這時候就要用ZREM及相關的其他一些根據排名、分數或者字典來進行刪除的命令了。
而其他的三個類似的刪除命令在名稱上很相近,都是ZREMRANGEBY***,只不過刪除的策略不同,所以名稱上有所不同,三個命令分別為ZREMRANGEBYLEX、ZREMRANGEBYRANK和ZREMRANGEBYSCORE。
至此,大多數關於有序集合的命令都簡單介紹完了,關於集合間的操作這裡就不做介紹了,有需要的請自行檢視官網。
相關文章
- 深入剖析Redis系列(八) - Redis資料結構之集合Redis資料結構
- Redis資料結構之整數集合Redis資料結構
- redis有序集合Redis
- Redis五大資料型別之 Zset(有序集合)Redis大資料資料型別
- Redis有序集合原理Redis
- Redis有序集合物件Redis物件
- Redis有序集合操作Redis
- Redis有序集合命令Redis
- 圖解Redis之資料結構篇——整數集合圖解Redis資料結構
- Redis有序集合詳解Redis
- Redis有序集合學習Redis
- Redis物件——有序集合(ZSet)Redis物件
- Redis 資料結構 之 SDSRedis資料結構
- redis 有序集合(sorted set)(redis學習七)Redis
- 《Redis實戰》筆記-Redis的有序集合Redis筆記
- Redis雜湊與有序集合Redis
- redis學習之有序集合Redis
- php操作redis,有序集合zsetPHPRedis
- Redis基本資料結構之ZSetRedis資料結構
- 深入剖析Redis系列(五) - Redis資料結構之字串Redis資料結構字串
- Redis 入門指南九:Redis 有序集合(sorted set)Redis
- Redis資料結構Redis資料結構
- Redis 資料結構Redis資料結構
- Redis資料結構—整數集合與壓縮列表Redis資料結構
- 深入剖析Redis系列(六) - Redis資料結構之雜湊Redis資料結構
- Redis 有序集合(zset)命令詳解Redis
- 【Redis實戰】有序集合型別Redis型別
- Redis基礎資料結構之字串Redis資料結構字串
- Redis基礎資料結構之MapRedis資料結構
- Redis基礎資料結構之SkipListRedis資料結構
- Redis 設計與實現 10:五大資料型別之有序集合Redis大資料資料型別
- Redis基礎資料結構之連結串列Redis資料結構
- redis的資料結構Redis資料結構
- 《閒扯Redis十一》Redis 有序集合物件底層實現Redis物件
- Redis資料結構三之壓縮列表Redis資料結構
- redis有序集合實現實時排名Redis
- Redis(二)--- Redis的底層資料結構Redis資料結構
- Python&Redis 無序集合set、有序集合zset操作PythonRedis
- 【Redis 系列】redis 學習三,redis 資料結構之 string 和 list 基本使用及熟悉Redis資料結構