幂等性-库存扣减

2019-04-18  本文已影响0人  不务正业的coder

如何在高并发场景下,库存扣减可能出现的数据不一致性问题。

示例:

如两个线程同时查询到库存num=5,其中一个线程扣减2个,另外一个线程扣减1个。最后库存num=4个,覆盖了另外一个线程执行的结果。

解决方案(利用乐观锁,可以理解为CAS原理)

(1) update stock set num=#{reduce_num} where stock_id=#{stock_id}

更改为:

(2) update stock set num=#{reduce_num} where stock_id=#{stock_id}
stock_id and num=#{old_num}

上一篇 下一篇

猜你喜欢

热点阅读