欢迎关注专栏:CSDN:AI 开发技术
- 上一篇:Redis 基础理论与核心架构解析
- 下一篇:Redis 核心数据结构速查与终端演练
Redis 多环境安装部署与网络排错实战
- Redis 多环境安装部署与网络排错实战
- 1. 业务背景 / 核心问题
- 2. Docker 容器化部署方案 (推荐)
- 2.1 编写 `docker-compose.yml`
- 2.2 容器启停与客户端交互
- 3. Windows (基于 WSL) 原生部署与排错
- 3.1 基础安装与配置
- 3.2 【进阶排错】配置宿主机端口转发与防火墙
- 3.3 【进阶排错】解决端口占用启动失败
- 4. 总结
Redis 多环境安装部署与网络排错实战
关键词:Docker Compose, WSL, protected-mode, 端口转发, 防火墙规则
阅读耗时:约 15 分钟
1. 业务背景 / 核心问题
为满足不同的开发习惯与部署场景,Redis 提供了多种环境运行方案。本文将重点介绍基于 Docker 容器的轻量级部署方案,以及在 Windows (WSL2) 系统下的原生编译安装方案。同时,针对在宿主机访问及端口占用中常见的坑点提供完整可落地的解决方案。
2. Docker 容器化部署方案 (推荐)
对于绝大多数本地开发及测试环境,使用 Docker 运行 Redis 是最干净、最轻量的方案。
2.1 编写docker-compose.yml
在指定目录下创建配置文件,我们将采用redis:7-alpine轻量级镜像,并强制开启 AOF 实时持久化:
version:"3.9"services:redis:image:redis:7-alpinecontainer_name:local_redisrestart:alwaysports:# 仅绑定本机回环地址,避免把未鉴权的开发实例暴露到局域网-"127.0.0.1:6380:6379"volumes:-./data:/datacommand:>redis-server --appendonly yes --appendfsync everysec2.2 容器启停与客户端交互
在docker-compose.yml所在目录执行:
# 1. 后台启动容器dockercompose up-d# 2. 查看容器运行状态dockercomposeps# 3. 验证服务是否就绪dockerexec-itlocal_redis redis-cliping# 4. 进入交互式客户端(避免中文乱码可附加 --raw 参数)dockerexec-itlocal_redis redis-cli# 5. 停止并移除容器(挂载的 ./data 目录数据会保留)dockercompose down3. Windows (基于 WSL) 原生部署与排错
如果您倾向于更贴近原生 Linux 的运行环境,可通过 WSL 来部署。
3.1 基础安装与配置
启动环境:以管理员身份打开 PowerShell,输入
wsl进入 Ubuntu 子系统。安装服务端:
sudoaptupdatesudoaptinstallredis-server先完成本机验证:
默认情况下,Redis 只监听本机地址。先保持该安全默认值,启动服务并在 WSL 内验证:sudosystemctlenable--nowredis-server redis-cliping如果当前 WSL 发行版未启用 systemd,可改用:
sudoserviceredis-server start确有局域网访问需求时再开放监听:
不要通过关闭protected-mode并绑定0.0.0.0的方式裸露 Redis。至少应同时完成以下控制:- 在
/etc/redis/redis.conf中只绑定需要的接口地址; - 保持
protected-mode yes; - 使用 Redis 6+ ACL 为应用创建最小权限用户;
- 在 Windows 防火墙中把来源地址限制为可信网段;
- 生产环境优先放在私有网络内,并按需要启用 TLS。
修改配置后重启并检查监听地址:
sudosystemctl restart redis-server ss-ltnp|grep6379ACL 密码不要直接写进文章、脚本或 Git 仓库。远程开放前,应先参考 Redis 官方安全文档 完成鉴权和网络隔离。
- 在
3.2 【进阶排错】配置宿主机端口转发与防火墙
业务场景:由于 WSL2 采用独立的虚拟网卡,局域网内的其他设备无法直接通过 Windows 宿主机的 IP 访问到 WSL 内的 Redis 服务。需通过 Windows 的netsh设置端口转发。
使用管理员权限打开 PowerShell 执行:
# 1. 查询当前 WSL 2 的内部 IP 地址 (假设结果为 192.168.0.104)wsl--hostname-I# 2. 配置 Windows 宿主机到 WSL 的端口转发;将 <WSL_IP> 替换为上一步结果netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=6379 connectaddress=<WSL_IP> connectport=6379# 3. 仅允许可信网段访问;请按实际网络替换 RemoteAddressNew-NetFirewallRule-DisplayName"Allow Redis from trusted LAN"-Direction Inbound-Action Allow-Protocol TCP-LocalPort 6379-RemoteAddress 192.168.1.0/24如何清理/撤销上述配置?
# 删除端口转发规则netsh interface portproxy delete v4tov4 listenport=6379# 删除防火墙入站规则Remove-NetFirewallRule-DisplayName"Allow Redis from trusted LAN"3.3 【进阶排错】解决端口占用启动失败
报错现象:
在 WSL 中启动 Redis 时抛出异常:Could not create Server TCP listening socket *:6379: bind: Address already in use
解决方案:
该错误只说明 6379 端口已经有进程监听,不代表它一定是僵尸进程。先确认占用者以及 Redis 是否已由系统服务正常启动,再决定停止哪个进程。
# 1. 查看监听 6379 端口的进程sudoss-ltnp|grep6379# 2. 如果它是系统服务,优先通过服务管理器停止sudosystemctl stop redis-server# 3. 确认端口释放后重新启动sudosystemctl start redis-server只有在确认目标 PID、普通停止命令无效且能够接受未完成写入丢失时,才考虑发送SIGKILL;不要把kill -9作为默认排错步骤。
4. 总结
无论是选择 Docker 容器的一键拉起,还是基于 WSL 的原生排错调优,掌握正确的配置与网络打通能力,能够极大降低后续开发过程中的环境阻力。在完成了基础服务搭建后,我们即可开始进行 Redis 核心数据结构的实战演练。