redis有序集合zset與普通集合set非常相似,是一個沒有重複元素的字串集合。
不同之處是有序集合的每個成員都關聯了一個評分(score),這個評分(score)被用來按照從最低分數
到最高分的方式排序集合中的成員。
集合的成員是唯一的,但是評分是可以重複的。
因為元素是有順序的,所以你可以很快的根據評分(score)或是次序(position)來取得一個範圍的元
素。
存取有序集合中的中間元素也是非常快的,因為你能夠使用有序集合作為一個沒有重複成員你的智慧列
表。
zadd:新增元素
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 值(可選)的有序集成員的清單
zrevrange:score降序,取得指定索引範圍的元素
傳回儲存在有序集合key 中的指定範圍的元素。傳回的元素可以認為是按score最高到最低
排列, 如果得分相同,將按字典排序。
下標參數 start 和 stop 都以 0 為底,也就是說,以 0 表示有序集第一個成員,以 1 表
示有序集第二個成員,以此類推。
你也可以使用負數下標,以 -1 表示最後一個成員, -2 表示倒數第二個成員,以此類推。
withscores:讓成員和它的score 值一併返回,返回列表以value1,score1, …, valueN,scoreN 的格式表示
zrangebyscore :依照score升序,傳回指定score範圍內的資料
zincrby:為指定元素的score加上指定的增量
zrem:刪除集合中多個元素
zremrangebyrank:根據索引範圍刪除元素
zremrangebyscore:根據score的範圍刪除元素
zcount:統計指定score範圍內元素的數量
zrank:依照score升序,傳回某個元素在集合中的排名
zrevrank:依照score降序,傳回某個元素在集合中的排名
zscore:傳回集合中指定元素的score
資料結構
SortedSet(zset)是redis提供的一個非常特別的資料結構,內部使用了2種資料結構。
1、hash表
類似java中的Map
位元元素定義的score,時間複雜度為O(1)
2、跳表
跳表(skiplist)是一個非常優秀的資料結構,實作簡單,插入、刪除、尋找的複雜度均為O(logN)。
類似java中的ConcurrentSkipListSet,依照score的值排序後產生的一個跳表,可以快速依照位置的順
序或score的順序查詢元素。
以上是Redis有序集合zset知識點有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!