Laragon Redis 重启后无法启动
前言
环境:Windows10 + Laragon + Redis 8.0.1(cygwin 移植版)
现象:电脑重启前 Redis 6379 正常使用;重启后启动失败,客户端报错:
Could not connect to Redis at 127.0.0.1:6379: Connection refused
MySQL 正常启动,唯独 Redis 异常。
踩坑重点:常规
netstat查不到端口占用,极易误导大家以为是配置、rdb 文件、权限问题。
一、初步排查过程
1. 检查 6379 端口占用
打开 PowerShell 执行:
netstat -ano | findstr "6379"
无任何输出,初步判定:Redis 进程根本没有成功监听 6379 端口。
2. 手动启动 Redis 查看原始报错
进入 Laragon Redis 目录,PowerShell 需要加 .\ 执行程序:
cd D:\software\laragon\bin\redis\Redis-8.0.1-Windows-x64-cygwin
.\redis-server.exe ../../etc/redis.conf
捕获关键错误日志:
# Warning: Could not create server TCP listening socket 127.0.0.1:6379: bind: Permission denied
# Failed listening on port 6379 (tcp), aborting.
第一反应:权限不足!尝试 管理员身份运行 PowerShell、管理员启动 Laragon,问题依旧。
3. 排除常见误区
- ❌ 不是
dump.rdb持久化文件损坏(删除 rdb 测试无效) - ❌ 不是防火墙拦截(本地 127.0.0.1 不受防火墙限制)
- ❌ 不是杀毒软件拦截(关闭安全软件测试无效)
- ❌ 不是 Redis 配置文件错误(重启前配置完全一致)
二、定位根本原因:Windows WinNAT 系统预留端口(幽灵端口占用)
Windows 开启 Hyper-V / WSL2 / Docker 后,系统服务 WinNAT 开机时 随机预留一段 TCP 端口,分配给虚拟化网络使用。
被纳入预留区间的端口:
netstat看不到任何占用进程- 管理员权限也无法绑定监听
- 报错:
bind: Permission denied - 每次重启电脑,预留端口区间会重新刷新(随机性:有时候 6379 不在区间就能正常跑)
验证命令(管理员 PowerShell 执行)
netsh int ipv4 show excludedportrange protocol=tcp
输出结果:
Start Port End Port
---------- --------
6286 6385
✅ 6379 正好落在 6286 ~ 6385 系统预留端口区间!
这就是典型 Windows「幽灵端口占用」,不是程序占用,是操作系统内核锁定端口。
三、三套可行解决方案(推荐优先级排序)
方案 1:修改 Redis 端口【⭐ 首选,稳定无副作用】
避开系统预留端口段,不需要修改系统网络配置,不会影响 WSL/Docker。
当前预留区间:
6286 ~ 6385,不能选用 6380~6385!选择
6386。
-
打开 Laragon Redis 配置文件
D:\software\laragon\etc\redis.conf # port 6379 port 6386 -
Laragon Stop All,重启 Redis
-
验证端口监听
netstat -ano | findstr "6386" -
连接测试
# cli连接 redis-cli -p 6386 # PHP代码示例 $redis->connect('127.0.0.1', 6386);
后续项目所有 Redis 连接配置同步修改端口。
方案 2:临时释放 WinNAT(缺点:重启大概率复现)
管理员 PowerShell 执行:
net stop winnat
net start winnat
执行完成立刻启动 Redis。
⚠️ 不推荐长期使用,开机随机重新分配端口区间。
方案 3:永久把 6379 加入可用白名单(谨慎使用)
风险:如果你日常使用 Docker/WSL,可能造成容器端口转发冲突。
管理员 PowerShell:
net stop winnat
# 将6379排除在系统预留范围
netsh int ipv4 add excludedportrange protocol=tcp startport=6379 numberofports=1 store=persistent
net start winnat
四、通用排查总结(收藏备用)
当 Windows 出现:
bind: Permission denied,netstat 找不到占用进程,重启随机复现按下面顺序排查:
- 管理员执行
netsh int ipv4 show excludedportrange protocol=tcp - 判断目标端口是否在系统预留区间
- 在区间内:优先更换端口(最简单)
- 不在区间:排查杀毒软件、Winsock 网络栈、程序本身权限
五、避坑小贴士
- Laragon cygwin 版 Redis 对 Windows 端口权限更加敏感,遇到端口问题优先换端口;
- 开启 WSL2/Docker 的 Windows 开发机,尽量不要强依赖 6379、3306 这类固定端口;
- PowerShell 执行当前目录程序必须添加
.\,否则提示命令找不到; - 不要仅凭
netstat判断端口状态,幽灵占用场景下该命令会失效。

浙公网安备 33010602011771号