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