Redis之Zset
一、Redis之Zset簡介
1. 有序集合Zset是String類型的有序集合。
2. Zset中每個元素都會關聯一個double類型的分數值,redis通過分數值來為集合中所有成員進行從小到大排序。
3. Zset的成員是唯一的,但分數值可以重復。
4. Zset是通過hash表實現的,添加、刪除、查找的復雜度都是O(1)。
5. Zset最大的成員數量為232-1(40多億)個。
二、Redis之Zset命令行操作
Zadd:將一個或多個成員元素及其分數值加入到有序集當中。如果某個成員已經是有序集的成員,則更新這個成員的分數值,並通過重新插入這個成員元素,來保證該成員在正確的位置上。分數值可以是整數值或雙精度浮點數。
Zrange:返回有序集中指定區間內的成員。成員按分數值遞增排序,分數值相同的則按字典序來排序。查看Zset所有成員:zrange zset_name 0 -1。
Zrevrange:返回有序集中指定區間內的成員。成員按分數值遞減排序,分數值相同的則按字典序的逆序來排序。
Zrangebyscore:返回有序集中指定分數區間的成員列表,按分數值遞增排序,分數值相同的則按字典序來排序。默認使用閉區間。
Zrevrangebyscore:返回有序集中指定分數區間的成員列表,按分數值遞減排序,分數值相同的則按字典序的逆序來排序。註意,區間表示的時候大值在前,小值在後,默認使用閉區間。
-inf表示負無限,
Zrangebylex:通過字典區間返回有序集的成員列表。註意,只有有序集合中所有成員的分數值都相同的時候才會根據成員的字典序來排序,否則該命令返回的結果將是不可預知的。參數必須指明是開區間還是閉區間。+表示正無限,-表示負無限。
Zscan:叠代有序集合中的元素。
Zcard:返回指定有序集的元素數量。
Zcount:返回有序集中指定分數區間的成員數量。
Zlexcount:返回有序集中指定字典區間的成員數量。必須指定區間是開區間還是閉區間。
Zscore:返回有序集中指定成員的分數值。
Zrank:返回有序集中指定成員的排名,按分數值遞增排序。分數值最小者排名為
Zrevrank:返回有序集中指定成員的排名,按分數值遞減排序。分數值最大者排名為0。
Zrem:移除有序集中的一個或多個成員,忽略不存在的成員。
Zremrangebylex:移除有序集中指定字典區間的所有成員。註意,只有有序集合中所有成員的分數值都相同的時候才會根據成員的字典序來排序,否則該命令操作的結果將是不可預知的。
Zremrangebyrank:移除有序集中指定排名區間的所有成員。
Zremrangebyscore:移除有序集中指定分數值區間的所有成員。
Zincrby:對有序集中指定成員的分數值增加指定增量值。若為負數則做減法,若有序集不存在則先創建,若有序集中沒有對應成員則先添加,最後再操作。
下面對交集和並集的計算將使用以下兩個有序集合進行示例:
Zinterstore:計算給定一個或多個有序集的交集,並將其存儲到一個目的有序集中。默認情況下。
Zunionstore:計算給定一個或多個有序集的並集,並將其存儲到一個目的有序集中。
結果集中某個成員的分數值是所有給定集下該成員分數值之和。
Redis之Zset