在Laravel中配置Redis队列与Horizon是否需要数据库?
Laravel Redis队列+Horizon 无数据库配置答疑
失败任务存储:无需依赖数据库
当你将Laravel队列驱动设置为Redis时,失败任务默认会存储在Redis中,完全不需要配置MySQL等关系型数据库。你提到的默认创建failed_jobs表是数据库队列驱动的行为,Redis驱动下无需执行该迁移操作。
Horizon对失败任务的清理规则(当前版本)
当前版本的Horizon(适配Laravel 8及以上版本)不会自动定期清理失败任务,除非你手动在Horizon配置文件中设置了清理规则。默认状态下,失败任务会长期保留在Redis中,你可以直接在Horizon面板中查看、重试或删除这些任务。
RedisJobRepository的作用与持久化保障
你观察到的FailedJobsController依赖RedisJobRepository是正确的,这个实现类专门负责在Redis中管理失败任务。只要你正确配置Redis作为队列驱动并启用Horizon,失败任务会被可靠存储在Redis中,不会丢失,全程无需数据库支持。
关键配置要点
- 在
.env文件中设置QUEUE_CONNECTION=redis,并确保Redis连接信息配置正确 - 安装Horizon后执行
php artisan horizon:install发布配置文件,可在配置中自定义失败任务的保留规则(如保留时长、清理策略等)
内容的提问来源于stack exchange,提问作者ps-20x
相关产品推荐
相关产品推荐

