付费课程, 订阅后即可观看
使用 Redis 作为驱动实现队列功能
Redis 驱动过去一直都不叫尴尬,虽然它的运行速度要远超 database 的驱动队列,配置也比 sqs,beanstalkd 简单,但是因为运行的时候观察队列的执行状况比较麻烦,所以大家都不使用它,直到后来 Laravel 推出了 Horizon 队列监控系统,Redis队列才迎来了它黄金发展时期,成为最受欢迎的队列驱动。
微信扫码登录
![](https://www.coding10.com/images/auth/default.png)
Redis 驱动过去一直都不叫尴尬,虽然它的运行速度要远超 database 的驱动队列,配置也比 sqs,beanstalkd 简单,但是因为运行的时候观察队列的执行状况比较麻烦,所以大家都不使用它,直到后来 Laravel 推出了 Horizon 队列监控系统,Redis队列才迎来了它黄金发展时期,成为最受欢迎的队列驱动。
输入brew install redis命令的时候说‘brew’不是内部或外部命令。。。
输出redis-cli 也是一样
这个是macos底下的命令,这个要根据操作系统的不同来采取不同的命令和方式,你根据自己的环境搜索一下即可
谢谢
现在大部分新手都是使用现成的开发环境,不管是homestead还是laradock,这类环境很方便,刚开始学laravel的时候可以用,但是环境出了问题很多人不知道怎么办了,到一定阶段一定要去折腾折腾这些东西,深入了解一下。
环境:laravel6.3 php7.3.5 artisan serve Redis3.0
问题:关于QUEUE_CONNECTION=redis,当work执行失败后,失败的任务数据存储到哪里了(或者说在Retry时,数据是从哪里来的)?
1.入队: Redis 生成了两个KEY: laravel_database_queues:emails (llen 非0) laravel_database_queues:emails:notify (llen 非0)
2.执行任务失败: 两个KEY的长度均变为0,且当前Redis 也只有这两个KEY
3. 执行 retry all ,任务恢复到了以上两个KEY。
问题已解决 失败的队列会保存在 Mysql的failed_jobs 表中
队列失败的那张表格一定要创建的,失败的任务会放到数据库中的 failed_jobs 表格中,好像是这个表名来着
您好,感谢您,您的建议是对的。
虽然是Reids,但是失败的任务还是会存储在 Mysql 数据库的 failed_jobs 表中
睡眠保证好啊,老这么熬夜身体扛得住,精神专注度也保障不了啊
谢谢您,我会注意的 。
我有点疑惑,环境安装了php的redis扩展,还需要在安装laravel的redis包,这岂不是有2个redis了吗,这个不会冲突吗,使用的时候会使用哪个的redis呢
博主,项目运行时如何执行队列中的任务呢?还是必须在终端启动horizon吗?