MySQL防止库存超卖方法总结详解数据库

订单超卖问题是涉及到库存项目的重中之重,这里我总结一下常用的方法

1、简单处理【update & select 合并】(乐观锁)

beginTranse(开启事务)
$num = 1;
try{ $dbca->query('update s_store set amount = amount - $num where amount>=$num and postID = 12345'); }catch($e Exception){ rollBack(回滚) } commit(提交事务)

还有一种就是加版本号【先select 后 update】

$db->query('update s_store set amount = amount - $num,version = version+1 where version=$version and postID = 12345');

 个人更推荐合并的那个

场景:适用于小型应用并发小

2、使用redis队列

点击这里查看具体代码

场景:大型应用高并发

 

总结:以上就是最常见的解决方案,当然也有其他的一些方式,看了后发现还是这两种更合适,以上两种方案足以解决正常的各种情况

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/4912.html

(0)
上一篇 2021年7月16日
下一篇 2021年7月16日

相关推荐

发表回复

登录后才能评论