gpt4 book ai didi

具有多个分数的 Redis 排序集 "columns"

转载 作者:IT王子 更新时间:2023-10-29 06:03:16 26 4
gpt4 key购买 nike

我需要一个排行榜,其中存储用户的分数和级别完成度的百分比。我只需要能够按分数排序并按分数获得排名。

使用 Redis 的排序集 a 可以像这样轻松地存储用户的分数:

ZADD leaderboard:gamemode1 100 user1
ZADD leaderboard:gamemode1 300 user2

但是,我正在努力弄清楚如何最好地存储属于 100300 分数的百分比值。

我应该这样做吗:

ZADD leaderboard:gamemode1 100 user1:29.45

其中 :29.45 是用户 1 在 gamemode1 中得分为 100 的百分比?我认为这会使以后更新用户 1 的 gamemode1 分数变得复杂。

或者我是否应该创建一个哈希表作为簿记机制,用于存储所有用户在所有游戏模式下的得分和百分比?

我对哈希表方法的担忧是,如果我想显示 ~50 个用户的排行榜以及他们的分数和百分比值,那么我将不得不查询该哈希表 50 次以获得百分比,在提取前 50 个分数之后使用 ZRANGE

有没有人对如何以好的方式构建它有任何意见?

最佳答案

使用Sorted Sets 时,请记住它具有成员字符串唯一性。

这意味着:

ZADD game1 100 user1
ZADD game1 90 user1

只剩下 90 user1

请注意,我认为您已经了解了这一点。

为了存储百分比,您可以使用分数的小数部分:

ZADD leaderboard:gamemode1 100.0995 user1
ZADD leaderboard:gamemode1 90.0850 user2

上面,我使用小数部分作为百分比:0.0995 = 99.5%。

也可以只对score使用score,将成员字符串序列化:

ZADD leaderboard:gamemode1 100 [serialized dictionary/dataset]
ZADD leaderboard:gamemode1 90 [serialized dictionary/dataset]

如果您使用 JSON 或 MsgPack,您始终可以使用服务器端脚本来更新序列化字符串中的一些数据。

我不建议为这个简单的场景记账,至少在这个阶段不建议。您可以随时在需要时实现它。

希望这有帮助,TW

关于具有多个分数的 Redis 排序集 "columns",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23202796/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com