*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"

*常见错误

  1. Redis 6.2+ 推荐使用 ZRANGE REV:ZREVRANGE 是旧命令,Redis 6.2+ 推荐用 ZRANGE key start stop REV

*最佳实践

  1. Top N 排行榜ZREVRANGE leaderboard 0 N-1 取前 N 名。
  2. Redis 6.2+ 统一用 ZRANGEZRANGE 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 等更多参数。