高并发下减库存操作如何避免超卖?

来源:8-8 后置流程总结

我们爱了整整一个曾经

2019-07-23

讲师,目前看完了您交易优化技术之缓存库存,事务型消息的课程,
但对该秒杀项目中,高并发下减库存操作如何避免超卖的解决方案,理解的不是很清晰,可以再帮我梳理一下吗?

将存库从MySQL前移到Redis中,由于Redis的写性能和读性能都远高于MySQL,这就解决了高并发下的性能问题。
使用事务型消息解决了redis和mysql中数据的最终一致性问题,
那么超卖问题是在哪里解决的呢?

对该秒杀项目中,高并发下减库存操作如何避免超卖的解决方案,是怎样设计的呢?

写回答

1回答

龙虾三少

2019-07-23

redis对减操作是原子性的 只要保证剪完后判断剩余数量是否大于等于0可以防止不超卖

0
4
拿法杖的战士
老师我理解这里不超卖是因为redis是原子的,然后我们decreseStock又是一个事务。那么假设redis中库存为1,同时有两个请求来下单,假设同时进行--操作,因为redis单线程有一个先进去1,然后它下单成功,另一个减去变成-1,那么就需要回补然后下单失败。而不会说是两个请求同时减去1,最后的出来的结果都是-1,都下单失败这种情况是吗。从而避免了超卖的情形出现。
2020-05-27
共4条回复

聚焦Java性能优化 打造亿级流量秒杀系统(赠秒杀项目)

理解高流量电商网站性能构建思路 用高逼格技术解决性能提升问题

2174 学习 · 1009 问题

查看课程