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

相关推荐
一点程序1 天前
基于SpringBoot的选课调查系统
java·spring boot·后端·选课调查系统
怪兽源码1 天前
基于SpringBoot的选课调查系统
java·spring boot·后端·选课调查系统
csdn_aspnet1 天前
ASP.NET Core 中的依赖注入
后端·asp.net·di·.net core
昊坤说不出的梦1 天前
【实战】监控上下文切换及其优化方案
java·后端
疯狂踩坑人1 天前
【Python版 2026 从零学Langchain 1.x】(二)结构化输出和工具调用
后端·python·langchain
橘子师兄1 天前
C++AI大模型接入SDK—ChatSDK封装
开发语言·c++·人工智能·后端
@ chen1 天前
Spring事务 核心知识
java·后端·spring
一点技术1 天前
基于SpringBoot的选课调查系统
java·spring boot·后端·选课调查系统
RANCE_atttackkk1 天前
Springboot+langchain4j的RAG检索增强生成
java·开发语言·spring boot·后端·spring·ai·ai编程
好好研究2 天前
Spring Boot - Thymeleaf模板引擎
java·spring boot·后端·thymeleaf