Laravel7出现Predis\Connection\ConnectionException报错该如何解决?
Laravel 7 Redis连接报错排查方案
排查解决步骤
- 第一步:清理Laravel配置缓存
Laravel 会将生产环境的配置缓存到bootstrap/cache/config.php,修改.env后不会自动生效,执行以下命令清理缓存:
如果你开启了队列服务,需要额外执行php artisan config:clear php artisan cache:clearphp artisan queue:restart重启队列Worker,队列进程启动时会加载一次配置,运行过程中不会读取更新后的配置。 - 第二步:核对全局Redis相关配置
- 打开
config/database.php,找到redis配置块,确认port字段是否正确读取.env配置,正确写法应为'port' => env('REDIS_PORT', 6379),,如果此处硬编码为6037,修改为读取env的写法即可解决端口不一致的问题。 - 检查
.env中以下三个核心配置项,哪怕你没有手动调用Redis类,只要这三个配置设为redis,Laravel内置功能就会自动触发Redis连接:CACHE_DRIVER:缓存驱动SESSION_DRIVER:会话驱动QUEUE_CONNECTION:队列驱动
- 打开
- 第三步:不需要使用Redis的快速解决方法
直接将上述三个配置项修改为非Redis驱动即可彻底关闭Redis连接逻辑:
修改后再次执行CACHE_DRIVER=file SESSION_DRIVER=file QUEUE_CONNECTION=syncphp artisan config:clear生效。 - 第四步:需要使用Redis的排查点
如果你确实需要使用Redis,执行以下检查:- 确认Redis服务实际监听端口,Redis默认端口为6379,如果你要使用9999端口需要修改
redis.conf中的port配置为9999,再重启Redis服务 - 确认Redis服务已正常启动,且没有防火墙规则拦截对应端口的本地访问
- 如果你使用Docker环境,需要将
REDIS_HOST修改为Redis容器的服务名,不能填127.0.0.1
- 确认Redis服务实际监听端口,Redis默认端口为6379,如果你要使用9999端口需要修改
内容的提问来源于stack exchange,提问作者Nabeel Siddiqui
相关产品推荐
相关产品推荐

