电商秒杀这种高并发场景,要实现库存扣减,如果做到不会把库存扣成负数呢?

电商秒杀这种高并发场景,要实现库存扣减,如果做到不会把库存扣成负数呢?

我想问下,想电商秒杀这种高并发场景,要实现库存扣减,如果做到不会把库存扣成负数呢?因为扣减库存需要先 selectupdate,而 select 得到了还有一个库存,A去 update -1了,但是该时刻,B select 得到了还有一个库存,B也去 update -1了。这样库存就变成了负数了。这个问题好像用事务无法处理,需要用锁吗?用哪种锁比较合适呢?尽量照顾性能

我想到下面几种方法:

  • 使用 update 行锁?
  • case when
  • 把库存字段设置为 unsigned int


回答:

Github 上面有个仓库专门收集了秒杀的解决方案。

  • qiurunze123/miaosha: ⭐⭐⭐⭐秒杀系统设计与实现.互联网工程师进阶与分析??


回答:

你引入redis就会很好解决

以上是 电商秒杀这种高并发场景,要实现库存扣减,如果做到不会把库存扣成负数呢? 的全部内容, 来源链接: utcz.com/p/938093.html

回到顶部