最近在部署 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 是否正在运行
在服务器上执行以下命令:
perl
ps -ef | grep redis
输出类似如下信息即代表 Redis 正常运行:
bash
xxx 2559340 1 0 14:11 ? 00:00:02 /data/.../redis-server *:6382
也可以通过 Redis 自带的 redis-cli
测试本地连通性:
bash
./redis-cli -p 6379
如果本地能连通但远程不行,继续往下看。
🔍 2. 检查 Redis 配置文件 redis.conf
确认 Redis 是否绑定了正确的监听 IP 或允许外部访问。
重点检查两项配置:
perl
bind 0.0.0.0 # 允许监听所有 IP(默认可能是 127.0.0.1)
protected-mode no # 关闭保护模式,允许远程连接
修改完成后,记得重启 Redis:
bash
./redis-server ./redis.conf
或者用你系统中对应的 service/systemctl 命令。
🔒 3. 检查服务器防火墙是否开放端口
很多时候连不上 Redis,是因为服务器防火墙没开放端口!
查看当前开放的端口:
css
sudo firewall-cmd --list-all
输出示例:
yaml
public (active)
ports: 3306/tcp 9090/tcp ...
确认没有 6379
?那就加上!
css
bash
复制编辑
sudo firewall-cmd --zone=public --add-port=6379/tcp --permanent
sudo firewall-cmd --reload
再次 --list-all
验证是否成功添加。
🧪 4. 使用 Telnet 或 Redis 客户端进行远程连接测试
可以使用如下命令测试连通性:
yaml
telnet 192.168.1.2 6379
如果能连通,会出现如下提示:
erlang
Trying 192.168.1.2...
Connected to 192.168.122.124.
或者直接用 redis-cli
进行远程连接:
css
redis-cli -h 192.168.1.2 -p 6379
如果设置了密码,还需加上 -a
参数。
✅ 总结一下常见连不上 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 连接不上,不妨试试这些方法。有问题欢迎评论区一起讨论哈 😊