MacBook Pro M1通过IntelliJ启动项目时Embedded Redis启动失败报错
问题排查与解决方案
根因定位
从提供的信息可明确两个核心触发原因:
- 端口占用:Redis默认端口6379已被PID为3387的本机Redis进程占用,项目内置的嵌入式Redis无法绑定该端口,对应端口查询结果如下:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME redis-ser 3387 josephantony 6u IPv4 0x9c37a0d6c1c8e2c9 0t0 TCP localhost:6379 (LISTEN) redis-ser 3387 josephantony 7u IPv6 0x9c37a0d6ba1e9219 0t0 TCP localhost:6379 (LISTEN)
- 架构兼容问题:MacBook Pro M1为ARM架构,旧版本embedded-redis依赖默认携带x86架构的Redis二进制文件,存在架构不兼容无法启动的问题,对应错误栈核心报错为
Can't start redis server。
分步解决步骤
1. 释放被占用的6379端口
- 执行命令终止已运行的Redis进程:
kill -9 3387 - 执行
lsof -i:6379验证端口是否释放,无输出即为空闲,此时可先重启项目验证是否能正常启动 - 若Redis为开机自启,可执行
brew services stop redis关闭自启(适用于Homebrew安装的Redis)
2. 兼容M1架构适配(释放端口后仍报错时操作)
旧版本embedded-redis不支持ARM架构,可任选以下一种方案处理:
- 方案一:替换适配版本:修改项目依赖中的embedded-redis为支持ARM架构的社区适配版本
- 方案二:指定本地Redis路径:修改
EmbeddedRedisConfiguration配置类,在初始化RedisServer时指定本地已安装的可执行Redis路径,示例代码如下:
RedisServer redisServer = RedisServer.builder() // 替换为你本地Redis的实际安装路径,Homebrew安装的默认路径为/opt/homebrew/bin/redis-server .redisExecProvider(() -> new File("/opt/homebrew/bin/redis-server")) .port(6379) .build();
- 方案三:禁用嵌入式Redis:直接使用本地已启动的Redis服务,注释掉
EmbeddedRedisConfiguration类的生效注解,修改项目配置文件中的Redis连接地址为localhost:6379即可。
3. 验证修复效果
重启项目,若无BeanCreationException相关报错,Redis服务初始化正常即为修复成功。
内容的提问来源于stack exchange,提问作者jamie jacob
相关产品推荐
相关产品推荐

