increment是应该是原子操作吧
来源:4-4 Redis解决超卖问题
慕仔8930017
2021-03-16

老师您好,这里我不同意您说的increment实际是先查后扣。我记得increment本身是原子性的操作。
这里您出现库存多扣的原因应该是先扣库存,再判断count < 0 这两步不是原子性的,所以在高并发下才出现库存扣为负数。
这里只需要在 count <0 的时候把扣掉的库存再increment回去,然后再抛出异常。应该就可以解决库存超扣的问题。
以上仅是我的个人想法,有不对的地方还请老师指正。
写回答
1回答
-
InCowboy
2021-03-17
是的,这里口误了,我的意思就是在业务层面扣库存和库存的判断会出现并发情况,然后把它放到lua脚本就可以避免,你说的count<0在还回去如果是在业务层面的话应该还是有问题,没有解决高并发问题,你可以试试看哈
062022-10-15
相似问题