*Redis ZREVRANGE 命令
返回 Sorted Set 中指定排名区间内的成员,按 score 从大到小排序。
*语法
ZREVRANGE key start stop [WITHSCORES]
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| key | String | 是 | Sorted Set 的键名 |
| start | Integer | 是 | 起始索引(0 表示 score 最大) |
| stop | Integer | 是 | 结束索引(支持负数) |
| WITHSCORES | 标志 | 否 | 同时返回 score |
*返回值
| 条件 | 返回值 |
|---|---|
| key 存在 | 成员数组;带 WITHSCORES 时 [member1, score1, ...] |
| key 不存在 | 空数组 [] |
*时间复杂度
O(log(N)+M),N 为成员数量,M 为返回数量。
*示例
> ZADD leaderboard 100 "p1" 200 "p2" 300 "p3"
(integer) 3
# 取前 2 名(高分在前)
> ZREVRANGE leaderboard 0 1
1) "p3"
2) "p2"
# 带 score
> ZREVRANGE leaderboard 0 2 WITHSCORES
1) "p3"
2) "300"
3) "p2"
4) "200"
5) "p1"
6) "100"
*常见错误
- Redis 6.2+ 推荐使用 ZRANGE REV:ZREVRANGE 是旧命令,Redis 6.2+ 推荐用
ZRANGE key start stop REV。
*最佳实践
- Top N 排行榜:
ZREVRANGE leaderboard 0 N-1取前 N 名。 - Redis 6.2+ 统一用 ZRANGE:
ZRANGE key 0 N-1 REV WITHSCORES替代 ZREVRANGE。
*FAQ
Q: ZREVRANGE 和 ZRANGE 有什么区别? A: ZREVRANGE 按 score 从大到小;ZRANGE 按 score 从小到大。
Q: Redis 6.2+ 还需要 ZREVRANGE 吗?
A: 不需要。ZRANGE ... REV 功能完全一致,且支持 BYSCORE/BYLEX 等更多参数。