Redis ZRANGEBYSCORE令
可选参数 LIMIT 指定返回结果的数量及区间(就像SQL中的 SELECT LIMIT offset, count ),注意当 offset 很大时,定位 offset 的操作可能需要遍历整个有序集,此过程最坏复杂度为 O(N) 时间。
可选参数 WITHSCORES 决定结果集是单单返回有序集的成员,还是将有序集成员及其 score 值一起返回。该选项自 Redis 2.0 版本起可用。
无限区间
min 和 max 也可以是 -inf 和 +inf ,这样一来,您就可以在不知道有序集的和最高 score 值的情况下,使用 ZRANGEBYSCORE 令。默认情况下,区间的取值使用闭区间 (小于等于或大于等于),通过给参数前增加
(
符号来使用可选的开区间,也就是小于或大于。示例如下:ZRANGEBYSCORE zset (1 10 #表示 1<score<=10
ZRANGEBYSCORE zset (5 (20 #1<score<20
可用版本
ZRANGEBYSCORE 令可用版本:>= 1.2.0
语法
Redis ZRANGEBYSCORE令的基本语法如下:
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
返回值
指定区间内,带有 score 值(可选)的有序集成员的列表。令演示
127.0.0.1:6379> ZADD salary 3000 jack 3500 helen 2880 john 4000 simith 6000 rose
(integer) 5
127.0.0.1:6379> ZRANGE salary 0 4 #浏览所有元素
1) "john"
2) "jack"
3) "helen"
4) "simith"
5) "rose"
127.0.0.1:6379> ZRANGEBYSCORE salary 1000 2500 WITHSCORES limit 1 1 #限制返回元素的数量
(empty list or set)
127.0.0.1:6379> ZRANGEBYSCORE salary 1000 4000 WITHSCORES limit 1 1
1) "jack"
2) "3000"
127.0.0.1:6379> ZRANGEBYSCORE salary 1000 4000 WITHSCORES limit 1 4 #偏移量为1,数量为4
1) "jack"
2) "3000"
3) "helen"
4) "3500"
5) "simith"
6) "4000"
127.0.0.1:6379> ZRANGEBYSCORE salary 1000 (4000 WITHSCORES limit 1 4 #添加( 变为开区间
1) "jack"
2) "3000"
3) "helen"
4) "3500"