Redis

ZREVRANGE 0 2 返回的是 3 个

排行榜用有序集合:

shell
ZADD rank:game1 100 alice 250 bob 180 carol
ZINCRBY rank:game1 90 alice          # 190,不用先读出旧分数

查前 2 名,我第一反应写成 0 2:

shell
ZREVRANGE rank:game1 0 2 WITHSCORES  # 返回 3 个!
ZREVRANGE rank:game1 0 1 WITHSCORES  # bob 250, alice 190

start 和 stop 都是闭区间,而且从 0 开始。

查名次也一样:

shell
ZREVRANK rank:game1 alice            # 1,表示第 2 名,展示时要 +1
ZREVRANK rank:game1 nobody           # (nil),不在榜上

Redis 6.2 起推荐用 ZRANGE key 0 1 REV WITHSCORES 代替 ZREVRANGE,老版本没有这个写法。

esc