本文主要是介绍常见库存超卖解决方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
常见库存超卖解决方案
1.数据库乐观锁
判断库存数量 stock 大于扣减数量 pendingCounts,判断正确才会更新 SQL。
伪代码如下:
UPDATEproduct_stock
SETstock = stock - #{pendingCounts}
WHERE id = #{skuId} and stock >= #{pendingCounts}
应用中调用该方法后,判断数据修改行数是否大于0,如果条件判断不成功即修改失败,直接抛出异常即可。
2.Redis 缓存余量扣减
将商品 SKU 库存放到缓存,存储一个字符串或 Hash 类型。Key 是商品 SKU ID,Value 是商品 SKU 对应的库存数量,利用 Redis 的 incrby 特性来扣减库存,可以解决超扣和性能问题。
扣减库存成功后,继续执行数据库的扣减以及下订单等一系列流程。
这篇关于常见库存超卖解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!