zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

Laravel/Lumen 使用 redis队列(一)

Redis队列队列 laravel Lumen 使用
2023-09-27 14:25:58 时间
一、概述


在Web开发中 我们经常会遇到需要批量处理任务的场景 比如群发邮件、秒杀资格获取等 我们将这些耗时或者高并发的操作放到队列中异步执行可以有效缓解系统压力、提高系统响应速度和负载能力。


二、配置文件


我们仍然从配置文件开始 首先我们需要在配置文件中配置默认队列驱动为Redis。lumen没有配置文件 可以从laravel项目中拷贝一份config目录过来。

队列配置文件是config/queue.php


return [

 default env( QUEUE_DRIVER , sync ),

 connections [

 database [

 driver database ,

 table jobs ,

 queue default ,

 expire 60,

 redis [

 driver redis ,

 connection default ,

 queue default ,

 expire 60,

 failed [

 database mysql , table failed_jobs ,

];


配置文件第一个配置项default用于指定默认的队列驱动 修改.env中的QUEUE_DRIVER即可。


connections配置项包含了Laravel支持的所有队列驱动 我们使用Redis驱动 所以需要配置redis项 connection对应config/database.php中redis的default配置 queue为默认队列名称 expire为队列任务过期时间 秒 。这里我们可以保持其默认配置不变。


failed配置项用于配置失败队列任务存放的数据库及数据表。这里我们需要按照自己的数据库配置对其做相应修改。


要使用 redis 队列驱动 需要在配置文件 config/database.php 中配置 Redis 数据库连接。


如果 Redis 队列连接使用 Redis Cluster 集群 队列名称必须包含 key hash tag 以确保给定队列对应的所有 Redis keys 都存放到同一个 hash slot


 redis [

 driver redis ,

 connection default ,

 queue {default} ,

 retry_after 90,

],


注 对一般中小型应用推荐使用  Redis 作为队列驱动。


三、驱动预备知识


数据库


要使用 database 队列驱动 你需要数据表保存任务信息 比如失败任务 。要生成创建这些表的迁移 可以在项目目录下运行 Artisan 命令 queue:table 迁移被创建之后 可以使用 migrate 命令生成这些表


php artisan queue:table

php artisan queue:failed_jobs

php artisan migrate


运行后生成failed_jobs、jobs、migrations三张表。




Redis 延迟队列实现(基于PHP) 顾名思义,延迟队列就是进入该队列的消息会被延迟消费的队列。 例如:滴滴打车订单完成后,如果用户一直不评价,48小时后会将自动评价为5星。
Lansonli CSDN大数据领域博客专家,华为云享专家、阿里云专家博主、腾云先锋(TDP)核心成员、51CTO专家博主,全网六万多粉丝,知名互联网公司大数据高级开发工程师