008_Redis的ZSet数据类型
1. zset是string類型的有序集合, 不允許有重復的成員。每個成員都會關聯一個double類型的分數, Redis正是通過這個分數值, 來為集合中的成員進行從小到大排序的。集合中的成員是唯一的, 但分數(score)卻可以重復。集合是通過哈希表實現的, 所以添加、刪除、查找的復雜度都是O(1)。集合中最大的成員數為 (4294967295, 每個集合可存儲40多億個成員)。
2. 向有序集合添加一個或多個成員
2.1. 語法: zadd key score1 member1 [score2 member2]。
2.2. zadd命令用于將一個或多個成員及其分數加入到集合中。如果某個成員已經是集合的成員了, 那么就更新這個成員的分數值, 并且根據這個分數值, 來保證該成員在正確的位置上。如果有序集合key不存在, 則創建該key的有序集并執行zadd操作。當key存在, 但不是有序集類型時, 返回一個錯誤。
2.3. 返回被成功添加的新成員的數量, 不包括那些被更新的、已經存在的成員。
2.4. 實例
3. 通過索引區間返回有序集合指定區間內的成員
3.1. 語法: zrange key start stop [withscores]。
3.1. zrange命令返回有集合指定區間內的成員。其中成員的位置按分數值遞增(從小到大)來排序。具有相同分數值的成員按字典序(lexicographical order)來排列。下標參數start和stop都以0為底, 也就是說, 以0表示集合的第一個成員, 以1表示集合的第二個成員, 以此類推。你也可以使用負數下標, 以-1表示最后一個成員, -2表示倒數第二個成員, 以此類推。
3.1. 返回指定區間內, 帶有分數值(可選)的成員列表。
3.4. 實例
4. 通過索引區間返回有序集合指定區間內的成員(分數從高到低)
4.1. 語法: zrevrange key start stop [withscores]。
4.2. zrevrange命令返回集合指定區間內的成員。其中成員的位置按分數值遞減(從大到小)來排列。具有相同分數值的成員按字典序的逆序(reverse lexicographical order)排列。
4.3. 返回指定區間內, 帶有分數值(可選)的成員列表。
4.4. 實例
5. 獲取有序集合的成員數
5.1. 語法: zcard key。
5.2. zcard命令用于計算集合中成員的數量。
5.3. 當key存在且是有序集類型時, 返回集合中成員的數量。當key不存在時, 返回0。
5.4. 實例
6. 返回有序集合中指定成員的索引
6.1. 語法: zrank key member。
6.2. zrank返回集合中指定成員的排名(下標)。其中集合的成員按分數值遞增(從小到大)順序排列。
6.3. 如果成員是集合key的成員, 返回member的排名(下標)。如果成員不是集合key的成員, 返回nil。
6.4. 實例
7. 返回有序集中成員的分數值
7.1. 語法: zscore key member。
7.2. zscore命令返回集合中, 成員的分數值。如果成員不是集合key的成員或key不存在, 返回nil。
7.3. 返回成員的分數值, 以字符串形式表示。
7.4. 實例
8. 返回有序集合中指定成員的排名(從大到小)
8.1. 語法: zrevrank key member。
8.2. zrevrank命令返回集合中指定成員的排名(下標)。其中集合中成員按分數值遞減(從大到小)排序。排名以0為底, 也就是說, 分數值最大的成員排名為0。
8.3. 如果成員是有序集key的成員, 返回成員的排名。如果成員不是有序集key的成員, 返回nil。
8.4. 實例
9. 計算在有序集合中指定區間分數的成員數
9.1. 語法: zcount key min max。
9.2. zcount命令用于計算有序集合中指定分數區間的成員數量。
9.3. 返回分數值在min和max之間(默認包括score值等于min和max)的成員的數量。
9.4. 實例
10. 有序集合中對指定成員的分數加上增量increment
10.1. 語法: zincrby key increment member。
10.2. zincrby命令對有序集合中指定成員的分數加上增量increment。可以通過傳遞一個負數值increment, 讓分數減去相應的值。當key不存在時, 則創建該key的有序集并執行zadd操作。當member不是key的成員時, 直接給該key的有序集合中添加值。當key不是有序集類型時, 返回一個錯誤。
10.3. 返回member成員的新分數值, 以字符串形式表示。
10.4. 實例
11.?將所有給定的有序集的交集存儲在新的有序集合中
11.1. 語法: zinterstore destination numkeys key [key ...]。
11.2. zinterstore命令將一個或多個有序集的交集儲存到destination中, 其中給定key的數量必須是numkeys參數指定的數量。默認情況下, 結果集中某個成員的分數值是所有給定集和中該成員分數值之和。
11.3. 返回保存到目標結果集的成員數量。
11.4. 實例
12. 將所有給定的有序集的并集存儲在新的有序集合中
12.1. 語法: zunionstore destination numkeys key [key ...]。
12.2. zunionstore命令將一個或多個有序集的并集儲存到destination中, 其中給定key的數量必須是numkeys參數指定的數量。默認情況下, 結果集中某個成員的分數值是所有給定集和中該成員分數值之和。
12.3. 返回保存到destination的結果集的成員數量。
12.4. 實例
13. 移除有序集合中的一個或多個成員
13.1. 語法: zrem key member [member ...]。
13.2. zrem命令用于移除有序集中的一個或多個成員, 不存在的成員將被忽略。當key存在但不是有序集類型時, 返回一個錯誤。
13.3. 返回被成功移除的成員的數量, 不包括被忽略的成員。
13.4. 實例
14. 移除有序集合中給定的排名區間的所有成員
14.1. 語法: zremrangebyrank key start stop。
14.2. zremrangebyrank命令用于移除有序集中, 指定排名(下標)區間內的所有成員。
14.3. 返回被移除成員的數量。
14.4. 實例
15. 移除有序集合中給定的分數區間的所有成員
15.1. 語法: zremrangebyscore key min max。
15.2. zremrangebyscore命令用于移除有序集中, 指定分數(score)區間內的所有成員。
15.3. 返回被移除成員的數量。
15.4. 實例
總結
以上是生活随笔為你收集整理的008_Redis的ZSet数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 007_Redis的Set数据类型
- 下一篇: linux cmake编译源码,linu