Redis ZRANGEBYSCORE 命令返回有序集合 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)顺序排列。
可选参数 LIMIT 指定返回结果的数量及区间(就像SQL中的 SELECT LIMIT offset, count ),注意当 offset 很大时,定位 offset 的操作可能需要遍历整个有序集,此过程最坏复杂度为 O(N) 时间。
可选参数 WITHSCORES 决定结果集是单单返回有序集的成员,还是将有序集成员及其 score 值一起返回。该选项自 Redis 2.0 版本起可用。
默认情况下,区间的取值使用闭区间 (小于等于或大于等于),通过给参数前增加 (符号来使用可选的开区间,也就是小于或大于。示例如下:
ZRANGEBYSCORE zset (1 10 #表示 1<score<=10ZRANGEBYSCORE zset (5 (20 #1<score<20
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
127.0.0.1:6379> ZADD salary 3000 jack 3500 helen 2880 john 4000 simith 6000 rose(integer) 5127.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 11) "jack"2) "3000"127.0.0.1:6379> ZRANGEBYSCORE salary 1000 4000 WITHSCORES limit 1 4 #偏移量为1,数量为41) "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"
