Laravel/Lumen 使用 redis队列(一)
在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专家博主,全网六万多粉丝,知名互联网公司大数据高级开发工程师
相关文章
- Redis主从复制、哨兵、集群
- 灵感来袭,基于Redis的分布式延迟队列
- Tomcat 集群模式下 Session 更新 Bug (redis memcached 及tomcat自已的集群)
- 图解 Redis 分布式锁,写得太好了!
- Redis 实现延迟队列?深深被折服!!
- 利用redis写webshell
- Redis事务
- 玩转redis-延时消息队列
- 阿里最新38道Java面试题解析(MyBatis+消息队列+Redis)
- Delayer 基于 Redis 的延迟消息队列中间件
- 【Redis | 黑马点评 + 思维导图】秒杀优化、Redis消息队列、达人探店
- Laravel7中Redis队列的使用
- 阿里云 redis 通过rinetd 进行端口透传
- 面试官让我滚,因为我这样回答:谈谈Redis String类型~
- Spring Data Redis实现消息队列——发布/订阅模式