关于redis减去库存问题!!!面试常问,很大一个坑!有没有大佬

2020-03-31 14:39发布

问题:

常见流程是先减去库存,然后到MQ,然后判断是否超卖,然后写入数据库(唯一索引防止重复)。
redis库存10,mysql库存10,但是现在一个人发了10条秒杀,redis = 0 mysql = 10,成功一条redis = 0,mysql = 9.
那么其他人没法秒杀了,并且只卖出去一件商品。

回答1:

这个叫幂等性,即同一个操作,无论重复多少次,其结果应该是一致的。
回到你这个问题,一个人发了10次秒杀,应该等同于发一次秒杀。那么你在redis应该记录一下这个用户的唯一标识,标识其是否进行过秒杀活动。
秒杀成功,同样mysql也要做记录,避免服务重启等原因造成缓存丢失,重复秒杀的情况。



回答2:

redis -10了,为啥你的mysql才-1呢......



标签: web redis 事务