核心数据游戏

实时排行榜

为游戏、体育和社交应用提供实时排名,分数更新与读取并行进行。

写入即有序
始终
条命令获取前 10 名
1
条命令查询玩家名次
1
步骤 1 / 5
记录分数

一场对局结束,结果被写入。

示例会话playing
# 记录分数
hotkv> ZADD board:2026-w42 1500 alice
(integer) 1

使用真实 HotKV 命令和示例回复的动画演示。点击任意步骤即可跳转。 命令和回复保持英文,与您在 HotKV 中输入和看到的完全一致。

问题所在

排行榜被持续写入,也被持续读取。每次分数变化都可能让整张榜单重新排序,每位玩家都希望立刻看到自己的名次。一旦流量增长,在关系型数据库中重新计算排名就撑不住了。

HotKV 如何解决

有序集合在写入时就按分数保持成员有序,因此榜单前列和任何玩家的名次随时都可以直接读取。HotKV 在多个 worker 线程上执行命令,分数更新和读取不会被挤进同一个线程。

逐步演示

逐条命令,看看发生了什么

  1. 01

    记录分数

    一场对局结束,结果被写入。

    ZADD board:2026-w42 1500 alice
  2. 02

    累加分数

    Bob 赢下一局。他的分数增加,排序立即更新。

    ZINCRBY board:2026-w42 250 bob
  3. 03

    展示前 10 名

    在写入持续进行的同时,每个客户端和直播叠加层都在读取领先者。

    ZREVRANGE board:2026-w42 0 9 WITHSCORES
  4. 04

    我排第几?

    每位玩家都能看到自己的名次。

    ZREVRANK board:2026-w42 alice
  5. 05

    每周重置,无需任务

    每周使用自己的键,两周后过期。

    EXPIRE board:2026-w42 1209600
适用场景

真实场景

手机与主机游戏

全球榜、地区榜和好友榜是各自独立的有序集合,每场对局之后更新。

健身与学习应用

每周的连续打卡和积分排名,通过每周切换到新键自动重置。

现场活动与电竞

在结果持续涌入的同时,直播叠加层每秒读取一次排名。

内置功能

您将获得

始终有序的排名

无需运行排名任务。分数到达时顺序即已维护好。

ZADDZINCRBY

前列榜单与玩家名次

各需一条命令。

ZREVRANGEZREVRANK

多个 worker 线程

分数更新和读取分布在多个 worker 线程上,而不是一个。

周期性榜单

每个周期一个带过期时间的键。

EXPIRE

常见问题

如何构建每日或每周排行榜?

每个周期使用一个有序集合,例如 board:2026-w42,并为它设置过期时间。

可以合并多个榜单吗?

可以。ZUNIONSTORE 把多个榜单相加为一个,例如由四个周榜得出一个月榜。

大量写入会拖慢读取吗?

HotKV 在多个 worker 线程上运行命令,分数更新和读取不会被强制挤进同一个线程。

相关用例

在您自己的工作负载上试试

HotKV 兼容 Redis 协议,您可以把现有客户端指向它,运行这些相同的命令。