redis有序集合系列之三

本文详细介绍了Redis中有序集合的各种操作,包括zrank、zrevrank、zrem、zremrangebyrank等命令的语法、解析及应用实例,帮助读者深入理解并掌握Redis有序集合的管理和使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 

zrank

zrevrank

zrem

zremrangebyrank

zremrangebyscore

zrangebylex

zlexcount

zremrangebylex


zrank

1.语法
zrank key member

2.解析
返回有序集key中成员member的排名.其中有序集成员按score值递增顺序排列。
排名以0为底。也就是说,score值最小的成员排名为0
使用zrevrange命令可以获得成员按score值递减排列
3.返回值
如果member是有序集key的成员,返回member的排名.如果member不是有序集key的成员,返回nil
4.例子

zadd salary 10010 jack  2000 tom 3000 sunny
zrange salary 0 -1 withscores
zrank salary jack


zrevrank

1.语法
zrevrank key member

2.解析
返回有序集key中成员member的排名.其中有序集成员按score值递减顺序排列。
排名以0为底。也就是说,score值最大的成员排名为0
使用zrank命令可以获得成员按score值递增排列
3.返回值
如果member是有序集key的成员,返回member的排名。如果member不是有序集key的成员,返回nil
4.例子

zrange salary 0 -1 withscores
zrevrank salary sunny
zrevrank salary  jack


zrem

1.语法
zrem  key member [member]

2.解析
移除有序集key中的一个或多个成员,不存在的成员将被忽略。
当key存在但不是有序集类型时,返回一个错误
2.4之前每次只能删除一个元素
3.返回值
被成功移除的成员的数量,不包括被忽略的成员
4.例子

zrange salary  0 -1 withscores
zrem salary tom
zrange salary 0 -1 withscores
zrem salary sunny jack   //移除多个元素
zrange salary 0 -1 withscores
#移除不存在的元素
zrem salary sony


zremrangebyrank

1.语法
zremrangebyrank key start stop

2.解析
移除有序集key中,指定排名区间内的所有成员。
区间分别以下标参数start和stop指出,包含start和stop在内。
下标参数start和stop都以0为底,也就是说,以0表示有序集第一个成员。-1表示最后一个成员
3.返回值
被移除成员的数量。
4.例子

zadd salary 2000 jack 5000 tom 3500 peter
zremrangebyrank salary 0 1
zrange salary 0 -1 withscores


zremrangebyscore

1.语法
zremrangebyscore key min max

2.解析
移除有序集key中,所有score值介于min和max之间的成员。
2.16开始,score值等于min或max的成员也可以不包括在内
3.返回值
被移除成员的数量。
4.例子

zrange salary 0 -1 withscores
zremrangebyscore salary 1500 3500
zrange salary 0 -1 withscores


zrangebylex

1.语法
zrangebylex key min max [limit offset count]

2.解析
当有序集合的所有成员都具有相同的分值时,有序集合的元素会根据成员的字典序来进行排列
而这个明亮则可以返回给定的有序集合键key中,值介于min和max之间的成员
如果有序集合里面的成员带有不同的分值,那么命令返回的结果是未指定的。
命令会使用c语言的memcmp()函数,对集合中的每个成员进行逐个字节的对比
并按照从低到高的顺序,返回排序后的集合成员。如果两个字符串有一部分内容是相同的话
那么命令会认为较长的字符串比较短的字符串要大。
可选的limit offset count参数用于获取指定范围内的匹配元素。需要注意的是,如果offset参数的值非常大的话
那么命令在返回结果之前,需要先遍历至offset所指定的位置,这个操作会为命令加上最多O(N)复杂度
如何指定范围区间
合法的min和max参数必须包含(或者[,其中(表示开区间(指定的值不会包含在内),而[则表示闭区间(指定的值会包含在范围内)
特殊值+和-在min参数以及max参数中具有特殊的意义,其中+表示正无限,而-表示负无限
因此,像一个所有成员的分值都相同的有序集合发送zrangebylex <zset> - +,命令将返回
有序集合中的所有元素。
3.返回值
数组回复:一个列表,列表里面包含了有序集合在指定范围内的成员。
4.例子

zadd lan 0 a 0 b 0 c 0 d 0 e 0 f 0 g
zrangebylex lan - [c  
zrangebylex lan - (c
zrangelex lan [aaa (g


zlexcount

1.语法
zlexcount key min max

2.解析
对于一个所有成员的分值都相同的有序集合键key来说,这个命令会返回该集合中,成员介于min和max范围内的元素数量
这个命令的min参数和max参数的意义和zrangebylex命令的min参数和max参数的意义一样
3.返回值
整数回复:指定范围内的元素数量
4.例子

zadd lan 0 a 0 b 0 c 0 d 0 e
zadd lan 0 f 0 g
zlexcount lan - +
zlexcount lan [b [f


zremrangebylex

1.语法
zremrangebylex key min max

2.解析
对于一个所有成员的分值都相同的有序集合键key来说,这个命令会返回该集合中,成员介于min和max范围内的元素数量
这个命令的min参数和max参数的意义和zrangebylex命令的min参数和max参数的意义一样
3.返回值
整数回复:被移除的元素数量
4.例子

zadd lan 0 aaa 0 b 0 c 0 d 0 e
zadd lan 0 foo 0 zap 0 zip 0 ALPHA 0 alpha
zrange lan 0 -1

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值