美文网首页
超卖——⽅案

超卖——⽅案

作者: 嘘寒问暖 | 来源:发表于2022-07-18 23:49 被阅读0次

    1. ⾸先查询redis缓存库存是否充⾜

    2. 先扣库存再落订单数据,可以防⽌订单⽣成了没有库存的超卖问题

    3. 扣库存的时候先扣数据库库存,再扣减redis库存,保证在同⼀个事务⾥,⽆论两者哪⼀个发⽣了异常都会回滚。有⼀个问题是可能redis扣成功了由于⽹络问题返回失败,事务回滚,导致数据库和缓存不⼀致,这样实际少卖了,可以放到下轮秒杀去。

    这种做法能⼀定程度上解决问题,但是也有可能会有其他问题。⽐如当⼤量请求落在同⼀条库存记录上去做update时,⾏锁导致⼤量的锁竞争会使得数据库的tps急剧下降,性能⽆法满⾜要求。

    另外⼀种做法就是排队,在服务层进⾏排队,针对同⼀个商品ID的也就是数据库是⼀条库存记录的做⼀个内存队列,串⾏化去扣减库存,可以⼀定程度上缓解数据库的并发压⼒。

    相关文章

      网友评论

          本文标题:超卖——⽅案

          本文链接:https://www.haomeiwen.com/subject/hohjirtx.html