【发布时间】:2014-06-05 20:04:27
【问题描述】:
我需要一个排行榜,用户可以在其中存储分数和关卡完成度的百分比。我只需要能够按分数排序并按分数获得排名。
使用 Redis 的 sorted sets 可以轻松存储用户的分数,如下所示:
ZADD leaderboard:gamemode1 100 user1
ZADD leaderboard:gamemode1 300 user2
但是,我很难弄清楚如何最好地存储属于100 和300 分数的百分比值。
我应该这样做吗:
ZADD leaderboard:gamemode1 100 user1:29.45
:29.45 是用户 1 在gamemode1 中的得分为100 的百分比?我认为这会使稍后更新 user1 的 gamemode1 分数变得复杂。
或者我应该创建一个哈希表作为一种记账机制,存储所有用户在所有游戏模式下的分数和百分比?
我对哈希表方法的担忧是,如果我想显示大约 50 个用户的分数和百分比值的排行榜,那么我将不得不查询该哈希表 50 次以获取百分比,然后拉出 top50 分数与ZRANGE。
有人对如何以一种好的方式构建它有任何意见吗?
【问题讨论】:
标签: redis