Redis ZRANGE命令

返回存储在key处的有序集中的指定范围的元素。元素被认为是从最低分到最高分排序的。如果存在具有相等分数的元素则按字典顺序排序。

当您需要元素从高到低排序(对于具有相同得分的元素按字典顺序降序排列)时,请参见ZREVRANGE

startstop都是从零开始的索引,其中0是第一个元素,1是下一个元素,依此类推。它们也可以是负数,表示相对于已排序集合的末尾的偏移量,其中-1是已排序集合的最后一个元素,-2是倒数第二个元素,依此类推。

startstop是包含范围,因此例如ZRANGE myzset 0 1将同时返回有序集的第一个和第二个元素。

超出范围的索引不会产生错误。如果start大于排序集中的最大索引,或者start>stop,则返回一个空列表。如果stop大于排序集的末尾,则Redis会将其视为排序集中的最后一个元素。

可以传递WITHSCORES选项,以便将元素的分数与元素一起返回。返回的列表将包含value1,score1,...,valueN,scoreN而不是value1,...,valueN。客户端库可以自由返回更合适的数据类型(建议:返回(元素,分值)元组的数组)。

可用版本:从1.2.0开始可用
时间复杂度:O(log(N)*M),N表示有序集合中的元素数量,M表示返回的元素数量。

命令格式

ZRANGE key start stop [WITHSCORES]

示例

redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZADD myzset 3 "three"
(integer) 1
redis> 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"

返回值

指定范围内的元素列表(如果提供WITHSCORES选项,则连同其分数一起返回)。