常见流程是先减去库存,然后到MQ,然后判断是否超卖,然后写入数据库(唯一索引防止重复)。
redis库存10,mysql库存10,但是现在一个人发了10条秒杀,redis = 0 mysql = 10,成功一条redis = 0,mysql = 9.
那么其他人没法秒杀了,并且只卖出去一件商品。
相关问题
- Getting Redis Master address from Sentinel C#
- 反爬能检测到JS模拟的键盘输入吗
- 有没有方法即使程序最小化也能对其发送按键
- Using relative links in Blogger
- How to resolve SAS URL for Storage Account in RM T
redis -10了,为啥你的mysql才-1呢......
这个叫幂等性,即同一个操作,无论重复多少次,其结果应该是一致的。
回到你这个问题,一个人发了10次秒杀,应该等同于发一次秒杀。那么你在redis应该记录一下这个用户的唯一标识,标识其是否进行过秒杀活动。
秒杀成功,同样mysql也要做记录,避免服务重启等原因造成缓存丢失,重复秒杀的情况。