*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"
*常见错误
- Redis 6.2+ 推荐使用 ZRANGE BYLEX:ZRANGEBYLEX 已废弃,推荐
ZRANGE key min max BYLEX。
*最佳实践
- 字典序索引:用 score=0 的 Sorted Set 存储字符串,实现字典序范围和前缀查询。
- 自动补全/搜索:ZRANGEBYLEX 实现前缀匹配和范围查询。
*FAQ
Q: ZRANGEBYLEX 和 ZRANGE BYLEX 有什么区别?
A: 效果相同。ZRANGEBYLEX 是旧命令,Redis 6.2+ 推荐 ZRANGE ... BYLEX。
Q: score 不同会怎样? A: 只在 score 相同的组内按字典序排序。score 不同的 member 之间不保证字典序。