《玩轉Redis》系列文章 by zxiaofan主要講述Redis的基礎及中高級應用,穿插企業實戰案例。本文是《玩轉Redis》系列第【3】篇,最新系列文章請前往 公衆號 「zxiaofan」(點我點我)查看,或 百度搜索 「玩轉Redis zxiaofan」(點我點我)便可。
最新思惟導圖原圖可聯繫公衆號【zxiaofan】後臺獲取。數據結構
本文更適合用於複習總結,閱讀》實戰》閱讀 更有效果喲,主要包含如下內容:spa
Redis基礎數據結構及核心命令詳見上一篇文章《玩轉Redis-Redis基礎數據結構及核心命令》,百度或訂閱號搜索zxiaofan便可:code
文章思路:blog
異常統一說明:
error(out of range)導圖簡寫@EOOR;
負數偏移量表示倒數第幾,導圖簡寫@LBN(last but number);排序
ZSet主要適用於須要 排序(排行榜) 的場景,如:內存
概述:utf-8
命令 | 功能 | 參數 | ||
---|---|---|---|---|
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"
【ZRANK、ZREVRANK】查詢排名rem
【ZRANGE、ZREVRANGE】按排名查詢字符串
【ZRANGEBYLEX、ZREVRANGEBYLEX】按字典順序排序查詢get
【前提】對元素分數相同的集合排序;
LIMIT:相似於SQL的SELECT LIMIT offset, count。
示例場景
【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即時查看後續文章。
公衆號搜索 【zxiaofan】【點我】查閱最新系列文章。 Life is all about choices! 未來的你必定會感激如今拼命的本身!