目录
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之间的成员