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,值介于minmax.

如果排序集中的元素具有不同的 score,则返回的元素是未指定的。

元素被视为从低到高排序,使用memcmp()C 函数。如果公共部分相同,则较长的字符串被认为大于较短的字符串。

可选的LIMIT参数只能用于获取匹配的 元素(类似于 SQL 中的 SELECT LIMIT offset、count)。否定的count返回offset. 请记住,如果offset较大,则需要遍历offset元素,这加起来可以是 O(N) 时间复杂度。

如何指定间隔

有效的 startstop 必须以 或 开头,以便指定 如果范围项分别为 exclusive 或 inclusive。 startstop 的特殊值 or 具有特殊的 表示或正无限和负无限字符串,因此对于 实例命令 ZRANGEBYLEX myzset - + 保证返回 排序集中的所有元素(如果所有元素都具有相同的 得分。([+-

字符串比较的详细信息

字符串作为字节的二进制数组进行比较。由于 ASCII 字符 set 时,这意味着通常这也具有比较 普通 ASCII 字符。然而,事实并非如此 如果使用非纯 ASCII 字符串(例如 UTF8 字符串)。

但是,用户可以对编码的字符串应用转换,以便 插入到有序集合中的元素的第一部分将与 用户对特定应用程序的要求。例如,如果我想 添加将以不区分大小写的方式进行比较的字符串,但我仍然 想在查询时检索真实情况,我可以在 以下方式:

ZADD autocomplete 0 foo:Foo 0 bar:BAR 0 zap:zap

由于每个元素中的第一个规范化部分(在冒号字符之前),我们强制进行给定的比较,但是在范围之后使用ZRANGEBYLEX应用程序可以向用户显示字符串的第二部分,即冒号之后。

比较的二进制性质允许将排序集作为一般 purpose 索引,例如元素的第一部分可以是 64 位 大端数:因为大端数具有最高有效字节 在初始位置,二进制比较将匹配数字 数字比较。这可用于实现范围 对 64 位值的查询。如下例所示,在前 8 个字节之后 我们可以存储我们实际索引的元素的值。

例子

ZADD myzset 0 a 0 b 0 c 0 d 0 e 0 f 0 g ZRANGEBYLEX myzset - [c ZRANGEBYLEX myzset - (c ZRANGEBYLEX myzset [aaa (g

RESP2/RESP3 回复

Array reply:指定分数范围内的元素列表。
为本页评分
返回顶部 ↑