Redis Zrangebylex 命令
Redis Zrangebylex 命令用于在有序集合(sorted set)中按照字典序(lexicographical order)获取指定范围内的成员。这个命令主要用于那些成员是字符串的有序集合。
语法
redis Zrange 命令基本语法如下:
ZRANGEBYLEX key min max [LIMIT offset count]
key
:键名,指定要操作的有序集合。min
和max
:字典序范围的边界值。这两个值可以是负无穷大(-
)或正无穷大(+
),也可以是具体的字符串值。字符串值表示有序集合中成员的字典序边界。LIMIT offset count
:可选参数,用于限制返回结果的数量。offset
表示跳过前面多少个元素,count
表示返回多少个元素。
命令行为:
- 如果
min
是+
或min
之后的第一个元素,max
是-
或max
之前的最后一个元素,则返回键key
存储的有序集合中的所有元素。 - 如果
min
和max
都是具体的字符串,则返回有序集合中字典序在min
和max
之间的所有元素。 - 如果
min
是+
或min
之后的第一个元素,而max
是具体的字符串,则返回有序集合中字典序大于或等于max
的所有元素。 - 如果
min
是具体的字符串,而max
是-
或max
之前的最后一个元素,则返回有序集合中字典序小于或等于min
的所有元素。
可用版本
>= 2.8.9
返回值
指定区间内的元素列表。
实例
redis 127.0.0.1:6379> ZADD myzset 0 a 0 b 0 c 0 d 0 e 0 f 0 g (integer) 7 redis 127.0.0.1:6379> ZRANGEBYLEX myzset - [c 1) "a" 2) "b" 3) "c" redis 127.0.0.1:6379> ZRANGEBYLEX myzset - (c 1) "a" 2) "b" redis 127.0.0.1:6379> ZRANGEBYLEX myzset [aaa (g 1) "b" 2) "c" 3) "d" 4) "e" 5) "f" redis>
假设我们有一个有序集合 myzset,包含以下元素:
ZADD myzset 0 a 0 b 0 c 0 d 0 e 0 f 0 g
获取字典序在 a 和 f 之间的所有元素:
ZRANGEBYLEX myzset a f
获取字典序大于 b 且小于 f 的所有元素:
ZRANGEBYLEX myzset [b (f
获取字典序在 a 和 f 之间的元素,但只返回前 3 个:
ZRANGEBYLEX myzset a f LIMIT 0 3
请注意,ZRANGEBYLEX 命令是按照字典序进行范围查询的,而不是按照分数(score)进行范围查询。这使得它非常适合用于需要按字母顺序检索数据的场景。