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"的脚本吗?

相关推荐
摸鱼的春哥29 分钟前
Agent教程17:LangChain的持久化和人工干预
前端·javascript·后端
风象南1 小时前
OpenClaw 登顶 GitHub Star 榜首:一个程序员 13 年后的"重新点火"故事
人工智能·后端
Victor3561 小时前
MongoDB(25)什么是单字段索引?
后端
Victor3561 小时前
MongoDB(26)什么是复合索引?
后端
程序员爱钓鱼2 小时前
Go操作Excel实战详解:github.com/xuri/excelize/v2
前端·后端·go
oak隔壁找我9 小时前
MySQL中 SHOW FULL PROCESSLIST` 输出中 `State` 列的所有可能值
后端
上进小菜猪10 小时前
基于 YOLOv8 的面向文档智能处理的表格区域检测系统 [目标检测完整源码]
后端
oak隔壁找我10 小时前
JVM常用调优参数
java·后端
IT_陈寒14 小时前
React状态管理终极对决:Redux vs Context API谁更胜一筹?
前端·人工智能·后端
晨星shine14 小时前
GC、Dispose、Unmanaged Resource 和 Managed Resource
后端·c#