Redis本地正常但Ubuntu服务器及Docker环境无法运行求助
Ubuntu服务器Redis安装与故障排查指南
一、Ubuntu原生Redis安装步骤
- 更新系统包列表:
sudo apt update - 安装Redis服务:
sudo apt install redis-server -y - 启动服务并设置开机自启:
sudo systemctl start redis-server sudo systemctl enable redis-server - 验证服务状态:
sudo systemctl status redis-server,确保显示active (running)
二、Docker部署Redis步骤
- 拉取官方Redis镜像:
docker pull redis - 启动带持久化的容器(端口映射到宿主机6379):
docker run -d --name redis-container \ -p 6379:6379 \ -v redis-data:/data \ redis redis-server --appendonly yes - 验证容器状态:
docker ps,确认redis-container处于Up状态 - 本地测试连接:
docker exec -it redis-container redis-cli ping,应返回PONG
三、故障排查核心步骤
1. 基础连通性验证
- 在服务器本地测试Redis:
redis-cli ping,如果返回PONG说明服务本身正常 - 从客户端机器测试端口连通性:
若连接失败,优先排查网络/防火墙问题telnet <服务器IP> 6379 # 或用nc工具 nc -zv <服务器IP> 6379
2. Redis配置检查
原生Redis配置
- 编辑配置文件:
sudo nano /etc/redis/redis.conf - 修改绑定地址(允许远程连接):将
bind 127.0.0.1 ::1改为bind 0.0.0.0或注释掉该行 - 关闭保护模式(生产环境建议配合密码使用):将
protected-mode yes改为protected-mode no - 重启服务生效:
sudo systemctl restart redis-server
Docker Redis配置
- 检查端口映射:确保
docker run命令中包含-p 6379:6379,宿主机端口未被占用 - 查看容器日志:
docker logs redis-container,排查启动时的配置错误
3. 防火墙与安全组检查
- Ubuntu本地防火墙:
sudo ufw status # 若开启防火墙,允许6379端口 sudo ufw allow 6379 - 云服务器安全组:确保入站规则开放6379端口(TCP协议)
4. 代码连接调整
你的代码默认连接本地127.0.0.1,部署后需根据环境修改:
- 如果Redis与Node服务在同一服务器:保持端口不变,若修改过Redis配置需同步参数
- 如果Redis在Docker容器或远程服务器:指定
host参数,示例:redisClient = redis.createClient({ socket: { port: 6379, host: '<服务器IP或Docker服务名>' }, // 若Redis设置了密码,添加以下配置 password: '<你的Redis密码>' }); - 确保错误日志完整:在
error事件中打印详细错误信息,方便定位:redisClient.on('error',(err:any)=>{ console.error('Redis连接错误:', err.message, err.stack); })
5. 权限与持久化检查
- 原生Redis:确保
/var/lib/redis目录权限正确,Redis进程可读写 - Docker Redis:检查数据卷
redis-data的挂载权限,避免持久化失败
内容的提问来源于stack exchange,提问作者Sundar Anbu
相关产品推荐
相关产品推荐

