leaderboard(Ruby Redis 排行榜)
基于 Redis 的 Ruby 排行榜库,可快速为游戏或应用构建高分榜、积分榜,支持分页、排名区间查询、成员附加数据与升降序排序。
爱鲜报评分
0.0
0 人评分
开源 · MIT
481
星数
是
中文
Ruby
主语言
是
活跃
15
贡献者
人工分析
EDITORIAL推荐理由
这是一个成熟稳定的 Ruby 排行榜解决方案,直接复用 Redis 的有序集合能力,性能好、API 简洁。481 星、MIT 协议、长期维护,适合 Ruby 后端快速接入排行榜功能。若你的技术栈是 Ruby 且已有 Redis,几乎零成本集成。
适用场景
- 游戏高分榜与积分榜
- 社区用户活跃度/贡献排行
- 电商或内容平台的热度榜单
- 活动竞赛实时排名
- 需要按分数区间或名次区间查询成员的后端服务
优点
- 基于 Redis 有序集合,读写性能高
- API 简洁,rank_member、leaders、around_me 等语义清晰
- 支持分页、升降序、名次/分数区间查询
- 可为成员附加 JSON 数据(如昵称、头像)
- MIT 协议,可自由商用与修改
缺点
- 仅支持 Ruby 语言,其他技术栈无法直接使用
- 依赖 Redis,需自行维护 Redis 服务
- README 与文档均为英文,中文资料较少
- 使用 remove_members_in_score_range 等批量删除时,附加成员数据可能残留
- 项目较老,部分示例基于旧版 Ruby/Redis 客户端
上手难度
入门
项目简介
leaderboard 是一个用 Ruby 编写的排行榜库,底层由 Redis 的有序集合(Sorted Set)驱动。它把「高分榜」这类常见需求封装成简洁的 Ruby API,让你不必自己设计 Redis 数据结构,就能快速实现排名、分页、区间查询等功能。
项目思路源自作者博客中关于「用 Redis 创建高分表」的文章,采用 MIT 协议开源,在 GitHub 上获得约 481 星。
核心能力
- 创建排行榜:一行代码即可创建或挂载一个名为
highscores的排行榜。 - 成员排名:通过
rank_member添加或更新成员分数,重复调用会自动更新。 - 查询信息:
score_for、rank_for、total_members、total_pages等快速获取成员与榜单状态。 - 分页与区间:
leaders、around_me、members_from_score_range、members_from_rank_range支持灵活取数。 - 附加成员数据:可为成员存储 JSON 数据(如用户名、头像),并提供读取、更新、删除接口。
- 可配置选项:页大小、升降序、返回字段键名、成员数据是否全局共享等均可调整。
快速上手
安装方式为 RubyGems:
gem install leaderboard
或在 Gemfile 中声明:
gem 'leaderboard'
使用前请确保 Redis 服务已启动。
创建与写入
require 'leaderboard'
highscore_lb = Leaderboard.new('highscores')
1.upto(10) do |index|
highscore_lb.rank_member("member_#{index}", index)
end
读取榜单
highscore_lb.leaders(1)
# => [{:member=>"member_10", :rank=>1, :score=>10.0}, ...]
highscore_lb.rank_for('member_4') # => 7
highscore_lb.score_for('member_4') # => 4.0
附加成员数据
require 'json'
highscore_lb.rank_member('84849292', 1, {'username' => 'member_name'}.to_json)
JSON.parse(highscore_lb.member_data_for('84849292'))
# => {"username"=>"member_name"}
常用选项
Leaderboard::DEFAULT_OPTIONS 中包含以下可配置项:
:page_size:每页条数,默认 25。:reverse:设为true时按分数从低到高排序。:member_key/:rank_key/:score_key:控制返回哈希中的字段名。:member_data_key/:member_data_namespace:成员附加数据的键与命名空间。:global_member_data:成员数据是按榜单隔离还是全局共享。
Redis 连接参数可在初始化时通过第三个参数传入,也支持复用已有的 Redis 连接。
适用与注意
该项目适合 Ruby 后端在已有 Redis 的前提下快速接入排行榜功能,例如游戏高分榜、社区贡献榜、活动竞赛排名等。需要注意的是:它只面向 Ruby 生态;批量删除成员(如 remove_members_in_score_range)时,附加成员数据可能不会被同步清理;文档以英文为主,中文资料较少。
评论
- 暂无评论,来写第一条吧。