7454:M 11 Oct 2025 14:35:54.723 # WARNING: The TCP backlog setting of 511 cannot be enforced because kern.ipc.somaxconn is set to the lower value of 128. 7454:M 11 Oct 2025 14:35:54.723 # Warning: Could not create server TCP listening socket *:6379: bind: Address already in use 7454:M 11 Oct 2025 14:35:54.723 # Failed listening on port 6379 (tcp), aborting.
🔍 日志逐行解析
log
7454:M 11 Oct 2025 14:35:54.723 # WARNING: The TCP backlog setting of 511 cannot be enforced because kern.ipc.somaxconn is set to the lower value of 128.
⚠️ 警告 :Redis 希望设置 TCP 连接队列长度为 511,但系统参数
kern.ipc.somaxconn
只允许最大 128,所以实际只能用 128。✅ 影响较小:这只是性能相关的警告,在高并发连接时可能丢连接,但不影响启动。可优化,非致命。
log
7454:M 11 Oct 2025 14:35:54.723 # Warning: Could not create server TCP listening socket *:6379: bind: Address already in use
❌ 关键错误 :Redis 无法在端口
6379
上创建监听套接字,因为这个地址(端口)已经被占用!
log
7454:M 11 Oct 2025 14:35:54.723 # Failed listening on port 6379 (tcp), aborting
🛑 最终结果:由于端口被占,Redis 启动失败并中止。
✅ 根本原因
💥 端口 6379 已经被另一个 Redis 实例或其他程序占用了!
这通常发生在:
- 之前启动过 Redis 没关闭
- 多次重复启动 Redis
- 其他服务(如 Docker、另一项目)占用了 6379 端口
✅ 解决方案
✅ 方法一:杀掉占用 6379 端口的进程(推荐)
在 macOS / Linux 上执行:
bash
# 查找占用 6379 端口的进程 PID
lsof -i :6379
# 输出示例:
# COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
# redis-ser 1234 user 6u IPv6 123456 0t0 TCP *:6379 (LISTEN)
# 杀掉该进程(替换为你的 PID)
kill -9 1234
或者一行命令直接干掉:
bash
lsof -i :6379 | grep LISTEN | awk '{print $2}' | xargs kill -9
然后重新启动 Redis:
bash
redis-server
# 或通过 brew 启动(macOS)
brew services restart redis
在 Windows 上:
打开命令提示符(管理员):
cmd
# 查看哪个进程占用 6379
netstat -ano | findstr :6379
# 输出示例:
# TCP 0.0.0.0:6379 0.0.0.0:0 LISTENING 5678
# 根据 PID(如 5678)查找进程名
tasklist | findstr 5678
# 结束进程(假设是 redis-server.exe)
taskkill /PID 5678 /F
再重新启动 Redis 服务。
✅ 方法二:修改 Redis 使用其他端口(备用方案)
如果你不想动现有服务,可以让新的 Redis 实例换一个端口。
bash
# 启动 Redis 并指定端口 6380
redis-server --port 6380
或者修改配置文件 redis.conf
:
conf
port 6380
然后启动:
bash
redis-server redis.conf
✅ 方法三:检查是否已作为服务运行(macOS/Linux)
有些系统会自动把 Redis 跑成后台服务。
bash
# macOS(使用 brew 安装的服务)
brew services list | grep redis
# 如果显示 started,则说明已在运行
# 可以用下面命令重启
brew services restart redis
bash
# Ubuntu/Debian
sudo systemctl status redis
sudo systemctl restart redis
✅ 如何避免这个问题?
建议 | 说明 |
---|---|
✅ 使用服务管理命令启停 | 如 brew services start redis 或 systemctl |
✅ 不要重复执行 redis-server |
容易忘记已有实例在运行 |
✅ 开发时用 Docker 隔离 | 每个项目独立 Redis 容器 |
✅ 验证修复成功
执行:
bash
redis-cli ping
如果返回:
PONG
说明 Redis 正常运行了 ✅
✅ 总结
问题 | 解决办法 |
---|---|
Address already in use |
说明 6379 端口被占 |
Failed listening on port 6379 |
导致 Redis 启动失败 |
✅ 最佳解决 | 找出并杀死占用 6379 的进程 |
🔁 替代方案 | 改用其他端口(如 6380) |
你现在可以尝试运行:
bash
lsof -i :6379
看看是不是已经有 Redis 在跑了。如果有,kill -9 PID
杀掉它,再重试启动即可。
需要我帮你写一个"一键清理并启动 Redis"的脚本吗?