*Redis ZREVRANGEBYLEX 命令
返回 Sorted Set 中 member 在指定字典序范围内的成员,按字典序从大到小排序。要求所有 member 的 score 相同。
*语法
ZREVRANGEBYLEX key max min [LIMIT offset count]
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| key | String | 是 | Sorted Set 键名 |
| max | String | 是 | 最大 member,+ 表示正无穷,[ 表示闭区间,( 表示开区间 |
| min | String | 是 | 最小 member,- 表示负无穷 |
| LIMIT | Integer | 否 | offset 和 count,分页 |
*返回值
| 条件 | 返回值 |
|---|---|
| 有成员 | member 数组,按字典序从大到小 |
| 无成员 | 空数组 [] |
*时间复杂度
O(log(N)+M),N 为成员数,M 为返回数量。
*示例
> ZADD names 0 "Alice" 0 "Bob" 0 "Charlie" 0 "David" 0 "Eve"
(integer) 5
# 从大到小,字典序 C 到 E
> ZREVRANGEBYLEX names [E [C
1) "Eve"
2) "David"
3) "Charlie"
# 分页
> ZREVRANGEBYLEX names + - LIMIT 0 2
1) "Eve"
2) "David"
*常见错误
- score 不一致:如果成员 score 不一致,结果不确定。
*最佳实践
- 反向字典序查询:需要按字典序从大到小查询范围时使用。
*FAQ
Q: ZREVRANGEBYLEX 和 ZRANGEBYLEX 有什么区别? A: ZREVRANGEBYLEX 按字典序从大到小返回;ZRANGEBYLEX 从小到大。注意参数顺序也相反(先 max 后 min)。