《玩转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】【掘金】【微信公众号】