首页/新闻资讯/正文详情

RedisJSON模块编译安装与生产部署指南

发布时间:2026/11/6 7:03:25 来源:云帆数科 栏目:资讯中心
RedisJSON模块编译安装与生产部署指南
1. RedisJSON 模块概述RedisJSON 是 Redis 官方维护的一个高性能 JSON 数据处理模块它允许 Redis 原生支持 JSON 格式数据的存储和操作。作为 Redis Stack 的重要组成部分这个模块通过扩展 Redis 命令集的方式为开发者提供了完整的 JSON 操作能力。在 Redis 8.0 及更高版本中RedisJSON 已经作为内置模块包含在 Redis Stack 发行版中。但对于仍在使用 Redis 7.x 版本的用户需要通过手动编译安装的方式集成该模块。本文将以 Redis 7.4.7 版本为例详细介绍从源码编译到生产部署的完整过程。提示在生产环境部署前建议先在测试环境验证模块兼容性。不同 Linux 发行版可能存在依赖库差异。2. 环境准备与依赖安装2.1 基础环境说明本次安装环境配置如下操作系统Amazon Linux 2023内核版本 6.1Redis 版本7.4.7编译器GCC 11.3.1系统包管理器DNFYUM 的下一代替代品2.2 开发工具链安装编译 RedisJSON 需要完整的开发环境支持。执行以下命令安装基础编译工具sudo dnf install -y \ gcc \ gcc-c \ make \ cmake \ autoconf \ automake \ libtool \ pkgconfig \ openssl-devel这些工具包提供了GCC/GC/C 编译器套件Make构建自动化工具CMake跨平台构建系统开发库头文件openssl-devel 等2.3 Rust 工具链安装RedisJSON 的编译依赖 Rust 语言环境需要安装 rustup 工具链管理器curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh安装过程中会提示选择安装选项通常选择默认配置选项1即可。安装完成后需要使环境变量生效source $HOME/.cargo/env验证安装是否成功rustc --version # 应显示 1.70.0 或更高版本 cargo --version # 应显示对应的 Cargo 版本3. RedisJSON 源码编译3.1 获取源代码建议在 /usr/local/soft/modules/ 目录下进行操作mkdir -p /usr/local/soft/modules/ cd /usr/local/soft/modules git clone --recursive https://github.com/RedisJSON/RedisJSON.git cd RedisJSON git checkout v2.8.16 # 使用稳定版本注意--recursive参数确保同时克隆子模块。如果克隆时遗漏可后续执行git submodule update --init --recursive3.2 依赖项配置运行 setup 脚本自动配置环境./sbin/setup该脚本会检查并安装缺失的依赖项配置编译环境设置 Python 测试环境3.3 常见问题解决在 Amazon Linux 2023 上可能遇到以下问题问题1raven-release 安装失败错误信息示例[FAILED] raven-release.el9.noarch.rpm: Status code: 403解决方案 修改deps/readies/bin/getepel文件注释掉install_raven相关调用。问题2LLVM 工具链问题错误信息示例command failed: /usr/local/soft/modules/RedisJSON/deps/readies/bin/getclang --modern解决方案 修改deps/readies/bin/getclang文件中的redhat_compat方法def redhat_compat(self): if not self.modern: return self.run(%s/bin/getepel % READIES, sudoTrue) self.install(clang) self.install(llvm)3.4 执行编译完成环境配置后执行正式编译make成功编译后生成的模块文件位于bin/linux-x64-release/rejson.so编译过程通常需要 5-10 分钟取决于机器性能。如果遇到内存不足的情况可以尝试增加 swap 空间。4. 模块部署与验证4.1 部署模块文件将编译好的模块文件复制到 Redis 的模块目录mkdir -p /usr/local/soft/redis-7.4.7/modules cp bin/linux-x64-release/rejson.so /usr/local/soft/redis-7.4.7/modules/ chmod x /usr/local/soft/redis-7.4.7/modules/rejson.so # 确保有执行权限4.2 配置 Redis 加载模块修改 redis.conf 配置文件添加以下内容loadmodule /usr/local/soft/redis-7.4.7/modules/rejson.so然后重启 Redis 服务使配置生效redis-server /path/to/redis.conf4.3 验证模块加载使用 redis-cli 连接服务器验证模块是否加载成功redis-cli --user admin --pass 123456 127.0.0.1:6379 MODULE LIST成功加载时应该看到类似输出1) 1) name 2) ReJSON 3) ver 4) (integer) 20816 5) path 6) /usr/local/soft/redis-7.4.7/modules/rejson.so 7) args 8) (empty array)也可以通过 INFO 命令查看127.0.0.1:6379 INFO Modules # Modules module:nameReJSON,ver20816,api1,filters0,usedby[],using[],options[handle-io-errors]5. 生产环境注意事项5.1 版本兼容性RedisJSON 2.x 版本要求 Redis 6.0不同 RedisJSON 版本对 Redis 的兼容性可能有差异建议在升级 Redis 主版本时重新编译模块5.2 性能调优对于高负载环境建议调整以下配置参数# 在 redis.conf 中增加 rejson.maxmemory_policy allkeys-lru rejson.threads 4 # 根据CPU核心数调整5.3 安全建议模块文件应存放在只有 Redis 用户有权限访问的目录定期检查模块是否有安全更新限制对 JSON 命令的访问权限通过 ACL5.4 监控指标重要的监控指标包括rejson.memory_usedJSON 数据占用的内存rejson.commands_processed处理的命令数量rejson.errors错误计数可以通过以下命令获取127.0.0.1:6379 INFO ReJSON6. 基本使用示例6.1 存储 JSON 文档127.0.0.1:6379 JSON.SET user:1 $ {name:John,age:30,address:{city:New York}} OK6.2 查询字段值127.0.0.1:6379 JSON.GET user:1 $.name [\John\]6.3 更新字段127.0.0.1:6379 JSON.SET user:1 $.age 31 OK6.4 数组操作127.0.0.1:6379 JSON.SET user:1 $.hobbies [reading,swimming] OK 127.0.0.1:6379 JSON.ARRAPPEND user:1 $.hobbies {sport:tennis} (integer) 37. 高级功能探索7.1 索引与搜索RedisJSON 可以与 RediSearch 模块配合实现 JSON 文档的全文搜索127.0.0.1:6379 FT.CREATE userIdx ON JSON SCHEMA $.name AS name TEXT $.age AS age NUMERIC OK 127.0.0.1:6379 FT.SEARCH userIdx age:[30 40]7.2 原子操作所有 RedisJSON 命令都是原子操作适合需要强一致性的场景127.0.0.1:6379 JSON.MSET user:1 $.name Alice user:2 $.name Bob OK7.3 批量操作使用管道(pipeline)提高批量操作效率echo JSON.SET doc1 $ {\id\:1} JSON.SET doc2 $ {\id\:2} JSON.MGET doc1 doc2 $.id | redis-cli --pipe8. 故障排查指南8.1 模块加载失败现象Redis 启动时报模块加载错误可能原因模块文件路径不正确文件权限问题版本不兼容解决方案检查 redis.conf 中的路径是否正确确保 redis 用户有读取权限验证模块与 Redis 版本兼容性8.2 命令未找到现象执行 JSON 命令返回 (error) ERR unknown command可能原因模块未正确加载命令拼写错误解决方案使用MODULE LIST确认模块已加载检查命令语法参考官方文档8.3 性能问题现象JSON 操作响应缓慢可能原因大文档操作复杂路径查询内存不足解决方案避免存储过大的 JSON 文档简化查询路径增加服务器内存9. 最佳实践建议文档设计保持 JSON 结构扁平化避免深层嵌套超过3层将大数组拆分为多个键查询优化使用特定路径而非通配符对频繁查询的字段建立 RediSearch 索引利用管道批量操作内存管理监控 JSON 数据内存使用设置合理的 maxmemory-policy考虑对冷数据使用 JSON.DEL 释放内存高可用在主从架构中确保所有节点加载相同模块版本哨兵模式下模块需在每个实例上单独配置集群模式下模块需在所有节点部署10. 版本升级策略当需要升级 RedisJSON 版本时建议采用以下步骤在测试环境验证新版本兼容性备份现有数据逐个节点滚动升级停止 Redis 实例替换模块文件重启实例验证数据完整性监控系统稳定性对于关键业务系统建议在低峰期进行升级操作并准备好回滚方案。

相关推荐

Kubernetes集群成本与适用性深度解析
Kubernetes集群成本与适用性深度解析

1. Kubernetes集群的成本真相:从技术炫技到商业考量第一次接触Kubernetes时,大多数团队都会被其强大的容器编排能力所吸引。但很少有人真正计算过,维护一个生产级Kubernetes集群需要投入多少隐性成本。让我们拆解一个典型的中小型企业集群配置… · 2026/11/6 7:02:25

现代OpenGL开发环境搭建与配置指南
现代OpenGL开发环境搭建与配置指南

1. 现代OpenGL开发环境搭建概述《OpenGL编程指南》第八版作为图形编程领域的经典教材,其环境搭建与传统OpenGL有着显著区别。现代OpenGL(3.0版本)完全基于可编程渲染管线,这意味着我们需要从底层开始重新理解整个图形渲染流程。我… · 2026/11/6 7:02:25

Elasticsearch生产环境稳定性与性能优化实战
Elasticsearch生产环境稳定性与性能优化实战

1. Elasticsearch生产环境稳定运行的底层逻辑Elasticsearch作为分布式搜索和分析引擎,在生产环境中面临着数据一致性、查询性能、资源消耗等多重挑战。我经历过从单节点到上百节点集群的完整演进过程,发现90%的生产事故都源于对基础原理的误解。比如一个… · 2026/11/6 7:02:25

OpenStack Cinder备份可靠性增强:三重校验与状态机治理
OpenStack Cinder备份可靠性增强:三重校验与状态机治理

简介:这是一份面向OpenStack运维工程师与云平台开发者的Python工具脚本,专为简化Cinder卷备份/还原流程而设计,有效应对Cinder Backup Service在多租户支持、备份可见性控制及自动轮换等方面的原生限制。资源包共4个文件(11KB&… · 2026/11/6 7:58:33

电商履约系统架构设计与核心流程解析
电商履约系统架构设计与核心流程解析

1. 项目概述 "履约全局"这个概念在电商领域已经存在多年,但真正能把商品从仓库到用户手中的全链路讲透的人并不多。作为经历过完整电商系统开发的老兵,我想用这篇长文把履约环节的每个技术细节掰开揉碎,分享给正在这个领域奋斗的同… · 2026/11/6 7:58:33

字符串解码算法:栈结构处理嵌套编码
字符串解码算法:栈结构处理嵌套编码

1. 问题背景与需求分析 字符串解码是算法面试中的经典题型,力扣第394题要求实现一个能够处理嵌套编码字符串的解码器。这类问题在实际开发中有着广泛的应用场景,比如JSON解析、模板引擎处理、配置文件读取等场景都会遇到类似的字符串解析需求。 给定一个… · 2026/11/6 7:58:33

基于Prometheus的企业网站自动化监控方案
基于Prometheus的企业网站自动化监控方案

1. 项目概述 在企业IT运维工作中,网站可用性监控是保障业务连续性的基础环节。传统的人工巡检方式效率低下,而市面上的SaaS监控服务又往往存在价格昂贵、数据隐私等问题。本文将分享一套基于开源工具Prometheus的网站监控方案,实现从探测到告… · 2026/11/6 7:58:33

电商履约系统架构设计与高并发优化实践
电商履约系统架构设计与高并发优化实践

1. 项目概述 在电商行业摸爬滚打多年,我深刻体会到履约系统才是真正考验技术团队功力的战场。商品从下单到交付用户手中,看似简单的流程背后隐藏着数十个关键环节和上百个技术决策点。今天我就以一线开发者的视角,带大家完整拆解这个"黑… · 2026/11/6 7:58:33

E3-1231 v3+B85黑苹果EFI配置与排错指南
E3-1231 v3+B85黑苹果EFI配置与排错指南

简介:这份EFI引导包面向使用Intel E3 1231V3处理器与B85 D3H主板的黑苹果用户,提供一套围绕该硬件组合整理的引导配置,重点覆盖声卡、显卡及常见外设的兼容性适配,适合具备一定黑苹果安装基础、希望减少反复调试的玩家参考。压缩包… · 2026/11/6 7:57:33

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:27:59

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:03

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:07

三菱PLC数据采集到数据库的时序设计:Python+MC协议实战
三菱PLC数据采集到数据库的时序设计:Python+MC协议实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11

ASIC主模式RTL设计:状态机与三态驱动的流片级实现
ASIC主模式RTL设计:状态机与三态驱动的流片级实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11

STM32嵌入式C++开发:GDB调试与Renode仿真实战指南
STM32嵌入式C++开发:GDB调试与Renode仿真实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:27:59

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:03

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:07

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码