*Redis ZREVRANGEBYSCORE 命令

返回 Sorted Set 中 score 在指定范围内的成员,按 score 从大到小排序。


*语法

ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]

*参数说明

参数 类型 必填 说明
key String Sorted Set 键名
max Double/String 最大 score,+inf 表示无穷大,( 表示开区间
min Double/String 最小 score,-inf 表示无穷小
WITHSCORES 标志 同时返回 score
LIMIT Integer offset 和 count,分页

*返回值

条件 返回值
有成员 成员数组(WITHSCORES 时 [member, score, ...]
无成员 空数组 []

*时间复杂度

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


*示例

> ZADD scores 85 "Alice" 92 "Bob" 78 "Charlie" 95 "David" 88 "Eve"
(integer) 5

# 高分到低分,score 90-100
> ZREVRANGEBYSCORE scores 100 90 WITHSCORES
1) "David"
2) "95"
3) "Bob"
4) "92"

# 开区间 (90, 100]
> ZREVRANGEBYSCORE scores 100 (90 WITHSCORES
1) "David"
2) "95"

# 分页
> ZREVRANGEBYSCORE scores +inf -inf LIMIT 0 3
1) "David"
2) "Bob"
3) "Eve"

*常见错误

  1. min > max:返回空数组。

*最佳实践

  1. 反向范围查询:需要按 score 从大到小查询范围时使用,如"查询 90 分以上的学生(从高到低)"。

*FAQ

Q: ZREVRANGEBYSCORE 和 ZRANGEBYSCORE 有什么区别? A: ZREVRANGEBYSCORE 按 score 从大到小返回;ZRANGEBYSCORE 从小到大。注意参数顺序也相反(先 max 后 min)。