*Redis ZRANGEBYLEX 命令

返回 Sorted Set 中,member 在指定字典序范围内的成员。要求所有 member 的 score 相同。


*语法

ZRANGEBYLEX key min max [LIMIT offset count]

*参数说明

参数 类型 必填 说明
key String Sorted Set 键名
min String 最小 member,[ 包含,( 不包含,- 负无穷
max String 最大 member,[ 包含,( 不包含,+ 正无穷
LIMIT Integer offset 和 count 分页

*返回值

条件 返回值
有匹配 member 数组
无匹配/key 不存在 空数组 []

*时间复杂度

O(log(N)+M),N 为成员数量,M 为返回数量。


*示例

> ZADD myzset 0 apple 0 banana 0 cherry 0 date 0 elderberry
(integer) 5

# [a, c) 即 apple, banana
> ZRANGEBYLEX myzset [a (c
1) "apple"
2) "banana"

# 分页
> ZRANGEBYLEX myzset [a + LIMIT 0 2
1) "apple"
2) "banana"

*常见错误

  1. Redis 6.2+ 推荐使用 ZRANGE BYLEX:ZRANGEBYLEX 已废弃,推荐 ZRANGE key min max BYLEX

*最佳实践

  1. 字典序索引:用 score=0 的 Sorted Set 存储字符串,实现字典序范围和前缀查询。
  2. 自动补全/搜索:ZRANGEBYLEX 实现前缀匹配和范围查询。

*FAQ

Q: ZRANGEBYLEX 和 ZRANGE BYLEX 有什么区别? A: 效果相同。ZRANGEBYLEX 是旧命令,Redis 6.2+ 推荐 ZRANGE ... BYLEX

Q: score 不同会怎样? A: 只在 score 相同的组内按字典序排序。score 不同的 member 之间不保证字典序。