最近在Linux系统上部署 Redis 的时候,遇到了一个看似简单却卡了我半天的小问题 —— Redis 客户端怎么也连不上服务端报Can’t connect to redis-server.。最终通过一系列排查和配置,成功解决。为了不让大家踩同样的坑,特此记录一下整个排查过程和解决方案,希望对你有帮助!
🧩 问题背景
- 本机 IP:
192.168.1.1 - Redis 服务端 IP:
192.168.1.2 - Redis 已正确安装,并运行在 6379端口
- 可以
ping通 Redis 所在服务器,也能用 SSH 工具远程登录,但就是 Redis 客户端连接不上
🧪 1. 检查 Redis 是否正在运行
在服务器上执行以下命令:
ps -ef | grep redis
输出类似如下信息即代表 Redis 正常运行,并且只能本地访问:
xxx 2559340 1 0 14:11 ? 00:00:02 /data/.../redis-server 127.0.0.1:6379
如果本地能连通但远程不行,继续往下看。
🔍 2. 检查 Redis 配置文件 redis.conf
确认 Redis 是否绑定了正确的监听 IP 或允许外部访问。
首先先检查你的redis服务是用的哪个conf配置文件:
# 这里的redis服务名改成你自己的
systemctl cat xxx.service
这块就是你的对应redis服务用到的conf配置文件,必须在这个配置文件中修改否则无效
ExecStart=nohup /data/xxx/xxx.conf
查到之后重点检查两项配置:
bind 0.0.0.0 # 允许监听所有 IP(默认可能是 127.0.0.1,也可以直接注释掉)
protected-mode no # 关闭保护模式,允许远程连接
requirepass yourpassword # 可选,设置密码
修改完成后,记得重启 Redis:
sudo systemctl restart xxx.service
🔒 3. 检查服务器防火墙是否开放端口
很多时候连不上 Redis,是因为服务器防火墙没开放端口!
查看当前开放的端口:
sudo firewall-cmd --list-all
输出示例:
public (active)
ports: 3306/tcp 9090/tcp ...
确认没有 6379?那就加上!
sudo firewall-cmd --zone=public --add-port=6379/tcp --permanent
sudo firewall-cmd --reload
再次 --list-all 验证是否成功添加。
🧪 4. 使用 Telnet 或 Redis 客户端进行远程连接测试
✅ 总结一下常见连不上 Redis 的原因
| 问题 | 排查方法 |
|---|---|
| Redis 未运行 | ps -ef 或 redis-cli 本地测试 |
redis.conf 配置不当 | bind 和 protected-mode 设置 |
| 防火墙未开放端口 | firewall-cmd 查看并添加端口 |
| 网络不通 | ping 和 telnet 测试 |
| Redis 设置了密码未输入 | redis-cli -a 添加密码参数 |
🧠 小贴士
- 不建议生产环境关闭
protected-mode,可以通过配置密码代替 - 生产环境要设置访问控制,避免 Redis 被未授权访问
- 使用
iptables或云平台安全组时,也别忘了检查端口策略
亲测,这一套排查下来,Redis 远程连接基本都能搞定!
如果你也遇到了 Redis 连接不上,不妨试试这些方法。有问题欢迎评论区一起讨论哈 😊