返回存储在的有序集合中指定范围的元素
元素的顺序是从最低分到最高分。具有相同分数的元素按字典顺序排列。可选REV参数颠倒顺序,因此元素从最高分到最低分排序,并且分数关系通过反向词典排序来解决。可选LIMIT参数可用于从匹配元素中获取子范围(类似于SQL 中的SELECT LIMIT 偏移量、计数)。负数
默认情况下,该命令执行索引范围查询。的
索引也可以是负数,表示从排序集的末尾开始的偏移量,是排序集-1的最后一个元素、-2倒数第二个元素,依此类推。
超出范围的索引不会产生错误。
如果
如果
当BYSCORE提供该选项时,该命令的行为类似于ZRANGEBYSCORE并返回排序集中的元素范围,其分数等于或介于
默认情况下,由
例如:
ZRANGE zset (1 5 BYSCORE
将使用1 < score <= 5while返回所有元素:
ZRANGE zset (5 (10 BYSCORE
将返回带有5 < score < 10(5 和 10 除外)的所有元素。
使用该BYLEX选项时,该命令的行为类似于ZRANGEBYLEX,并返回排序集中的元素范围
请注意,字典顺序依赖于具有相同分数的所有元素。当元素具有不同的分数时,回复是未指定的。
有效
+or-
字符串作为二进制字节数组进行比较。由于 ASCII 字符集的指定方式,这意味着通常这也具有以明显的字典方式比较普通 ASCII 字符的效果。但是,如果使用非纯 ASCII 字符串(例如 utf8 字符串),则情况并非如此。
但是,用户可以对编码字符串应用转换,以便插入到排序集中的元素的第一部分将按照用户对特定应用程序的要求进行比较。例如,如果我想添加会以不区分大小写的方式进行比较的字符串,但我在查询时仍然想检索真实的大小写,我可以通过以下方式添加字符串:
ZADD autocomplete 0 foo:Foo 0 bar:BAR 0 zap:zap 由于每个元素中的第一个标准化部分(在冒号字符之前),我们强制进行给定的比较。但是,在使用 查询范围后ZRANGE ... BYLEX,应用程序可以向用户显示字符串的第二部分,在冒号之后。
比较的二进制特性允许使用排序集作为通用索引,例如,元素的第一部分可以是 64 位大端数。由于 big-endian 数字在初始位置具有最高有效字节,因此二进制比较将匹配数字的数字比较。这可用于对 64 位值实施范围查询。如下例所示,在前 8 个字节之后,我们可以存储我们正在索引的元素的值。
返回值 数组回复:指定范围内的元素列表(如果WITHSCORES给出了选项,则可以选择带有它们的分数)。
历史
>= 6.2:增加了REV,BYSCORE,BYLEX和LIMIT选项。
例子
Redis> ZADD myzset 1“一”
(整数)1
Redis> ZADD myzset 2“二”
(整数)1
Redis> ZADD myzset 3“三”
(整数)1
Redis> ZRANGE myzset 0 -1
1)“一个”
2)“两个”
3)“三个”
Redis> ZRANGE myzset 2 3
1)“三个”
Redis> ZRANGE myzset -2 -1
1)“两个”
2)“三个”
Redis>
以下示例WITHSCORES显示了该命令如何始终返回一个数组,但这次使用element_1、score_1、element_2、score_2、...、element_N、score_N 填充。
Redis> ZRANGE myzset 0 1 WITHSCORES
1)“一个”
2)“1”
3)“两个”
4)“2”
Redis>
这个例子展示了如何查询按分数排序的集合,不包括值1,直到无穷大,只返回结果的第二个元素:
Redis> ZRANGE myzset (1 +inf BYSCORE LIMIT 1 1
1)“三个”
Redis>