秒杀这种走reids队列,那日常的商品库存问题,要如何避免超卖。看人家说用行锁,但是比方说我们现在购物车里面20多件商品,是不是开启事物之后对这20件商品都锁定,那如果业务逻辑繁琐的话,到事物提交超过2秒左右,会不会对mysql造成很大压力?
秒杀这种走reids队列,那日常的商品库存问题,要如何避免超卖。看人家说用行锁,但是比方说我们现在购物车里面20多件商品,是不是开启事物之后对这20件商品都锁定,那如果业务逻辑繁琐的话,到事物提交超过2秒左右,会不会对mysql造成很大压力?
超买这种问题,是无法完全避免的,不能仅仅在技术上做超卖问题的限定。综合购物体验,并发情况下效率等情况。在购物流程和规则上也要做优化,像你说的非秒杀情况,正常售卖提前提示买家库存可能不够充足,可能会延期发货什么的。
另外楼上说的一些解决方案,也都无法避免一些恶意操作的。
例如:提交订单或者加购物车占库存,存在恶拍风险。
付款后更新库存,就会存在超卖风险。
因此,个人认为,除了在技术层面用锁机制和事务操作也好,或是走队列机制等等做好超卖预防措施外,也要在购物规则上做一定的优化,毕竟,这不是秒杀这种亏本赚吆喝的活动,理论上这些日常商品是不限购的,考虑到实际库存提示延期发货等。
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
加入购物车临时占用库存,一定时间后释放(比如15分钟未下单支付,释放库存)
提交订单占用库存
支付成功更新库存