首页/数据/Redis 进阶速查/ZSet 排行榜:排名分页与同分处理
数据结构与选型42 条

ZSet 排行榜:排名分页与同分处理

用分数排序实现排行榜:ZREVRANGE 取前 N、ZREVRANK 查个人名次;同分时按成员字典序排列,需要更细的先后顺序时把时间戳编进分数。

Redis 进阶速查数据更新于 2026-10-12
写入ZADD board <score> <member>
榜单ZREVRANGE board 0 9 WITHSCORES
名次ZREVRANK board member

示例

示例
redis-cli ZADD board 1200 u1 980 u2 1500 u3
redis-cli ZREVRANGE board 0 9 WITHSCORES
redis-cli ZREVRANK board u2
redis-cli ZSCORE board u1
分数可以是浮点数:把积分与时间戳小数位组合成复合分数(如 1200.1697000000),可让同分玩家按时间先后排序。

易错点

  • ZREVRANGE 按索引分页在数据持续变动时会出现重复或漏项,运营活动页接受这种弱一致但要知情
  • 浮点分数精度有限(双精度),把秒级时间戳直接混入大分数会丢精度

数据来源与参考

  • Redis 官方文档:ZADD / ZREVRANGE / ZREVRANK 命令
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌