秒杀场景超卖的处理方式

秒杀场景的处理方案:
第一种方案:
1、Redis的decr进行原子减操作,将库存减去1
2、生成唯一订单号,将用户、商品、唯一订单号等信息,放入到异步队列中,
3、消耗异步队列,进行数据库层面的库存减1,生成订单信息
4、队列的话用的是Redis实现的list实现的队列,因为Redis已经搭建过了,有这个特性,直接用就好。用其他队列实现方式的话需要重新搭建。比如用mq
5、刚开始用的是Blockingqueue,这个阻塞队列是jdk的,用的是应用服务器的内存,并发高的时候,可能会内存溢出。抛弃此方案
6、最终决定用Redis的list是双向链表结构实现队列

第二种方案:
利用分布式锁,加锁后串行执行,这样保证了库存不会超卖,但是效率不高,因为加锁时有商品信息,该商品信息某一时刻只能一个人进行下单,没有第一种方案效率高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值