在一个抢购功能中,为了让商品不出现超卖现象,引入了锁,假如使用的是redis锁。
这里有个问题就是在没有获得锁的线程,后续的处理逻辑是怎样的呢?
伪代码:
if(getRedisLock()){
// 获取锁成功扣减库存
}
如上面的伪代码,如果拿到锁然后执行扣减库存操作,但是如果没有获得锁的请求呢,逻辑是怎么处理的,如果没有获取锁直接else提示抢购失败这样的业务逻辑感觉是有问题的。在高并发下,第一个请求拿到锁,后续的很多请求可能会都获取锁失败,这样就会导致商品卖不完
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…