Ubuntu Redis连接失败的常见原因及解决方法
Redis服务未运行是连接失败的最常见原因。通过以下命令检查服务状态:
sudo systemctl status redis
若显示“inactive (dead)”或“failed”,需启动服务:
sudo systemctl start redis
启动后再次检查状态,确认服务处于“active (running)”。
Redis默认仅允许本地连接(bind 127.0.0.1
),且开启保护模式(protected-mode yes
),远程连接需修改配置:
sudo nano /etc/redis/redis.conf
bind 127.0.0.1 ::1
或改为bind 0.0.0.0
(允许所有IP连接);protected-mode yes
改为protected-mode no
。sudo systemctl restart redis ```。 ### **3. 防火墙拦截** Ubuntu的UFW防火墙可能阻止Redis端口(默认6379)的入站流量。检查防火墙状态: ```bash sudo ufw status
若防火墙开启且未允许6379端口,添加规则:
sudo ufw allow 6379
添加后重载防火墙:
sudo ufw reload ```。 ### **4. 客户端连接参数错误** 使用`redis-cli`连接时,需指定正确的IP、端口和密码(若有): - **本地连接**(默认): ```bash redis-cli -h 127.0.0.1 -p 6379
redis-cli -h <服务器IP> -p 6379
redis-cli -h <服务器IP> -p 6379 -a <密码>
密码可通过配置文件/etc/redis/redis.conf
中的requirepass
字段查看。
netstat
或ss
命令查看6379端口是否被Redis占用:sudo netstat -tuln | grep 6379
若未输出,说明端口未被占用;若被其他进程占用,需修改Redis配置文件中的port
参数(如改为6380)并重启服务。ping
命令测试与Redis服务器的网络连接:ping <服务器IP>
若无法ping通,需检查网络配置或联系网络管理员。若以上步骤均无法解决,查看Redis日志获取详细错误信息:
sudo tail -f /var/log/redis/redis-server.log
日志中会显示具体的错误原因(如配置文件语法错误、端口冲突、内存不足等),根据日志提示针对性解决。