redis有序集合系列之二

21 篇文章 0 订阅

目录

 

zrange

zrevrange

zrangebyscore

zrevrangebyscore


zrange

1.语法
zrange key start stop [withscores]

2.解析
返回有序集key中,指定区间内的成员
其中成员的位置按score值递增来排序
具有相同score值的成员按字典序来排列
如果你需要成员按score值递增来排序,请使用zrevrange命令
下标参数start和stop都以0位底,也就是说,以0表示有序集第一个成员,依次类推
也可以使用负数作为下标,以-1表示最后一个成员,以此类推
超出范围的下标并不会引起错误,比如说,当start的值比有序集的最大下标还要大,
或是start>stop时,zrange命令指示简单地返回一个空的列表.
另一方面,假如stop参数的值比有序集的最大下标还要大,那么redis将stop当做最大的下标处理。

可以通过使用withscores选项,来让成员和它的score值一并返回,返回列表以value1,score1...的格式来表示
客户端库可能会返回一些更复杂的数据类型,比如数组、元组等。
3.返回值
指定区间内,带有score值(可选)的有序集成员的列表
4.例子

zadd salary 10000 jack 20000 sunny 25000 sony 
zrange salary 0 -1 withscores
zrange salary 1 2 withscores
zrange salary 0 2000 withscores
zrange salary 2000 3000 withscores


zrevrange

1.语法
zrevrange key start stop [withscores]

2.解析
返回有序集key中,指定区间内的成员
其中成员的位置按score值递减来排列。具有相同score值的成员按字典序的逆序排列
除了成员按score值递减的次序排列这一点外,zrevrange命令的其他方面和zrange命令一样
3.返回值
指定区间内,带有score值的有序集成员的列表
4.例子

zrange salary 0 -1 withscores
zrevrange salary 0 -1 withscores


zrangebyscore

1.语法
zrangebyscore key min max [withscores][limit offset count]
2.解析
返回有序集key中,所有score值介于min和max之间的成员。有序集成员按score值递增次序排列
具有相同score值的成员按字典序来排列。
可选的limit参数指定返回结果的数量以及区间,注意当offset很大时,定位offset的操作可能需要遍历整个有序集
此过程最坏复杂度为O(N)时间
可选的withscores参数决定结果集是单单返回有序集的成员,还是将有序集成员及其score值一起返回
该选项2.0版本起可用
区间及无限
min和max可以是-inf和+inf,这样一来,你就可以在不知道有序集的最低和最高score值的情况下
使用zrangrbyscore这类命令
默认情况下,区间的取值使用闭区间,你也可以通过参数前增加(符号来使用可选的开区间
3.返回值
指定区间内,带有 score 值(可选)的有序集成员的列表。
4.例子

zrangebyscore zset (1 5
返回所有符合条件1<score<=5的成员 而
zrangebyscore zset (5 (10
则返回所有符合条件5<score<10的成员
返回值:
指定区间内,带有score值的有序集成员的列表。
例子:
zadd salary 2500 jack
zadd salary 5000 tom
zadd salary 12000 peter
zrangebyscore salary -inf +inf   //显示整个有序集
zrangebyscore salary -inf +inf withscores //显示整个有序集及成员的score值

zrangebyscore salary -inf 5000 withscores //显示工资<=5000的所有成员

zrangebyscore salary (5000 40000

zrevrangebyscore

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

2.解析
返回有序集key中,score值介于max和min之间的所有的成员.有序集成员按score值递减的次序排列。
具有相同score值的成员按字典序的逆序排列
除了成员按score值递减的次序排列这一点外,zrevrangebyscore命令的其他方面和zrangebyscore命令一样
3.返回值
指定区间内,带有score值的有序集成员的列表
4.例子

zadd salary 10010 jack
zadd salary 5000 tom
zadd salary 7500 peter
zadd salary 3500 joe
zrevrangebyscore salary +inf -inf  //逆序排列所有成员
zrevrangebyscore salary 10000 2000 //逆序排列薪水介于10000和2000之间的成员

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值