Redis ZRANGE 命令返回有序集中,指定区间内的成员,其中成员的按分数值递增(从小到大)来排序,具有相同分数值的成员按字典序(lexicographical order )来排列。
如果你需要成员按值递减(从大到小)来排列,请使用 ZREVRANGE
命令。
下标参数 start
和 stop
都以 0
为底,也就是说,以 0
表示有序集第一个成员,以 1
表示有序集第二个成员,以此类推。
你也可以使用负数下标,以 -1
表示最后一个成员, -2
表示倒数第二个成员,以此类推。
start
和 stop
都是包含在内的区间,因此例如 ZRANGE myzset 0 1
将会返回有序集合的第一个和第二个元素。
超出范围的索引不会产生错误。 如果 start
参数的值大于有序集合中的最大索引,或者 start > stop
,将会返回一个空列表。 如果 stop
的值大于有序集合的末尾,Redis 会将其视为有序集合的最后一个元素。
可以传递 WITHSCORES
选项,以便将元素的分数与元素一起返回。这样返回的列表将包含 value1,score1,...,valueN,scoreN
,而不是 value1,...,valueN
。 客户端类库可以自由地返回更合适的数据类型(建议:具有值和得分的数组或元组)。
*语法
redis ZRANGE 命令基本语法如下:
redis 127.0.0.1:6379> ZRANGE key start stop [WITHSCORES]
*返回值
数组: 给定范围内的元素列表(如果指定了WITHSCORES
选项,将同时返回它们的得分)。
*例子
redis>
ZADD myzset 1 "one"
(integer) 1redis> ZADD myzset 2 "two"
(integer) 1redis> ZADD myzset 3 "three"
(integer) 1redis> ZRANGE myzset 0 -1
1) "one" 2) "two" 3) "three"redis> ZRANGE myzset 2 3
1) "three"redis> ZRANGE myzset -2 -1
1) "two" 2) "three"
以下例子使用 WITHSCORES
展示了该命令如何始终返回一个数组,但这次填充了element_1, score_1, element_2, score_2, …, element_N, score_N。
redis>
ZRANGE myzset 0 1 WITHSCORES
1) "one" 2) "1" 3) "two" 4) "2"