Redis ZRANGEBYSCORE 命令返回有序集合 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)顺序排列。
可选参数 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"