《玩转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! 未来的你必定会感激如今拼命的本身!