Redis连接失败
一句话:应用连接Redis时报connection refused、ECONNREFUSED或timeout,通常是地址、端口、服务状态或网络权限问题。
它是什么
Redis连接失败常见于本地没启动Redis、Docker容器网络不通、线上环境变量写错、防火墙拦截、云Redis白名单未配置。排查时不要先改代码,先确认Redis服务是否存在、地址是否正确、当前应用能否访问。
适合干什么
- Node.js或Python后端开发者
- 用Docker部署项目的人
- 使用Upstash、阿里云、腾讯云Redis的人
- AI应用上线后缓存报错的人
不适合干什么
- 还没接入Redis的项目
- 数据库连接失败但误以为Redis问题
- 没有服务器权限只能找运维处理的情况
- Redis涉及生产数据但不敢重启的场景
普通人怎么用
- 确认Redis服务是否启动
- 检查host、port、password和database编号
- 本地用redis-cli测试连接
- Docker环境检查服务名和网络
- 线上检查安全组、白名单和环境变量
进阶用户怎么用
- 给Redis连接加重试和超时
- 区分本地、测试、生产环境配置
- 为缓存失败设计降级逻辑
- 监控连接数和错误率
常见误区
- 在Docker里还写localhost
- 线上环境变量没更新
- Redis密码变更但应用没重启
- 把网络白名单问题误判为代码bug
和相似工具的区别
- ECONNREFUSED vs timeout:ECONNREFUSED通常表示目标端口没有服务或被拒绝,timeout更像网络不通或被防火墙挡住。
- Redis连接失败 vs 数据库连接失败:两者排查思路类似,但端口、客户端、环境变量和网络规则不同。
入门步骤
- 看报错
- 查服务状态
- 测redis-cli
- 查环境变量
- 查网络
- 重启应用验证
推荐工具(第三方)
Redis、Docker、Upstash、Node.js、Python