RedisJSON
RedisJSON 模块为 Redis 提供 JSON 支持。RedisJSON 允许您在 Redis 数据库中存储、更新和检索 JSON 值,类似于任何其他 Redis 数据类型。RedisJSON 还可以与RediSearch无缝协作,让您索引和查询 JSON 文档。
主要特点
- 完全支持 JSON 标准
- 用于选择/更新文档内元素的JSONPath语法(请参阅JSONPath 语法)
- 文档以树形结构存储为二进制数据,允许快速访问子元素
- 所有 JSON 值类型的类型化原子操作
使用 RedisJSON
要了解如何使用 RedisJSON,最好从 Redis CLI 开始。以下示例假定您已连接到启用了 RedisJSON 的 Redis 服务器。
redis-cli 例子
首先,redis-cli 以交互模式启动。
第一个要尝试的 RedisJSON 命令是JSON.SET,它使用 JSON 值设置 Redis 键。JSON.SET接受所有 JSON 值类型。此示例创建一个 JSON 字符串:
请注意这些命令是如何包含美元符号字符的$。这是JSON 文档中值的路径(在本例中它仅表示根)。
这里还有几个字符串操作。JSON.STRLEN 告诉你字符串的长度,你可以用JSON.STRAPPEND.
数字可以递增和相乘:
下面是一个更有趣的示例,其中包含 JSON 数组和对象:
该JSON.DEL命令会删除您使用path参数指定的任何 JSON 值。
您可以使用 RedisJSON 命令的专用子集来操作数组:
JSON 对象也有自己的命令:
要以更易于阅读的格式返回 JSON 响应,请redis-cli在原始输出模式下运行并包含格式化关键字,例如INDENT,NEWLINE和SPACE命令JSON.GET:
Python 示例
此代码片段显示了如何将 RedisJSON 与来自 Python 和redis-py 的原始 Redis 命令一起使用:
使用 Docker 运行
要使用 Docker 运行 RedisJSON,请使用 redis-stack-server Docker 映像:
有关在 Docker 容器中运行 Redis Stack 的更多信息,请参阅在 Docker 上运行 Redis Stack。
下载二进制文件
要从预编译的二进制文件下载并运行 RedisJSON:
从Redis 下载中心下载 RediSearch 的预编译版本。
使用 RedisJSON 运行 Redis:
从源代码构建
从源代码构建 RedisJSON:
克隆RedisJSON 存储库(确保包含–recursive正确克隆子模块的选项):
安装依赖项:
建造:
$ make build
加载模块到 Redis
要求:
一般来说,最好运行最新的 Redis 版本。
如果您的操作系统有Redis 6.x 包或更高版本,您可以使用操作系统包管理器安装它。
否则,您可以调用
$ ./deps/readies/bin/getredis
要加载 RedisJSON 模块,请使用以下方法之一:
Makefile 配方
配置文件
命令行选项
模块加载命令
Makefile 配方
使用 RedisJSON 运行 Redis:
$ make run
配置文件
或者,您可以通过将以下内容添加到文件中,让 Redis 在启动期间加载模块 redis.conf:
loadmodule /path/to/module/target/release/librejson.so
在 Mac OS 上,如果此模块构建为动态库,请运行:
loadmodule /path/to/module/target/release/librejson.dylib
在上面的行中替换/path/to/module/为模块的实际路径。
或者,您可以从预编译的二进制文件下载并运行 RedisJSON:
从Redis 下载中心下载 RedisJSON 的预编译版本。
命令行选项
或者,您可以让 Redis 使用以下命令行参数语法加载模块:
$ redis-server –loadmodule /path/to/module/librejson.so
在上面的行中,替换/path/to/module/为模块库的实际路径。
MODULE LOAD 命令
您也可以使用MODULE LOAD命令加载 RedisJSON。请注意,这MODULE LOAD是一个危险的命令,出于安全考虑,将来可能会被阻止/弃用。
成功加载模块后,Redis 日志中应包含类似以下内容的行:
…
9:M 11 Aug 2022 16:24:06.701 *
9:M 11 Aug 2022 16:24:06.701 *
9:M 11 Aug 2022 16:24:06.701 *
9:M 11 Aug 2022 16:24:06.701 *
9:M 11 Aug 2022 16:24:06.701 * Module ‘ReJSON’ loaded from /opt/redis-stack/lib/rejson.so
…
局限性
传递给命令的 JSON 值的深度最多可达 128。如果传递给命令的 JSON 值包含嵌套级别超过 128 的对象或数组,则该命令会返回错误。
命令
命令概述
索引/搜索 JSON 文档
结合 RedisJSON 和 RediSearch 来索引和搜索 JSON 文档
小路
访问 JSON 文档中的特定元素
客户端库
RedisJSON 客户端库列表
表现
性能基准
RedisJSON 内存使用
调试内存消耗
开发人员说明
关于调试、测试和文档的说明
最后编辑:Jeebiz 更新时间:2025-05-12 11:33