看到 转:八年 phper 的高级工程师面试之路 里面的题目
6、有 100 万个奖品,每个人可以中奖 3 次,先到先得,怎么控制并发,不能发超,并保证完全的先到先得模式
答:百万奖品在打乱后预先 insert 到数据库,所有中奖操作,均只能 update,不能 insert。进来抽奖的用户使用 memcahe 原子加锁,实现抽奖次数自增,当抽奖次数到达 3 时,返回不中奖。
再问:预先插入需要很多资源,如果奖品数量上了 1 亿怎么办?
答:使用 redis 队列存储请求,跑守护进程异步发奖,产生的问题是用户无法实时看到中奖情况。
再问:这样肯定不行。
想问下,怎么解决,哪些书籍会讲解到这方面的知识