redis 警告 WARNING: The TCP backlog xxxx

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 redissystemctl
✅ 不要重复执行 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"的脚本吗?

相关推荐
道可到3 小时前
国内最难入职的 IT 公司排行:你敢挑战哪一家?
前端·后端·面试
缓存征服者3 小时前
使用周期性线程池实现流量平滑,我将Redis并发从300+降到1
后端
深圳蔓延科技3 小时前
单点登录到底是什么?
java·后端
道可到3 小时前
程序员养生十大违章:你中了几条?
前端·后端·面试
SimonKing3 小时前
除了 ${},Thymeleaf 的这些用法让你直呼内行
java·后端·程序员
间彧3 小时前
Java拦截器与过滤器的区别及生命周期分析
后端
XXX-X-XXJ4 小时前
二:RAG 的 “语义密码”:向量、嵌入模型与 Milvus 向量数据库实操
人工智能·git·后端·python·django·milvus
努力的白熊嗨4 小时前
多台服务器文件共享存储
服务器·后端
调试人生的显微镜4 小时前
CSS开发工具推荐与实战经验,让样式开发更高效、更精准
后端