超卖问题

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

慕粉1462372119

2018-01-31

老师,我看视频里举例,一个用户抓接口同时开两个任务去秒杀,视频里说req1和req2都没有秒杀到,为什么接下来就都去减库存了?

写回答

1回答

若鱼1919

2018-01-31

有两种情况可能会导致卖超:(1)一个用户同时发出了多个请求,如果库存足够,没加限制,用户就可以下多个订单。(2)减库存的sql上没有加库存数量的判断,并发的时候也会导致把库存减成负数。

我们的解决办法:

对于(1):前端加验证码,防止用户同时发出多个请求,在后端的miaosha_order表中,对user_id和goods_id加唯一索引,确保一个用户对一个商品绝对不会生成两个订单。

对于(2):我们的减库存的sql上应该加上库存数量的判断:update **  where ***  and staock > 0。

你的问题我这边没法确认,也有可能是口误说错了



3
6
若鱼1919
回复
笙__笙
继续往下看,后面会讲原因和解决办法
2018-03-28
共6条回复

Java秒杀系统方案优化 掌握海量访问通用解决方案

各种缓存/JSR303参数检

2695 学习 · 941 问题

查看课程