xiaocheng_zjc
2019-09-23 19:21
lpop不断取,队列队列长度减少,然后请求过来又开始push,llen长度虽然不大于10,但是实际入队的已经大于10了。老师讲的这种秒杀架构有个前提,在队列消费开始时,秒杀已经结束,没有新的请求过来,这个时候秒杀数量才是队列长度。
把10个库存写10个元素存进list,用户访问过来时取一个,能取到元素值的这个用户id再写进mysql,当然也可以写进另一个list让MySQL定时写入
你的分析是正确的,按照视频中的代码,再执行一次请求又会又十条数据,但显然是不符合秒杀的,应该是先把总数存到一个list中,插入一条就弹出一个,当变量list为空或者不存在时就算再有请求也不会超卖。
还要提供一个计数器队列总数是10,弹出一个就减去1
实际操作的时候可以再redis中存储一个秒杀库存的缓存 然后先减redis的库存再进行入列 再出列的时候进行一个减少库存的操作 或者再秒杀结束以后再进行一个返还库存的操作
PHP消息队列实现及应用
32733 学习 · 58 问题
相似问题