You need to enable JavaScript to run this app.
文档中心
缓存数据库 Redis 版

缓存数据库 Redis 版

复制全文
下载 pdf
扩展模块
Valkey-Json
复制全文
下载 pdf
Valkey-Json
缓存数据库 Redis 版提供了基于 Valkey 模块的 Valkey-Json 扩展模块,支持以原生方式存储、查询和修改 JSON 数据,免除将 JSON 序列化为字符串或拆分为 HASH 字段的繁琐操作。Valkey-Json 实现完全符合 RFC7159 和 ECMA-404 JSON 数据交换标准,并通过 JSONPath 查询语言提供高级查询能力,包括通配符选择、过滤表达式、数组切片、联合操作以及递归搜索。本文介绍缓存数据库 Redis 版的 Valkey-Json 扩展模块相关信息,包括功能特性、使用限制以及具体的命令语法。​
前提条件​
  • 实例的版本需同时满足如下要求才可使用 Valkey-Json 扩展模块:​
  • 数据库版本需为 Redis 7.0。​
  • Proxy 小版本需大于等于 1.604.0。​
  • Server 小版本需大于等于 7.604.0。​
说明​
您可以在实例信息页签下查看实例的数据库版本和小版本信息,具体操作步骤,请参见查看实例信息。​
  • 实例状态需为运行中。关于实例状态的更多说明,请参见实例状态。​
功能特性​
缓存数据库 Redis 版的 Valkey-Json 扩展模块提供以下核心能力:​
  • 原生 JSON 存储:将 JSON 文档以原生数据类型保存在 Redis 中,避免序列化与反序列化带来的性能损耗。​
  • JSONPath 查询:通过 JSONPath 表达式进行精准定位与批量更新,支持通配符(*)、递归下降(..)、数组切片([start:end:step])、联合([ , ])以及过滤表达式(?())等高级语法。​
  • 就地更新:支持对 JSON 文档中的特定字段或元素进行原子性更新,无需重写整个文档。​
  • 类型完备:完整支持 object、array、string、number、integer、boolean 以及 null 等 JSON 类型。​
使用限制​
  • 性能特性:JSON 操作的性能主要受 JSONPath 表达式复杂度以及 JSON 文档大小、深度的影响。在使用直接路径(如 $.user.name)时,JSON.GET、JSON.SET、JSON.DEL、JSON.NUMINCRBY、JSON.STRAPPEND、JSON.ARRAPPEND 等大部分命令的时间复杂度通常为 O(1);而使用递归或过滤路径(如 $..[?(@.active==true)])时,复杂度可能上升至 O(N)。建议尽量减少深层嵌套,并合理使用过滤路径以获得最佳性能。​
  • 常见错误前缀:每条错误信息都带有特定前缀,便于排查问题:​
  • ERR:通用错误。​
  • LIMIT:超出大小限制的错误,例如文档大小或嵌套深度超限。​
  • NONEXISTENT:键或路径不存在。​
  • OUTOFBOUNDARIES:数组下标越界。​
  • SYNTAXERR:语法错误。​
  • WRONGTYPE:值类型错误。​
路径语法​
Valkey-Json 支持两种路径语法:​
  • 受限语法(Restricted Syntax):查询能力有限,仅支持 .、[] 等基础操作符。​
如果查询路径以 $ 开头,使用增强语法;否则使用受限语法。​
增强语法符号与表达式​
​
符号 / 表达式​
说明​
$​
根元素。​
. 或 []​
子元素操作符。​
..​
递归下降。​
*​
通配符,匹配对象或数组中的所有元素。​
[]​
数组下标操作符,下标从 0 开始。​
[ , ]​
联合操作符。​
[start:end:step]​
数组切片操作符。​
?()​
对当前数组或对象应用过滤表达式。​
()​
过滤表达式。​
@​
在过滤表达式中引用当前正在处理的节点。​
==​
等于,用于过滤表达式。​
!=​
不等于,用于过滤表达式。​
>​
大于,用于过滤表达式。​
>=​
大于等于,用于过滤表达式。​
<​
小于,用于过滤表达式。​
<=​
小于等于,用于过滤表达式。​
&&​
逻辑与,用于组合多个过滤表达式。​
||​
逻辑或,用于组合多个过滤表达式。​
​
受限语法符号与表达式​
​
符号 / 表达式​
说明​
. 或 []​
子元素操作符。​
[]​
数组下标操作符,下标从 0 开始。​
​
命令语法​
命令列表​
Valkey-Json 支持的命令如下表所示。​
说明​
针对下表中的命令语法,定义如下:​
  • 大写关键字:命令关键字,如 JSON.SET。​
  • 小写关键字:可自定义的参数。​
  • []:[] 内的为可选参数,不在 [] 内的为必选参数。​
  • <可选项 1>|<可选项 2>|<可选项 n>:一组互斥的参数可选项,即仅支持从可选项中选择一个参数进行设置。​
​
命令​
语法​
说明​
JSON.SET​
JSON.SET <key> <path> <json> [NX | XX]​
在指定 path 上写入 JSON 值。​
JSON.GET​
JSON.GET <key> [INDENT <indent>] [NEWLINE <newline>] [SPACE <space>] [NOESCAPE] [path ...]​
读取一个或多个路径上的 JSON 值,并以序列化后的 JSON 字符串返回。​
JSON.MGET​
JSON.MGET <key> [<key> ...] <path>​
从多个 JSON 键上读取同一路径的值。​
JSON.MSET​
JSON.MSET <key> <path> <json> [<key> <path> <json> ...]​
原子性地为多个键设置 JSON 值。​
JSON.DEL​
JSON.DEL <key> [path]​
删除指定路径上的 JSON 值。​
JSON.FORGET​
JSON.FORGET <key> [path]​
JSON.DEL 的别名。​
JSON.CLEAR​
JSON.CLEAR <key> [path]​
清空数组或对象内容,但保留容器本身。​
JSON.TYPE​
JSON.TYPE <key> [path]​
返回指定路径上值的 JSON 类型。​
JSON.RESP​
JSON.RESP <key> [path]​
以 RESP 表示形式返回指定路径上的 JSON 值。​
JSON.NUMINCRBY​
JSON.NUMINCRBY <key> <path> <number>​
将路径上的数值增加指定增量。​
JSON.NUMMULTBY​
JSON.NUMMULTBY <key> <path> <number>​
将路径上的数值乘以给定因子。​
JSON.STRAPPEND​
JSON.STRAPPEND <key> [path] <json_string>​
向路径上的 JSON 字符串追加内容。​
JSON.STRLEN​
JSON.STRLEN <key> [path]​
返回路径上 JSON 字符串的长度。​
JSON.TOGGLE​
JSON.TOGGLE <key> [path]​
在 true 与 false 之间切换路径上的布尔值。​
JSON.ARRAPPEND​
JSON.ARRAPPEND <key> <path> <json> [<json> ...]​
向数组末尾追加一个或多个 JSON 值。​
JSON.ARRINDEX​
JSON.ARRINDEX <key> <path> <json-scalar> [start [end]]​
查找数组中指定标量值首次出现的位置。​
JSON.ARRINSERT​
JSON.ARRINSERT <key> <path> <index> <json> [<json> ...]​
在数组指定下标之前插入一个或多个值。​
JSON.ARRLEN​
JSON.ARRLEN <key> [path]​
返回路径上数组的长度。​
JSON.ARRPOP​
JSON.ARRPOP <key> [path [index]]​
从数组中弹出指定下标的元素。​
JSON.ARRTRIM​
JSON.ARRTRIM <key> <path> <start> <end>​
将数组裁剪为闭区间 [start, end] 对应的子数组。​
JSON.OBJKEYS​
JSON.OBJKEYS <key> [path]​
返回路径上对象的键名列表。​
JSON.OBJLEN​
JSON.OBJLEN <key> [path]​
返回路径上对象包含的键数量。​
​
注意事项​
  • 如需使用 Valkey-Json 功能,请提交工单联系技术支持申请使用。​
  • 申请完成后,拥有 Administrator 角色的账号默认具备 Valkey-Json 相关命令的所有权限。您也可以根据业务需要创建新的角色,并通过该角色的账号登录 Redis 后使用 Valkey-Json 相关命令。创建角色的具体操作步骤,请参见创建角色。​
  • 缓存数据库 Redis 版支持对 Valkey-Json 数据类型进行大、热 Key 分析,能够帮助及时发现并分析数据库中的热 Key 和大 Key 详情,为您优化热 Key 和大 Key 提供数据参考。具体操作步骤,请参见大 Key 分析和热 Key 分析。​
JSON.SET​
​
类别​
说明​
命令语法​
JSON.SET <key> <path> <json> [NX | XX]​
时间复杂度​
O(N),其中 N 为路径匹配到的 JSON 值数量。​
命令描述​
在指定 path 上写入 JSON 值。该命令既可覆盖已有值,也可在满足路径规则时为对象新增成员。若路径指向不存在的父节点、类型不匹配或数组下标越界,则会返回错误。​
选项​
  • <key>:JSON 文档的键名,必填。​
  • <path>:目标 JSON 路径,必填。​
  • <json>:要写入的 JSON 序列化值,必填。​
  • NX:仅当目标路径不存在时才设置,选填。​
  • XX:仅当目标路径已存在时才设置,选填。​
返回值​
  • 成功时返回 OK。​
  • 当 NX/XX 条件不满足时:RESP2 返回 Nil,RESP3 返回 Null。​
  • 其他情况返回相应的异常信息。​
示例​
命令示例。​
JSON.SET k1 . '{"firstName":"John","lastName":"Smith","age":27}'​
​
返回示例。​
OK​
​
JSON.GET​
​
类别​
说明​
命令语法​
JSON.GET <key> [INDENT <indent>] [NEWLINE <newline>] [SPACE <space>] [NOESCAPE] [path ...]​
时间复杂度​
O(N),其中 N 为路径数量。​
命令描述​
读取一个或多个路径上的 JSON 值,并以序列化后的 JSON 字符串返回。支持通过 INDENT、NEWLINE、SPACE 控制格式化输出,也可通过 NOESCAPE 控制转义行为。​
选项​
  • <key>:JSON 文档的键名,必填。​
  • INDENT <indent>:缩进字符,选填。​
  • NEWLINE <newline>:换行字符,选填。​
  • SPACE <space>:空格字符,选填。​
  • NOESCAPE:输出时不对非 ASCII 字符做转义,选填。​
  • <path>:要读取的 JSON 路径,可指定多个;省略时读取根值。​
返回值​
  • 增强路径下,单个路径返回匹配结果数组的序列化字符串;多个路径返回以路径为键、结果为值的 JSON 对象字符串。​
  • 受限路径下,返回该路径对应值的序列化 JSON。​
  • 路径或键不存在时,返回空数组、Nil/Null,具体取决于路径语法与协议版本。​
示例​
命令示例。​
JSON.GET k1 $.firstName $.lastName $.age​
​
返回示例。​
"{\"$.firstName\":[\"John\"],\"$.lastName\":[\"Smith\"],\"$.age\":[27]}"​
​
JSON.MGET​
​
类别​
说明​
命令语法​
JSON.MGET <key> [<key> ...] <path>​
时间复杂度​
O(N),其中 N 为键数量。​
命令描述​
从多个 JSON 键上读取同一路径的值,并返回对应的序列化结果数组。对于不存在的键、路径不存在或无效路径,对应位置返回空值,整体命令不会中断。​
选项​
  • <key>:一个或多个 JSON 文档键名,必填。​
  • <path>:所有键共用的目标 JSON 路径,必填。​
返回值​
  • 返回与输入键数量等长的数组。​
  • 每个元素要么是对应路径上的序列化 JSON,要么是空值(RESP2 为 Nil,RESP3 为 Null)。​
  • 若某个键存在但不是 JSON 键,返回 WRONGTYPE 错误。​
示例​
命令示例。​
JSON.MGET k1 k2 k3 $.address.city​
​
返回示例。​
1) "[\"New York\"]"​
2) "[\"Boston\"]"​
3) "[\"Seattle\"]"​
​
JSON.MSET​
​
类别​
说明​
命令语法​
JSON.MSET <key> <path> <json> [<key> <path> <json> ...]​
时间复杂度​
O(N),其中 N 为键数量。​
命令描述​
原子性地为多个键设置 JSON 值,要么全部成功、要么全部失败。其路径写入规则与 JSON.SET 一致,包括对象成员新增、数组下标替换以及相关路径错误处理。​
选项​
  • <key>:目标 JSON 文档键名,可重复出现多组,必填。​
  • <path>:该键下要写入的 JSON 路径,必填。​
  • <json>:对应路径要写入的 JSON 序列化值,必填。​
返回值​
  • 全部成功时返回 OK。​
  • 任一键的路径解析、类型或边界检查失败时返回错误,且不会部分写入。​
示例​
命令示例。​
JSON.MSET k1 . '[1,2,3,4,5]' k2 . '{"a":{"a":1,"b":2,"c":3}}' k3 . '{"a":[1,2,3,4,5]}'​
​
返回示例。​
OK​
​
JSON.DEL​
​
类别​
说明​
命令语法​
JSON.DEL <key> [path]​
时间复杂度​
O(N),其中 N 为路径匹配到的 JSON 值数量。​
命令描述​
删除文档中指定路径上的 JSON 值。若删除的是根路径,则等价于直接删除整个 Redis 键。​
选项​
  • <key>:目标 JSON 文档键名,必填。​
  • <path>:要删除的 JSON 路径,选填。省略时表示根路径。​
返回值​
  • 返回被删除的元素数量。​
  • 键不存在、路径不存在或路径无效,则返回 0。​
示例​
命令示例。​
JSON.DEL k1 $.d.*​
​
返回示例。​
(integer) 3​
​
JSON.FORGET​
​
类别​
说明​
命令语法​
JSON.FORGET <key> [path]​
时间复杂度​
与 JSON.DEL 相同。​
命令描述​
JSON.FORGET 是 JSON.DEL 的别名,语义完全一致。​
说明​
实际使用时可按 JSON.DEL 的参数方式删除指定路径上的 JSON 值。​
选项​
  • <key>:目标 JSON 文档键名,必填。​
  • <path>:要删除的 JSON 路径,选填。​
返回值​
与 JSON.DEL 一致,返回被删除的元素数量;键或路径不存在时返回 0。​
示例​
命令示例。​
JSON.FORGET k1 $.a​
​
返回示例。​
(integer) 1​
​
JSON.CLEAR​
​
类别​
说明​
命令语法​
JSON.CLEAR <key> [path]​
时间复杂度​
O(N),其中 N 为路径匹配到的 JSON 数组或对象数量。​
命令描述​
清空指定路径上的数组或对象内容,但保留该容器本身。对于空容器、非容器值或未匹配到的路径,不会报错,而是返回 0。​
选项​
  • <key>:目标 JSON 文档键名,必填。​
  • <path>:要清空的数组或对象路径,选填;省略时作用于根值。​
返回值​
  • 返回被清空的容器数量。​
  • 如果目标本来就是空数组/空对象、不是容器,或路径未匹配到容器,则返回 0。​
示例​
命令示例。​
JSON.CLEAR k2 .children​
​
返回示例。​
(integer) 1​
​
JSON.TYPE​
​
类别​
说明​
命令语法​
JSON.TYPE <key> [path]​
时间复杂度​
O(N),其中 N 为路径匹配到的 JSON 值数量。​
命令描述​
返回给定路径上值的 JSON 类型。可识别的类型包括 boolean、string、number、integer、object、array 及空值类型。​
选项​
  • <key>:目标 JSON 文档键名,必填。​
  • <path>:目标 JSON 路径,选填。​
返回值​
  • 增强路径下,返回字符串数组,每个元素是一个匹配值的类型名;路径不存在时返回空值,键不存在时可返回空数组。​
  • RESP2 中空值类型字符串为 nil,RESP3 中为 null。​
  • 受限路径下,返回单个类型字符串。​
示例​
命令示例。​
JSON.TYPE k1 $[*]​
​
返回示例。​
1) integer​
2) number​
3) string​
4) boolean​
5) null​
6) object​
7) array​
​
JSON.RESP​
​
类别​
说明​
命令语法​
JSON.RESP <key> [path]​
时间复杂度​
O(N),其中 N 为路径匹配到的 JSON 值数量。​
命令描述​
以 RESP 表示形式返回指定路径上的 JSON 值,而不是序列化后的 JSON 字符串。容器类型会映射为 RESP 数组或嵌套数组;null、布尔、整数、浮点、字符串均映射到对应的 RESP 表示。​
选项​
  • <key>:目标 JSON 文档键名,必填。​
  • <path>:要读取的 JSON 路径,选填。​
返回值​
  • 增强路径下,返回数组,每个元素是某个匹配值的 RESP 表示。​
  • 受限路径下,直接返回该值的 RESP 表示。​
  • 键不存在时,增强路径返回空数组;受限路径下 RESP2 为 Nil,RESP3 为 Null。​
示例​
命令示例。​
JSON.RESP k1 $.address​
​
返回示例。​
1) 1) "{"​
2) 1) "street"​
2) "21 2nd Street"​
​
JSON.NUMINCRBY​
​
类别​
说明​
命令语法​
JSON.NUMINCRBY <key> <path> <number>​
时间复杂度​
O(N),其中 N 为路径匹配到的 JSON 值数量。​
命令描述​
将路径匹配到的数值增加指定增量。该命令仅对数值类型生效;遇到非数值时会在对应位置返回空值。​
选项​
  • <key>:目标 JSON 文档键名,必填。​
  • <path>:目标数值路径,必填。​
  • <number>:要增加的数值,必填。​
返回值​
  • 增强路径下,返回数组,每个元素是更新后的数值字符串;非数值返回空值(RESP2 Nil / RESP3 Null)。​
  • 受限路径下,返回单个更新后的数值字符串。​
  • 非法路径或类型错误会返回错误。​
示例​
命令示例。​
JSON.NUMINCRBY k1 $.d[*] 10​
​
返回示例。​
"[11,12,13]"​
​
JSON.NUMMULTBY​
​
类别​
说明​
命令语法​
JSON.NUMMULTBY <key> <path> <number>​
时间复杂度​
O(N),其中 N 为路径匹配到的 JSON 值数量。​
命令描述​
将路径匹配到的数值乘以给定因子。该命令仅对数值类型生效;非数值位置不会被更新,并在返回中体现为空值。​
选项​
  • <key>:目标 JSON 文档键名,必填。​
  • <path>:目标数值路径,必填。​
  • <number>:乘数,必填。​
返回值​
  • 增强路径下,返回数组,每个元素是更新后的数值字符串;非数值返回空值(RESP2 Nil / RESP3 Null)。​
  • 受限路径下,返回单个更新后的数值字符串。​
示例​
命令示例。​
JSON.NUMMULTBY k1 $.d[*] 2​
​
返回示例。​
"[2,4,6]"​
​
JSON.STRAPPEND​
​
类别​
说明​
命令语法​
JSON.STRAPPEND <key> [path] <json_string>​
时间复杂度​
O(N),其中 N 为路径匹配到的字符串值数量。​
命令描述​
向路径匹配到的 JSON 字符串末尾追加内容。该命令仅对字符串类型生效,并返回追加后的新长度。​
选项​
  • <key>:目标 JSON 文档键名,必填。​
  • <path>:目标字符串路径,选填。​
  • <json_string>:要追加的 JSON 字符串值,必填。​
返回值​
  • 增强路径下,返回整数数组,表示各字符串追加后的新长度;对非字符串返回空值(RESP2 Nil / RESP3 Null)。​
  • 受限路径下,返回单个整数长度。​
示例​
命令示例。​
JSON.STRAPPEND k1 $.a.a '"a"'​
​
返回示例。​
1) (integer) 2​
​
JSON.STRLEN​
​
类别​
说明​
命令语法​
JSON.STRLEN <key> [path]​
时间复杂度​
O(N),其中 N 为路径匹配到的字符串值数量。​
命令描述​
返回路径上 JSON 字符串值的长度。对非字符串值不会报错,而是在对应位置返回空值。​
选项​
  • <key>:目标 JSON 文档键名,必填。​
  • <path>:目标字符串路径,选填。​
返回值​
  • 增强路径下,返回整数数组,表示每个字符串值的长度。​
  • 对非字符串或不存在的键/路径,返回空值(RESP2 Nil / RESP3 Null)。​
  • 受限路径下,返回单个整数长度。​
示例​
命令示例。​
JSON.STRLEN k1 $.a.a​
​
返回示例。​
1) (integer) 1​
​
JSON.TOGGLE​
​
类别​
说明​
命令语法​
JSON.TOGGLE <key> [path]​
时间复杂度​
O(N),其中 N 为路径匹配到的布尔值数量。​
命令描述​
将路径上的布尔值在 true 与 false 之间切换。该命令仅对布尔类型有效;对非布尔值返回空值或错误,具体取决于路径语法。​
选项​
  • <key>:目标 JSON 文档键名,必填。​
  • <path>:目标布尔路径,选填。​
返回值​
  • 增强路径下,返回整数数组,0 表示 false,1 表示 true;非布尔返回空值(RESP2 Nil / RESP3 Null)。​
  • 受限路径下,返回字符串 true 或 false。​
示例​
命令示例。​
JSON.TOGGLE k1 $.*​
​
返回示例。​
1) (integer) 0​
2) (integer) 1​
3) (nil)​
4) (nil)​
​
JSON.ARRAPPEND​
​
类别​
说明​
命令语法​
JSON.ARRAPPEND <key> <path> <json> [<json> ...]​
时间复杂度​
O(N),其中 N 为待追加的值数量。​
命令描述​
向路径匹配到的数组末尾追加一个或多个 JSON 值。该命令仅对数组生效,遇到非数组值时会在返回结果中给出空值。​
选项​
  • <key>:目标 JSON 文档键名,必填。​
  • <path>:目标数组路径,必填。​
  • <json>:一个或多个待追加的 JSON 序列化值,必填。​
返回值​
  • 增强路径下,返回数组,每个元素表示对应数组追加后的新长度;对非数组返回空值(RESP2 Nil / RESP3 Null)。​
  • 受限路径下,返回单个整数,表示新数组长度。​
  • 路径错误会返回错误。​
示例​
命令示例。​
JSON.ARRAPPEND k1 $[*] '"c"'​
​
返回示例。​
1) (integer) 1​
2) (integer) 2​
3) (integer) 3​
​
JSON.ARRINDEX​
​
类别​
说明​
命令语法​
JSON.ARRINDEX <key> <path> <json-scalar> [start [end]]​
时间复杂度​
O(N),其中 N 为数组长度。​
命令描述​
在路径匹配到的数组中查找某个标量 JSON 值首次出现的位置。越界的 start/end 会被裁剪到数组边界;若 start > end,则返回 -1。​
选项​
  • <key>:目标 JSON 文档键名,必填。​
  • <path>:目标数组路径,必填。​
  • <json-scalar>:要查找的标量 JSON 值,必填。​
  • <start>:可选起始下标。​
  • <end>:可选结束下标。​
返回值​
  • 增强路径下,返回整数数组;每个元素是对应数组中匹配值的下标,未找到时为 -1;对非数组值返回空值(RESP2 Nil / RESP3 Null)。​
  • 受限路径下,返回单个整数下标;非法键类型会报错。​
示例​
命令示例。​
JSON.ARRINDEX k1 $[*] '"b"'​
​
返回示例。​
1) (integer) -1​
2) (integer) -1​
3) (integer) 1​
4) (integer) 1​
​
JSON.ARRINSERT​
​
类别​
说明​
命令语法​
JSON.ARRINSERT <key> <path> <index> <json> [<json> ...]​
时间复杂度​
O(N),其中 N 为数组长度。​
命令描述​
在路径匹配到的数组中,于指定下标之前插入一个或多个值。index=0 表示头插;负下标从数组尾部反向计数;下标必须位于数组边界内。​
选项​
  • <key>:目标 JSON 文档键名,必填。​
  • <path>:目标数组路径,必填。​
  • <index>:插入位置,必填。​
  • <json>:一个或多个待插入的 JSON 序列化值,必填。​
返回值​
  • 增强路径下,返回整数数组,表示各数组插入后的新长度;对空数组或非数组返回空值(RESP2 Nil / RESP3 Null)。​
  • 受限路径下,返回单个整数,表示新长度。​
  • 越界或类型不匹配会返回错误。​
示例​
命令示例。​
JSON.ARRINSERT k1 $[*] 0 '"c"'​
​
返回示例。​
1) (integer) 1​
2) (integer) 2​
3) (integer) 3​
​
JSON.ARRLEN​
​
类别​
说明​
命令语法​
JSON.ARRLEN <key> [path]​
时间复杂度​
O(N),其中 N 为路径匹配到的数组数量。​
命令描述​
返回路径上数组的长度。该命令仅统计数组值;若路径匹配到非数组,返回结果中会体现为空值。​
选项​
  • <key>:目标 JSON 文档键名,必填。​
  • <path>:目标数组路径,选填。​
返回值​
  • 增强路径下,返回整数数组,表示每个匹配数组的长度。​
  • 对非数组或不存在的键/路径,返回空值(RESP2 Nil / RESP3 Null)。​
  • 受限路径下,返回单个整数长度。​
示例​
命令示例。​
JSON.ARRLEN k1 $[*]​
​
返回示例。​
1) (integer) 0​
2) (integer) 1​
3) (integer) 2​
4) (integer) 3​
​
JSON.ARRPOP​
​
类别​
说明​
命令语法​
JSON.ARRPOP <key> [path [index]]​
时间复杂度​
O(N),其中 N 为路径匹配到的数组数量。​
命令描述​
从数组中弹出指定下标的元素并返回该元素。若未提供 index,则弹出末尾元素;空数组弹出时返回空值。​
选项​
  • <key>:目标 JSON 文档键名,必填。​
  • <path>:目标数组路径,选填。​
  • <index>:要弹出的数组下标,选填。​
返回值​
  • 增强路径下,返回数组,其中每个元素是被弹出的 JSON 序列化值;对空数组或非数组返回空值(RESP2 Nil / RESP3 Null)。​
  • 受限路径下,返回单个弹出值;若数组为空则返回空值。​
示例​
命令示例。​
JSON.ARRPOP k1 $[*]​
​
返回示例。​
1) (nil)​
2) "\"a\""​
3) "\"b\""​
​
JSON.ARRTRIM​
​
类别​
说明​
命令语法​
JSON.ARRTRIM <key> <path> <start> <end>​
时间复杂度​
O(N),其中 N 为路径匹配到的数组数量。​
命令描述​
将路径上的数组裁剪为闭区间 [start, end] 对应的子数组。start 小于 0 会按 0 处理,end 超过数组长度会被截断;若 start >= size 或 start > end,结果为空数组。​
选项​
  • <key>:目标 JSON 文档键名,必填。​
  • <path>:目标数组路径,必填。​
  • <start>:裁剪起始下标,必填。​
  • <end>:裁剪结束下标(包含),必填。​
返回值​
  • 增强路径下,返回整数数组,表示各数组裁剪后的新长度;对空数组或非数组返回空值(RESP2 Nil / RESP3 Null)。​
  • 受限路径下,返回单个整数长度;若数组不存在或不是数组可返回空值。​
示例​
命令示例。​
JSON.ARRTRIM k1 $[*] 0 1​
​
返回示例。​
1) (integer) 0​
2) (integer) 1​
3) (integer) 2​
4) (integer) 2​
​
JSON.OBJKEYS​
​
类别​
说明​
命令语法​
JSON.OBJKEYS <key> [path]​
时间复杂度​
O(N),其中 N 为路径匹配到的对象数量。​
命令描述​
返回路径上对象值的键名列表。对于增强路径,多个对象会分别返回各自的键名数组;对非对象值则返回空数组或空值。​
选项​
  • <key>:目标 JSON 文档键名,必填。​
  • <path>:目标对象路径,选填。​
返回值​
  • 增强路径下,返回“数组的数组”,每个内部数组包含一个匹配对象的所有键名。​
  • 对非对象匹配返回空数组;键不存在时 RESP2 为 Nil,RESP3 为 Null。​
  • 受限路径下,直接返回该对象的键名数组。​
示例​
命令示例。​
JSON.OBJKEYS k1 $.d​
​
返回示例。​
1) "a"​
2) "b"​
3) "c"​
​
JSON.OBJLEN​
​
类别​
说明​
命令语法​
JSON.OBJLEN <key> [path]​
时间复杂度​
O(N),其中 N 为路径匹配到的对象数量。​
命令描述​
返回路径上对象包含的键数量。该命令仅对对象类型有意义;对非对象位置会返回空值。​
选项​
  • <key>:目标 JSON 文档键名,必填。​
  • <path>:目标对象路径,选填。​
返回值​
  • 增强路径下,返回整数数组,表示每个匹配对象的键数量。​
  • 对非对象或不存在的键/路径,返回空值(RESP2 Nil / RESP3 Null)。​
  • 受限路径下,返回单个整数。​
示例​
命令示例。​
JSON.OBJLEN k1 $.a​
​
返回示例。​
1) (integer) 0​
​
​
​
最近更新时间:2026.05.29 11:23:03
这个页面对您有帮助吗?
有用
有用
无用
无用