高并发使用redis队列处理数据不一致

103阅读-1评论-作者:码农 PHP 高并发 redis 队列
前面我们说过了数据库锁和文件锁,实际应用场景中,我们都是用redis来实现高并发超卖问题的,效率高,当然也不会有死锁了。

    首先还是分析一下,redis实现超卖的原理吧,第一步:查询某个商品数量,将其存入redis的队列中,pop操作是原子操作,所以即使很多人一起下单,也是会一个一个处理,数据库锁和文件锁在并发数到达一定数量以后性能下降的很厉害,所以推荐使用redis队列,下面我们简单的将一下redis的使用。


查询出商品数量,存入redis队列中,因为我们是模拟,我就不去数据库查询了,我们直接将id为1的商品存10件到redis队列中,代码如下:

1.png


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

1.png

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


QQ:1007027975

0.056743s