Redis有序集合使用知识点
Redis数据结构:有序集合
数据结构
- 字符串
- 散列
- 列表
- 集合
- 有序集合
- HyperLogLog
- 位图
- 地理坐标
- 流
有序集合(sorted set)
-
添加或更新成员
1.zadd命令 格式:zadd key [NX|XX] [GT|LT] [CH] [INCR] score member [score member …]
返回添加成功的新成员数量,若执行的是更新成员分值返回0。zadd key score member [score member ...]
XX选项的作用是只更新不添加,执行后返回0。zadd key XX score member [score member ...]
NX选项的作用是只添加不更新,执行成功返回添加元素的个数。zadd key NX score member [score member ...]
CH选项的作用是返回被修改成员的数量而非添加成功的成员数量,被修改包括新添加。zadd key CH score member [score member ...]
-
移除指定成员
1.zrem命令 格式:zrem key member [member …]
返回被移除成员的数量,成员不存在于集合中时自动忽略。zrem key member [member ...]
2.zremrangebyrank命令 格式:zremrangebyrank key start stop
移除指定排名范围内的成员,返回被移除成员的数量,排名可使用正数排名或负数排名。zremrangebyrank key start stop
3.zremrangebyscore命令 格式:zremrangebyscore key min max
移除指定分值范围内的成员,返回被移除成员的数量。min或max前加“(”表示取开区间即不包含边界值。zremrangebyscore key min max
4.zremrangebylex命令 格式:zremrangebylex key min max
对于按照字典序排列的有序集合(即分值相同),移除指定字典序范围内的成员。返回被移除成员的数量,min、max的可取值包括:带“[”的值表示包含字典序边界,带“(”表示不包含字典序边界,“ ”表示无穷大,“-”表示无穷小。zremrangebylex key min max
-
弹出元素
1.zpopmax命令 格式:zpopmax key [count]
弹出分值最高的count个成员,分值最高有多个元素时弹出字典序最大的成员,若未指定count默认1个,执行完成后返回被弹出元素的成员和分值。zpopmax key [count]
2.zpopmin命令 格式:zpopmin key [count]
弹出分值最低的count个成员,分值最低有多个元素时弹出字典序最小的成员,若未指定count默认1个,执行完成后返回被弹出元素的成员和分值。zpopmin key [count]
3.bzpopmax命令 格式:bzpopmax key [key …] timeout
阻塞式的zpopmax命令,timeout为秒级精度。命令依次检查给定的有序集合,并从第一个非空集合弹出分值最大的元素,否则阻塞当前客户端直到有元素或超出超时时间返回nil。成功弹出元素时将返回一个列表,包含被弹出元素所在有序集合、成员以及分值。bzpopmax key [key ...] timeout
4.bzpopmin命令 格式:bzpopmin key [key …] timeout
阻塞式的zpopmin命令,timeout为秒级精度。命令依次检查给定的有序集合,并从第一个非空集合弹出分值最小元素,否则阻塞当前客户端直到有元素或超出超时时间返回nil。成功弹出元素时将返回一个列表,包含被弹出元素所在有序集合、成员以及分值。bzpopmin key [key ...] timeout
客户端2: -
获取成员分值
1.zscore命令 格式:zscore key member
获取给定成员的分值,集合不存在或者成员不存在时返回nil。zscore key member
-
对成员分值做运算
1.zincrby命令 格式:zincrby key increment member
执行完后返回当前成员分值,increment为正时自增,否则为自减;若键不存在或成员不存在则执行创建操作。zincrby key increment member
-
获取成员数量
1.zcard命令 格式:zcard key
返回集合包含的成员数量,集合不存在时返回0。zcard key
2.zcount命令 格式:zcount key min max
获取指定分值范围内的成员数量,min或max前加“(”表示取开区间即不包含边界值,值 inf表示无穷大,-inf表示无穷小。zcount key min max
3.zlexcount命令 格式:zlexcount key min max
对于按照字典序排列的有序集合(即分值相同),获取指定字典序范围内的成员数量,min、max的可取值包括:带“[”的值表示包含字典序边界,带“(”表示不包含字典序边界,“ ”表示无穷大,“-”表示无穷小。zlexcount key min max
-
获取成员排名
1.zrank命令 格式:zrank key member
返回成员的升序排列排名,集合或成员不存在时返回nil。zrank key member
2.zrevrank命令 格式:zrevrank key member
返回成员的降序排列排名,集合或成员不存在时返回nil。zrevrank key member
-
获取成员
1.zrange命令 格式:zrange key min max [BYSCORE|BYLEX] [REV] [LIMIT offset count] [WITHSCORES]
获取指定索引范围内的成员,按分值大小升序排列。WITHSCORES选项可在命令执行后返回分值,返回列表奇数位为成员,偶数位为对应分值。集合不存在时返回empty。zrange key min max [WITHSCORES]
2.zrevrange命令 格式:zrevrange key start stop [WITHSCORES]
获取指定索引范围内的成员,按分值大小降序排列。WITHSCORES选项可在命令执行后返回分值,返回列表奇数位为成员,偶数位为对应分值。集合不存在时返回empty。zrevrange key start stop [WITHSCORES]
3.zrangebyscore命令 格式:zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
获取指定分值范围内的成员,按分值大小升序排列。WITHSCORES选项可在命令执行后返回分值,返回列表奇数位为成员,偶数位为对应分值。集合不存在时返回empty。zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
[LIMIT offset count]选项的作用是限制返回的成员数量,offset指定需要跳过的成员数量,count执行最多返回成员的数量,count为负时取绝对值。
min或max前加“(”表示取开区间即不包含边界值,值 inf表示无穷大,-inf表示无穷小。
4.zrevrangebyscore命令 格式:zrevrangebyscore key max min [WITHSCORES] [LIMIT offset count]
获取指定分值范围内的成员,按分值大小降序排列,注意max min顺序。zrevrangebyscore key max min [WITHSCORES] [LIMIT offset count]
5.zrangebylex命令 格式:zrangebylex key min max [LIMIT offset count]
当成员分值相同时,获取指定字典序范围内成员,按字典序升序排列,min、max的可取值包括:带“[”的值表示包含字典序边界,带“(”表示不包含字典序边界,“ ”表示无穷大,“-”表示无穷小。zrangebylex key min max [LIMIT offset count]
6.zrevrangebylex命令 格式:zrevrangebylex key max min [LIMIT offset count]
当成员分值相同时,获取指定字典序范围内成员,按字典序降序排列,max、min的可取值包括:带“[”的值表示包含字典序边界,带“(”表示不包含字典序边界,“ ”表示无穷大,“-”表示无穷小。zrevrangebylex key max min [LIMIT offset count]
-
集合运算
1.并集
1)zunionstore命令 格式:zunionstore destination numkeys key [key …] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
numkeys为参与运算的集合数量,不对应时返回error,执行完后返回新集合的成员数量。并集得到的为成员集合,若参与运算的集合中有相同成员,则默认新集合的成员分值为原集合成员分数相加。zunionstore destination numkeys key [key ...]
AGGREGATE选项作用是指定使用的聚合函数,不指定时默认SUM。SUM指分值相加,MIN指取最小分值,MAX指取最大分值。zunionstore destination numkeys key [key ...] [AGGREGATE SUM|MIN|MAX]
WEIGHTS 选项作用是执行聚合前为每个集合分别设置一个权重,权重分别与集合中成员分值相乘得到新分值,然后执行聚合计算。
2)zunion命令 格式:zunion numkeys key [key …] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX] [WITHSCORES]
执行完成后返回新集合成员。zunion numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX] [WITHSCORES]
2.交集
1)zinterstore命令 格式:zinterstore destination numkeys key [key …] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
执行完后返回新集合的成员数量。zinterstore destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
2)zinter命令 格式:zinter numkeys key [key …] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX] [WITHSCORES]
执行完后返回新集合成员。zinter numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX] [WITHSCORES]
注意:
1.集合运算可以使用集合作为输入,默认情况下,集合成员的分值看做1参与运算,可使用WEIGHTS选项设置权重改变集合分值。 -
常见用法
1.排行榜
2.时间线
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanffbfj
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13