超卖问题
来源:6-6 订单详情静态化,解决卖超问题

慕粉1462372119
2018-01-31
老师,我看视频里举例,一个用户抓接口同时开两个任务去秒杀,视频里说req1和req2都没有秒杀到,为什么接下来就都去减库存了?
写回答
1回答
-
有两种情况可能会导致卖超:(1)一个用户同时发出了多个请求,如果库存足够,没加限制,用户就可以下多个订单。(2)减库存的sql上没有加库存数量的判断,并发的时候也会导致把库存减成负数。
我们的解决办法:
对于(1):前端加验证码,防止用户同时发出多个请求,在后端的miaosha_order表中,对user_id和goods_id加唯一索引,确保一个用户对一个商品绝对不会生成两个订单。
对于(2):我们的减库存的sql上应该加上库存数量的判断:update ** where *** and staock > 0。
你的问题我这边没法确认,也有可能是口误说错了
362018-03-28
相似问题