如何在MacBook M1上以非Docker方式安装RedisJson
报错根因
v1.0.4版本的rejson.so官方预编译包仅提供x86架构二进制,M1系列芯片为arm64架构,二进制架构不匹配,系统无法识别为有效的Mach-O格式文件,自然加载失败。
M1芯片非Docker部署RedisJSON可行方案
方案1:Homebrew安装(操作成本最低)
- 若未安装Redis,先执行
brew install redis完成基础环境部署 - 执行
brew tap redis/redis添加Redis官方的brew源 - 执行
brew install redisjson安装适配arm64架构的RedisJSON模块,brew会自动完成架构适配,不会出现格式兼容问题 - 确认模块文件路径:M1设备brew默认安装路径为
/opt/homebrew/,执行find /opt/homebrew -name "rejson.so"即可拿到so文件的完整路径,默认路径一般为/opt/homebrew/Cellar/redisjson/<版本号>/lib/rejson.so - 修改Redis配置文件,默认配置路径为
/opt/homebrew/etc/redis.conf,在文件中新增一行配置:loadmodule 上一步查到的rejson.so完整路径 - 执行
brew services restart redis重启Redis服务 - 验证安装:打开redis-cli执行
MODULE LIST,返回结果中存在ReJSON相关条目即为安装成功
方案2:源码编译安装(可自定义版本)
- 提前安装编译依赖:
brew install git cmake make llvm - 注意:全程使用原生arm64架构终端操作,不要开启Rosetta转译,否则编译出的二进制仍为x86架构
- 拉取RedisJSON官方源码,不要选择2.0以下的低版本(低版本无arm64适配,编译会报错),建议选择2.4+稳定版:
cd 你要存放源码的自定义目录 git clone 对应官方源码仓库 cd RedisJSON git checkout v2.6.6 # 可替换为你需要的2.x以上稳定版本号 - 在源码根目录执行
make,等待编译完成,编译产出的适配arm64架构的rejson.so文件存放在./bin/目录下 - 将编译好的rejson.so拷贝到你自定义的Redis模块存放目录,比如
/opt/redis/modules/ - 同样修改redis.conf配置文件,添加
loadmodule 你的rejson.so存放完整路径 - 重启Redis服务,通过
MODULE LIST命令验证加载状态
注意:2.x版本的RedisJSON完全兼容1.x版本的核心API,原有业务代码无需大幅修改即可正常运行,不用强行使用存在架构兼容问题的v1.0.4版本。
内容的提问来源于stack exchange,提问作者Terry Liu
相关产品推荐
相关产品推荐

