Redis集群节点加载ReJSON模块失败问题求助
解决Redis ReJSON模块加载失败问题
问题原因
你用的redislabs/rejson官方镜像本身就集成了ReJSON模块,且启动时会自动加载该模块,但你自定义的redis.conf里指定了错误的模块路径/opt/rejson.so——这个路径在镜像中不存在,因此触发了加载失败的报错。
修复步骤
1. 删除配置中的手动加载指令
打开你下载的redis.conf,直接删掉最后一行的loadmodule /opt/rejson.so配置项即可。官方镜像已经默认处理了ReJSON模块的加载,无需手动添加该指令。
2. (可选)确认模块实际路径
如果确实需要手动指定模块路径,先通过以下命令确认镜像中ReJSON模块的真实位置:
docker run --rm redislabs/rejson:latest find / -name rejson.so
通常输出的路径为/usr/lib/redis/modules/rejson.so,将配置文件中的路径替换为这个实际路径即可。
3. (可选)简化Dockerfile
官方镜像已经内置Redis和ReJSON模块,你的Dockerfile可以大幅简化:
如果仅需修改端口,无需自定义其他配置,直接用以下写法:
FROM redislabs/rejson:latest ARG REDIS_PORT CMD redis-server --port $REDIS_PORT
若要保留自定义配置,确保配置文件中不再包含错误的loadmodule指令即可。
4. 重新构建并启动容器
修改完成后,执行docker-compose up --build重新启动集群,模块加载失败的问题即可解决。
内容的提问来源于stack exchange,提问作者Camille Basbous
相关产品推荐
相关产品推荐

