请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

分布式锁

库存售罄的时候,是通过Redis来读出库存数量,如果大于0,那就将库存扣减掉,然后当为0时,就在redis中打入售罄标识,但是这边没有用到分布式锁,当库存中只剩一件的时候,还是有可能出现超卖的问题。不知道这样理解是否正确

正在回答 回答被采纳积分+3

1回答

龙虾三少 2020-07-23 21:24:36

只要控制库存扣减的那个decr是原子操作就不会超卖

0 回复 有任何疑惑可以回复我~
  • 提问者 灵云墨竹 #1
    如果说先查库存,再扣减的话,是不是就必须加锁,这边能不加锁进行操作的原因是因为redisTemplate.opsForValue().increment这个操作是一个原子操作
    回复 有任何疑惑可以回复我~ 2020-07-23 22:29:38
  • 龙虾三少 回复 提问者 灵云墨竹 #2
    是的,incre和decre都是原子操作,所以不需要加锁
    回复 有任何疑惑可以回复我~ 2020-08-04 11:46:52
  • 同一个redis,两个不同的服务,同时执行incre和decre,也不需要加锁吗?
    回复 有任何疑惑可以回复我~ 2020-12-05 22:19:35
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信