让我们看看下面的场景:
一个网站有10000个播放器,为了让问题更简单,我使用mysql存储播放器,只有一个表:“player_table”
------这里是表格------
名称字符串
分数整数
现在,我想通过 socre 显示这些玩家中的前 100 名。
如果只用mysql,每次都要计算Top 100,所以我选择Redis存储Top 100,数据类型为sorted set。
但是如果其中一个玩家的分数改变了,我该怎么办,每次都更新前100名??
谢谢你的进步
最佳答案
首先在你的数据库中引入一个id字段,以name作为主键似乎不太对(如果是玩家唯一的用户名就可以)。
1.保留所有玩家的排序集合,他们的游戏得分作为排序集合中的得分字段。
每当游戏结束时,更新您的 mysql 表,并对玩家的 redis 排序集执行 ZINCRBY 操作。
每当您需要排行榜时,请执行 ZREVRANGE操作以根据得分对顶级玩家进行排序。
关于mysql - 当其中一个发生变化时,我应该每次都用 redis 更新缓存吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36529683/