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

相关推荐
宋小黑几秒前
JDK 6到25 全版本网盘合集 (Windows + Mac + Linux)
java·后端
念何架构之路10 分钟前
Go进阶之panic
开发语言·后端·golang
先跑起来再说13 分钟前
Git 入门到实战:一篇搞懂安装、命令、远程仓库与 IDEA 集成
ide·git·后端·elasticsearch·golang·intellij-idea
码农阿豪41 分钟前
Flask应用上下文问题解析与解决方案:从错误日志到完美修复
后端·python·flask
威迪斯特1 小时前
Flask:轻量级Web框架的技术本质与工程实践
前端·数据库·后端·python·flask·开发框架·核心架构
毕设源码-钟学长1 小时前
【开题答辩全过程】以 基于Springboot的扶贫众筹平台为例,包含答辩的问题和答案
java·spring boot·后端
程序员良许2 小时前
三极管推挽输出电路分析
后端·嵌入式
Java水解2 小时前
【JAVA 进阶】Spring AOP核心原理:JDK与CGLib动态代理实战解析
后端·spring
Java水解2 小时前
Spring Boot 4 升级指南:告别RestTemplate,拥抱现代HTTP客户端
spring boot·后端
宫水三叶的刷题日记2 小时前
工商银行今年的年终奖。。
后端