《玩轉Redis》系列文章主要講述Redis的基礎及中高級應用,文章基於Redis5.0.4+。本文主要講述Redis的常見高級數據結構ZSet,《玩轉Redis-Redis高級數據結構及核心命令》相關操做命令爲方便對比分析,使用腦圖展現(若手機端查看圖片不方便,可搜索zxiaofan前往PC網頁端<CSDN、 開源中國 等平臺>查看)。
最新思惟導圖原圖可聯繫公衆號【zxiaofan】後臺獲取。git
本文更適合用於複習總結,閱讀》實戰》閱讀 更有效果喲,主要包含如下內容:github
Redis基礎數據結構及核心命令詳見上一篇文章《玩轉Redis-Redis基礎數據結構及核心命令》,百度或訂閱號搜索zxiaofan便可:bash
文章思路:微信
異常統一說明:
error(out of range)導圖簡寫@EOOR;
負數偏移量表示倒數第幾,導圖簡寫@LBN(last but number);數據結構
ZSet主要適用於須要 排序(排行榜) 的場景,如:ui
概述:spa
命令 | 功能 | 參數 |
---|---|---|
ZADD | 添加元素及分數到有序集合 | key [NX|XX] [CH] [INCR] score member [score member ...] |
ZINCRBY | 增長/減小分數 | key increment member |
ZCARD | 統計有序集合的元素個數 | key |
ZCOUNT | 統計指定【score區間】的元素個數 | key min max |
ZLEXCOUNT | 統計指定【元素區間】的元素個數 | key min max |
ZINTERSTORE | 計算指定有序集的【交集】並將結果存入目標集合 | destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] |
ZUNIONSTORE | 計算指定有序集的【並集】並將結果存入目標集合 | destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] |
# 【ZINCRBY】命令示例 @zxiaofan
127.0.0.1:6378> zincrby zset2 2 m
"2"
127.0.0.1:6378> zincrby zset2 2.2 m
"4.2000000000000002"
複製代碼
# 【ZUNIONSTORE】命令示例 @zxiaofan
127.0.0.1:6378> zadd zset1 1 a 2 b 2 c 3 d
(integer) 4
127.0.0.1:6378> zadd zset2 2 a 3 b
(integer) 2
127.0.0.1:6378> zunionstore outset 2 zset1 zset2 weights 1 3
(integer) 4
127.0.0.1:6378> zrange outset 0 -1 withscores
1) "c"
2) "2"
3) "d"
4) "3"
5) "a"
6) "7"
7) "b"
8) "11"
127.0.0.1:6378> zunionstore outset 2 zset1 zset2 weights 1 3.5
(integer) 4
127.0.0.1:6378> zrange outset 0 -1 withscores
1) "c"
2) "2"
3) "d"
4) "3"
5) "a"
6) "8"
7) "b"
8) "12.5"
127.0.0.1:6378> zunionstore outset 2 zset1 zset2 weights 2
(error) ERR syntax error
127.0.0.1:6378> zunionstore outset 2 zset1 zset2 weights 1 3 AGGREGATE MIN
(integer) 4
127.0.0.1:6378> zrange outset 0 -1 withscores
1) "a"
2) "1"
3) "b"
4) "2"
5) "c"
6) "2"
7) "d"
8) "3"
127.0.0.1:6378> zunionstore outset 2 zset1 zset2 weights 1 3 AGGREGATE MAX
(integer) 4
127.0.0.1:6378> zrange outset 0 -1 withscores
1) "c"
2) "2"
3) "d"
4) "3"
5) "a"
6) "6"
7) "b"
8) "9"
複製代碼
【ZSCORE】可用於判斷集合中是否存在某元素;.net
【ZRANK、ZREVRANK】查詢排名3d
【ZRANGE、ZREVRANGE】按排名查詢code
【ZRANGEBYLEX、ZREVRANGEBYLEX】按字典順序排序查詢
【ZRANGEBYSCORE、ZREVRANGEBYSCORE】按分數排序查詢
命令 | 功能 | 參數 |
---|---|---|
ZSCORE | 查詢指定元素的score | key member |
ZRANK | 查詢指定元素的【正序】排名 | key member |
ZREVRANK | 查詢指定元素的【逆序】排名 | key member |
ZRANGE | 查詢指定【排名區間】的元素(和分數) | key start stop [WITHSCORES] |
ZREVRANGE | 【逆序】查詢指定【排名區間】的元素(和分數) | 同【ZRANGE】 |
ZRANGEBYSCORE | 查詢指定【分數區間】的元素 | key min max [WITHSCORES] [LIMIT offset count] |
ZREVRANGEBYSCORE | 【逆序】查詢指定【分數區間】的元素 | key max min [WITHSCORES] [LIMIT offset count] |
ZSCAN | 分頁遍歷有序集合 | key cursor [MATCH pattern] [COUNT count] |
# 【ZRANGEBYLEX】命令示例 @zxiaofan
127.0.0.1:6378> zadd zset1 1 a 2 b 2 c 3 d 3 D 2 A 2 C 2 ba 2 bc 2 bA
(integer) 0
127.0.0.1:6378> zrangebylex zset1 [A [t
1) "a"
2) "A"
3) "C"
4) "b"
5) "bA"
6) "ba"
7) "bc"
8) "c"
9) "D"
10) "d"
127.0.0.1:6378> zrangebylex zset1 [a [t LIMIT 2 1
1) "C"
127.0.0.1:6378> zrangebylex zset1 [a [t LIMIT 2 -1
1) "C"
2) "b"
3) "bA"
4) "ba"
5) "bc"
6) "c"
7) "D"
8) "d"
複製代碼
# 【ZREVRANGEBYLEX】命令示例 @zxiaofan
127.0.0.1:6378> zadd zset1 1 a 2 b 2 c 3 d 3 D 2 A 2 C 2 ba 2 bc 2 bA
(integer) 0
127.0.0.1:6378> zrevrangebylex zset1 [t [A
1) "d"
2) "D"
3) "c"
4) "bc"
5) "ba"
6) "bA"
7) "b"
8) "C"
9) "A"
10) "a"
複製代碼
# 【ZREVRANGEBYSCORE】命令示例 @zxiaofan
127.0.0.1:6378> zadd zset2 1 a 2 b 3 c 3 A 3 Aa 4 B
(integer) 0
127.0.0.1:6378> zrangebyscore zset2 1 6
1) "a"
2) "F"
3) "b"
4) "g"
5) "A"
6) "Aa"
7) "c"
8) "B"
127.0.0.1:6378> zrevrangebyscore zset2 6 1
1) "B"
2) "c"
3) "Aa"
4) "A"
5) "g"
6) "b"
7) "F"
8) "a"
複製代碼
命令 | 功能 | 參數 |
---|---|---|
ZREM | 刪除指定元素 | key member [member ...] |
ZREMRANGEBYLEX | 刪除score徹底相同集合中指定區間的元素 | key min max |
ZREMRANGEBYRANK | 刪除指定排名區間的元素 | key start stop |
ZREMRANGEBYSCORE | 移除指定score的元素 | key min max |
ZPOPMAX | 【移除】並彈出count個分數最大的元素 | key [count] |
ZPOPMIN | 【移除】並彈出count個分數最小的元素 | key [count] |
BZPOPMAX | 【阻塞移除】並彈出count個分數最大的元素 | key [key ...] timeout |
BZPOPMIN | 【阻塞移除】並彈出count個分數最小的元素 | key [key ...] timeout |
#### 【ZREMRANGEBYRANK】命令示例 @zxiaofan
127.0.0.1:6378> zadd zset 1 a 2 b 2 c 3 d
(integer) 1
127.0.0.1:6378> zremrangebyrank zset 1 -3
(integer) 1
127.0.0.1:6378> zadd zset 1 a 2 b 2 c 3 d
(integer) 1
127.0.0.1:6378> zremrangebyrank zset -3 1
(integer) 1
複製代碼
#### 【ZREMRANGEBYRANK】命令示例 @zxiaofan
127.0.0.1:6378> del zset2
(integer) 1
127.0.0.1:6378> zadd zset2 3 a 3 b 3 B 3 c 3 A 3 Aa
(integer) 6
127.0.0.1:6378> zpopmin zset2 3
1) "A"
2) "3"
3) "Aa"
4) "3"
5) "B"
6) "3"
127.0.0.1:6378> zadd zset2 3 a 3 b 3 B 3 c 3 A 3 Aa
(integer) 3
127.0.0.1:6378> zpopmax zset2 3
1) "c"
2) "3"
3) "b"
4) "3"
5) "a"
6) "3"
127.0.0.1:6378> zpopmax zset5 3
(empty list or set)
複製代碼
《玩轉Redis-Redis高級數據結構及核心命令-ZSet》至此結束,後續將繼續分享Redis其餘數據結構及核心命令,歡迎訂閱@zxiaofan即時查看後續文章。
祝君好運!
Life is all about choices!
未來的你必定會感激如今拼命的本身!
【CSDN】【GitHub】【OSCHINA】【掘金】【微信公衆號】