前面我们说过了数据库锁和文件锁,实际应用场景中,我们都是用redis来实现高并发超卖问题的,效率高,当然也不会有死锁了。
首先还是分析一下,redis实现超卖的原理吧,第一步:查询某个商品数量,将其存入redis的队列中,pop操作是原子操作,所以即使很多人一起下单,也是会一个一个处理,数据库锁和文件锁在并发数到达一定数量以后性能下降的很厉害,所以推荐使用redis队列,下面我们简单的将一下redis的使用。
查询出商品数量,存入redis队列中,因为我们是模拟,我就不去数据库查询了,我们直接将id为1的商品存10件到redis队列中,代码如下:

写下单操作,不多说了直接上代码:

然后我们使用ab工具来进行测试,发现一样是没有超卖的情况的。