如何使用锁解决电商项目中超卖的问题?
什么是超卖?
- 举例:某件商品库存数量10件,结果卖出15件
- 商品卖出数量超出了库存数量
- 超卖导致商家没有商品发货、发货时间延长买卖双方易发生纠纷
超卖现象一
- 系统中库存为1,但是产生了两笔订单
- 卖家在商品发货时,发现只有1件商品,但是有2笔订单
- 假如商品只剩下最后一件
- A和B同时看到这个商品,加入购物车,并同时提交订单
- 超卖产生的现象
超卖现象一:产生原因
- 扣减库存的动作 在程序中进行 在程序中计算剩余库存
- 并发的场景下,导致库存计算错误
超卖现象一:解决方法
- 扣减库存不在程序中进行,而是通过数据库
- 向数据库传递增量,扣减1个库存,增量为-1
- 在数据库update语句计算库存,通过update行锁解决并发