怎么高并发秒杀的超卖?

1.首先,我们会考虑利用数据库的乐观锁和悲观锁来操作

但是悲观锁,每次拿数据都会上锁,谁拿到锁谁才会有操作的权限。每一个操作都会对资源进行锁定,会造成效率低下。

乐观锁,适合冲突比较少的情况,要不然一直retry,然而降低了系统的性能。而且写的频率过高。很容易造成系统崩溃。

我们采用变同步写为异步写的redis方式。

我们采用redis来做秒杀,在秒杀之前,我们首先会将库存读到redis中,我们利用单进程单线程的redis进行并发的控制,并且redis为我们提供了两种方式。

第一种是redis的事务的方式watch语句,会监视库存的变化,如果我们在这次更新库存中,库存发生了变化,事务失败,那么我们会更新失败。

还有一种是redis的list结构,类似于队列的机制,串行执行。

没修改一次库存,我们通过mq来更改数据库

这是一种变同步为异步的方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值