【发布时间】:2021-08-23 16:13:09
【问题描述】:
假设我们要设计一个国际象棋游戏平台,我们的用户群约为 5000 万。每当有玩家来到我们的平台下棋时,我们都会随机分配一名与对手评分几乎相同的玩家。每个玩家都有 4 个等级等级 [Easy、Medium、Hard、Expert]。
我的方法是将所有用户保留在 Redis 缓存中(假设所有用户/船只都处于活动状态并等待对手),因此我们将数据保存为以下格式:
"chess:easy" : [u1, u2, u3]
"chess:medium" : [u4, u5, u6]
所以当一个用户来的时候,我会从缓存中删除一个用户并分配。
For example: u7 (easy) wants to play chess games then his opponent will be u1(easy).
但这不会给 并发请求 造成问题,因为我们读取然后从 Redis 列表中删除将阻塞?
任何人都可以提出一个更好的方法来使用或不使用缓存吗?
【问题讨论】:
标签: redis concurrency system-design