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

相关推荐
javachen__10 分钟前
Spring Boot将错误日志发送到企微微信或钉钉群
spring boot·后端·钉钉
JaguarJack31 分钟前
PHP 基金会宣布:Streams 现代化 将引入事件循环与异步新能力
后端·php
Mos_x39 分钟前
HeidiSQL导入与导出数据
java·后端
oak隔壁找我1 小时前
Elasticsearch QueryBuilders 高级使用案例
java·后端
Zhang青山1 小时前
【玩转全栈】----Django基本配置和介绍
java·后端
勇敢牛牛_2 小时前
Rust真的适合写业务后端吗?
开发语言·后端·rust
不爱学英文的码字机器2 小时前
深度解析《AI+Java编程入门》:一本为零基础重构的Java学习路径
java·人工智能·后端·重构
IT_陈寒3 小时前
Vue3性能翻倍秘籍:5个Composition API技巧让你的应用快如闪电⚡
前端·人工智能·后端
Zhang青山3 小时前
使用 Nginx 轻松处理跨域请求(CORS)
java·后端
Victor3564 小时前
Redis(99)Redis的高可用性如何实现?
后端