为了账号安全,请及时绑定邮箱和手机立即绑定

这个秒杀架构是有问题的

lpop不断取,队列队列长度减少,然后请求过来又开始push,llen长度虽然不大于10,但是实际入队的已经大于10了。老师讲的这种秒杀架构有个前提,在队列消费开始时,秒杀已经结束,没有新的请求过来,这个时候秒杀数量才是队列长度。

正在回答

4 回答

把10个库存写10个元素存进list,用户访问过来时取一个,能取到元素值的这个用户id再写进mysql,当然也可以写进另一个list让MySQL定时写入

1 回复 有任何疑惑可以回复我~

你的分析是正确的,按照视频中的代码,再执行一次请求又会又十条数据,但显然是不符合秒杀的,应该是先把总数存到一个list中,插入一条就弹出一个,当变量list为空或者不存在时就算再有请求也不会超卖。

0 回复 有任何疑惑可以回复我~

还要提供一个计数器队列总数是10,弹出一个就减去1

1 回复 有任何疑惑可以回复我~
#1

慕田峪9281056

把10个库存写10个元素存进list,用户访问过来时取一个,能取到元素值的这个用户id再写进mysql,当然也可以写进另一个list让MySQL定时写入
2021-12-30 回复 有任何疑惑可以回复我~

实际操作的时候可以再redis中存储一个秒杀库存的缓存 然后先减redis的库存再进行入列  再出列的时候进行一个减少库存的操作 或者再秒杀结束以后再进行一个返还库存的操作 

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
PHP消息队列实现及应用
  • 参与学习       32730    人
  • 解答问题       58    个

消息队列是个什么玩意儿,使用队列解决秒杀等实际问题概念和使用方法

进入课程

这个秒杀架构是有问题的

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信