Redis Zrangebylex 命令

Redis 有序集合(sorted set)

Redis Zrangebylex 命令用于在有序集合(sorted set)中按照字典序(lexicographical order)获取指定范围内的成员。这个命令主要用于那些成员是字符串的有序集合。

语法

redis Zrange 命令基本语法如下:

ZRANGEBYLEX key min max [LIMIT offset count]
  • key:键名,指定要操作的有序集合。
  • minmax:字典序范围的边界值。这两个值可以是负无穷大(-)或正无穷大(+),也可以是具体的字符串值。字符串值表示有序集合中成员的字典序边界。
  • LIMIT offset count:可选参数,用于限制返回结果的数量。offset 表示跳过前面多少个元素,count 表示返回多少个元素。

命令行为:

  • 如果 min+min 之后的第一个元素,max-max 之前的最后一个元素,则返回键 key 存储的有序集合中的所有元素。
  • 如果 minmax 都是具体的字符串,则返回有序集合中字典序在 minmax 之间的所有元素。
  • 如果 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)进行范围查询。这使得它非常适合用于需要按字母顺序检索数据的场景。

Redis 有序集合(sorted set)