采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
goods_1【进程1】首先加锁,然后进行库存减少,成功会解锁,此时进行goods_2【进程1】的加锁,
与此同时进程2的goods_1获取到了锁,然后获取到了商品数量为100。因为进程1的事务没有执行完成,所以库存减少并没有写入数据库,此时还是会超卖啊。。。这段程序应该是有bug,不能在事务里加分布式锁吗?
同学,我也被这个问题困住了,想问下你后面解决了么?
这里因为不是全局锁,是针对某个商品的锁,当商品解锁后,商品所属事务并没有结束,所以另外一个人获取到锁后读取的数量还是100,没有更新。。是不是要和乐观锁一起用呢。。
感觉用乐观锁也没啥用啊。。因为第一个事务都没有更新,version肯定也不会变化了。。
乐观锁肯定行啊,课程中详细的说明了乐观锁的原理,但是要注意,乐观锁只能用于数据库的执行上,不能像redis的分布式锁一样可以作用于任何代码上
登录后可查看更多问答,登录/注册
快速转型Go工程师,成为具备双语言后端能力的开发者
655 1
863 1
1.5k 20
1.0k 11
1.0k 10