首页 > 编程知识 正文

redis队列秒杀,redis订单超时

时间:2023-05-03 15:58:57 阅读:271220 作者:1320

周末秃发奇想,想在自己服务器试一下非常简单的秒杀功能。

首先写一个普通的下单功能,实现减库存,生成订单:

首先我在数据库把初始商品库存设置为8

通过ab压测工具访问刚才的减库存-下单接口

访问完毕之后,发现出现了超卖问题:

同时订单也多生成了

这样是万万不行的,于是我就想通过redis以及队列来实现:

首先进入laravel根目录 创建控制器:
php artisan make:controller OrderController

创建成功之后,打开该文件编辑:
将商品库存存到redis之中,访问该接口首先判断redis中是否有商品库存,没有则取数据库库存并存到redis之中,如果库存大于0,则可以下单,将下单信息添加到队列之中:

然后创建对应的Job类,用来消费队列:
php artisan make:job Order

编辑该文件,写处理方法:

同样把库存设置为8

编辑一下路由文件:

打开队列监听 通过ab压测工具访问一下:


如果想要实现30分钟之内未下单则自动取消,可新建队列 并使用其中的delay()

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。