ZRANGEBYLEX (已弃用)
从 Redis 版本 6.2.0 开始,此命令被视为已弃用。
它可以替换为ZRANGE
使用BYLEX
参数。
ZRANGEBYLEX key min max [LIMIT offset count]
- 从以下位置开始可用:
- 2.8.9
- 时间复杂度:
- O(log(N)+M),其中 N 是排序集中的元素数,M 是返回的元素数。如果 M 是常数(例如,总是用 LIMIT 请求前 10 个元素),你可以把它看作是 O(log(N))。
- ACL 类别:
-
@read
,@sortedset
,@slow
,
当排序集中的所有元素都以相同的分数插入时,为了强制按字典顺序排序,此命令将返回排序集中位于key
,值介于min
和max
.
如果排序集中的元素具有不同的 score,则返回的元素是未指定的。
元素被视为从低到高排序,使用memcmp()
C 函数。如果公共部分相同,则较长的字符串被认为大于较短的字符串。
可选的LIMIT
参数只能用于获取匹配的
元素(类似于 SQL 中的 SELECT LIMIT offset、count)。否定的count
返回offset
.
请记住,如果offset
较大,则需要遍历offset
元素,这加起来可以是
O(N) 时间复杂度。
如何指定间隔
有效的 start 和 stop 必须以 或 开头,以便指定
如果范围项分别为 exclusive 或 inclusive。
start 和 stop 的特殊值 or 具有特殊的
表示或正无限和负无限字符串,因此对于
实例命令 ZRANGEBYLEX myzset - + 保证返回
排序集中的所有元素(如果所有元素都具有相同的
得分。(
[
+
-
字符串比较的详细信息
字符串作为字节的二进制数组进行比较。由于 ASCII 字符 set 时,这意味着通常这也具有比较 普通 ASCII 字符。然而,事实并非如此 如果使用非纯 ASCII 字符串(例如 UTF8 字符串)。
但是,用户可以对编码的字符串应用转换,以便 插入到有序集合中的元素的第一部分将与 用户对特定应用程序的要求。例如,如果我想 添加将以不区分大小写的方式进行比较的字符串,但我仍然 想在查询时检索真实情况,我可以在 以下方式:
ZADD autocomplete 0 foo:Foo 0 bar:BAR 0 zap:zap
由于每个元素中的第一个规范化部分(在冒号字符之前),我们强制进行给定的比较,但是在范围之后使用ZRANGEBYLEX
应用程序可以向用户显示字符串的第二部分,即冒号之后。
比较的二进制性质允许将排序集作为一般 purpose 索引,例如元素的第一部分可以是 64 位 大端数:因为大端数具有最高有效字节 在初始位置,二进制比较将匹配数字 数字比较。这可用于实现范围 对 64 位值的查询。如下例所示,在前 8 个字节之后 我们可以存储我们实际索引的元素的值。