首頁 >資料庫 >Redis >Redis有序集合zset知識點有哪些

Redis有序集合zset知識點有哪些

WBOY
WBOY轉載
2023-05-27 17:23:001188瀏覽

Redis有序集合zset知識點有哪些

redis有序集合zset與普通集合set非常相似,是一個沒有重複元素的字串集合。
不同之處是有序集合的每個成員都關聯了一個評分(score),這個評分(score)被用來按照從最低分數
到最高分的方式排序集合中的成員。
集合的成員是唯一的,但是評分是可以重複的。
因為元素是有順序的,所以你可以很快的根據評分(score)或是次序(position)來取得一個範圍的元
素。
存取有序集合中的中間元素也是非常快的,因為你能夠使用有序集合作為一個沒有重複成員你的智慧列
表。
zadd:新增元素
Redis有序集合zset知識點有哪些
zrange:score升序,取得指定索引範圍的元素
傳回儲存在有序集合key 中的指定範圍的元素。傳回的元素可以認為是按score從最低到最
高排列,如果得分相同,將按字典排序。
下標參數 start 和 stop 都以 0 為底,也就是說,以 0 表示有序集第一個成員,以 1 表
示有序集第二個成員,以此類推。
你也可以使用負數下標,以 -1 表示最後一個成員, -2 表示倒數第二個成員,以此類推。
zrange key 0 -1:可以取得所有元素
withscores:讓成員和它的score 值一併返回,返回列表以value1,score1, …, valueN,scoreN 的格式表示
可用版本:

= 1.2.0
時間複雜度:
O(log(N) M), N 為有序集的基數,而M 為結果集的基數。
傳回值:
指定區間內,帶有score 值(可選)的有序集成員的清單
Redis有序集合zset知識點有哪些
zrevrange:score降序,取得指定索引範圍的元素
傳回儲存在有序集合key 中的指定範圍的元素。傳回的元素可以認為是按score最高到最低
排列, 如果得分相同,將按字典排序。
下標參數 start 和 stop 都以 0 為底,也就是說,以 0 表示有序集第一個成員,以 1 表
示有序集第二個成員,以此類推。
你也可以使用負數下標,以 -1 表示最後一個成員, -2 表示倒數第二個成員,以此類推。
withscores:讓成員和它的score 值一併返回,返回列表以value1,score1, …, valueN,scoreN 的格式表示
Redis有序集合zset知識點有哪些

zrangebyscore :依照score升序,傳回指定score範圍內的資料
Redis有序集合zset知識點有哪些
zincrby:為指定元素的score加上指定的增量
Redis有序集合zset知識點有哪些zrem:刪除集合中多個元素
Redis有序集合zset知識點有哪些
zremrangebyrank:根據索引範圍刪除元素
Redis有序集合zset知識點有哪些
zremrangebyscore:根據score的範圍刪除元素
Redis有序集合zset知識點有哪些
zcount:統計指定score範圍內元素的數量
Redis有序集合zset知識點有哪些
zrank:依照score升序,傳回某個元素在集合中的排名

Redis有序集合zset知識點有哪些
zrevrank:依照score降序,傳回某個元素在集合中的排名
Redis有序集合zset知識點有哪些
zscore:傳回集合中指定元素的score

Redis有序集合zset知識點有哪些
資料結構
SortedSet(zset)是redis提供的一個非常特別的資料結構,內部使用了2種資料結構。
1、hash表
類似java中的Map,key為集合中的元素,value為元素對應的score,可以用來快速定
位元元素定義的score,時間複雜度為O(1)
2、跳表
跳表(skiplist)是一個非常優秀的資料結構,實作簡單,插入、刪除、尋找的複雜度均為O(logN)。
類似java中的ConcurrentSkipListSet,依照score的值排序後產生的一個跳表,可以快速依照位置的順
序或score的順序查詢元素。

以上是Redis有序集合zset知識點有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除