命令 | 语法 | 说明 |
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] | 返回路径上对象包含的键数量。 |
类别 | 说明 |
命令语法 | JSON.SET <key> <path> <json> [NX | XX] |
时间复杂度 | O(N),其中 N 为路径匹配到的 JSON 值数量。 |
命令描述 | 在指定 path 上写入 JSON 值。该命令既可覆盖已有值,也可在满足路径规则时为对象新增成员。若路径指向不存在的父节点、类型不匹配或数组下标越界,则会返回错误。 |
选项 |
|
返回值 |
|
示例 | 命令示例。 JSON.SET k1 . '{"firstName":"John","lastName":"Smith","age":27}' 返回示例。 OK |
类别 | 说明 |
命令语法 | JSON.GET <key> [INDENT <indent>] [NEWLINE <newline>] [SPACE <space>] [NOESCAPE] [path ...] |
时间复杂度 | O(N),其中 N 为路径数量。 |
命令描述 | 读取一个或多个路径上的 JSON 值,并以序列化后的 JSON 字符串返回。支持通过 INDENT、NEWLINE、SPACE 控制格式化输出,也可通过 NOESCAPE 控制转义行为。 |
选项 |
|
返回值 |
|
示例 | 命令示例。 JSON.GET k1 $.firstName $.lastName $.age 返回示例。 "{\"$.firstName\":[\"John\"],\"$.lastName\":[\"Smith\"],\"$.age\":[27]}" |
类别 | 说明 |
命令语法 | JSON.MGET <key> [<key> ...] <path> |
时间复杂度 | O(N),其中 N 为键数量。 |
命令描述 | 从多个 JSON 键上读取同一路径的值,并返回对应的序列化结果数组。对于不存在的键、路径不存在或无效路径,对应位置返回空值,整体命令不会中断。 |
选项 |
|
返回值 |
|
示例 | 命令示例。 JSON.MGET k1 k2 k3 $.address.city 返回示例。 1) "[\"New York\"]" 2) "[\"Boston\"]" 3) "[\"Seattle\"]" |
类别 | 说明 |
命令语法 | JSON.MSET <key> <path> <json> [<key> <path> <json> ...] |
时间复杂度 | O(N),其中 N 为键数量。 |
命令描述 | 原子性地为多个键设置 JSON 值,要么全部成功、要么全部失败。其路径写入规则与 JSON.SET 一致,包括对象成员新增、数组下标替换以及相关路径错误处理。 |
选项 |
|
返回值 |
|
示例 | 命令示例。 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 <key> [path] |
时间复杂度 | O(N),其中 N 为路径匹配到的 JSON 值数量。 |
命令描述 | 删除文档中指定路径上的 JSON 值。若删除的是根路径,则等价于直接删除整个 Redis 键。 |
选项 |
|
返回值 |
|
示例 | 命令示例。 JSON.DEL k1 $.d.* 返回示例。 (integer) 3 |
类别 | 说明 |
命令语法 | JSON.FORGET <key> [path] |
时间复杂度 | 与 JSON.DEL 相同。 |
命令描述 | JSON.FORGET 是 JSON.DEL 的别名,语义完全一致。 说明 实际使用时可按 JSON.DEL 的参数方式删除指定路径上的 JSON 值。 |
选项 |
|
返回值 | 与 JSON.DEL 一致,返回被删除的元素数量;键或路径不存在时返回 0。 |
示例 | 命令示例。 JSON.FORGET k1 $.a 返回示例。 (integer) 1 |
类别 | 说明 |
命令语法 | JSON.CLEAR <key> [path] |
时间复杂度 | O(N),其中 N 为路径匹配到的 JSON 数组或对象数量。 |
命令描述 | 清空指定路径上的数组或对象内容,但保留该容器本身。对于空容器、非容器值或未匹配到的路径,不会报错,而是返回 0。 |
选项 |
|
返回值 |
|
示例 | 命令示例。 JSON.CLEAR k2 .children 返回示例。 (integer) 1 |
类别 | 说明 |
命令语法 | JSON.TYPE <key> [path] |
时间复杂度 | O(N),其中 N 为路径匹配到的 JSON 值数量。 |
命令描述 | 返回给定路径上值的 JSON 类型。可识别的类型包括 boolean、string、number、integer、object、array 及空值类型。 |
选项 |
|
返回值 |
|
示例 | 命令示例。 JSON.TYPE k1 $[*] 返回示例。 1) integer 2) number 3) string 4) boolean 5) null 6) object 7) array |
类别 | 说明 |
命令语法 | JSON.RESP <key> [path] |
时间复杂度 | O(N),其中 N 为路径匹配到的 JSON 值数量。 |
命令描述 | 以 RESP 表示形式返回指定路径上的 JSON 值,而不是序列化后的 JSON 字符串。容器类型会映射为 RESP 数组或嵌套数组;null、布尔、整数、浮点、字符串均映射到对应的 RESP 表示。 |
选项 |
|
返回值 |
|
示例 | 命令示例。 JSON.RESP k1 $.address 返回示例。 1) 1) "{" 2) 1) "street" 2) "21 2nd Street" |
类别 | 说明 |
命令语法 | JSON.NUMINCRBY <key> <path> <number> |
时间复杂度 | O(N),其中 N 为路径匹配到的 JSON 值数量。 |
命令描述 | 将路径匹配到的数值增加指定增量。该命令仅对数值类型生效;遇到非数值时会在对应位置返回空值。 |
选项 |
|
返回值 |
|
示例 | 命令示例。 JSON.NUMINCRBY k1 $.d[*] 10 返回示例。 "[11,12,13]" |
类别 | 说明 |
命令语法 | JSON.NUMMULTBY <key> <path> <number> |
时间复杂度 | O(N),其中 N 为路径匹配到的 JSON 值数量。 |
命令描述 | 将路径匹配到的数值乘以给定因子。该命令仅对数值类型生效;非数值位置不会被更新,并在返回中体现为空值。 |
选项 |
|
返回值 |
|
示例 | 命令示例。 JSON.NUMMULTBY k1 $.d[*] 2 返回示例。 "[2,4,6]" |
类别 | 说明 |
命令语法 | JSON.STRAPPEND <key> [path] <json_string> |
时间复杂度 | O(N),其中 N 为路径匹配到的字符串值数量。 |
命令描述 | 向路径匹配到的 JSON 字符串末尾追加内容。该命令仅对字符串类型生效,并返回追加后的新长度。 |
选项 |
|
返回值 |
|
示例 | 命令示例。 JSON.STRAPPEND k1 $.a.a '"a"' 返回示例。 1) (integer) 2 |
类别 | 说明 |
命令语法 | JSON.STRLEN <key> [path] |
时间复杂度 | O(N),其中 N 为路径匹配到的字符串值数量。 |
命令描述 | 返回路径上 JSON 字符串值的长度。对非字符串值不会报错,而是在对应位置返回空值。 |
选项 |
|
返回值 |
|
示例 | 命令示例。 JSON.STRLEN k1 $.a.a 返回示例。 1) (integer) 1 |
类别 | 说明 |
命令语法 | JSON.TOGGLE <key> [path] |
时间复杂度 | O(N),其中 N 为路径匹配到的布尔值数量。 |
命令描述 | 将路径上的布尔值在 true 与 false 之间切换。该命令仅对布尔类型有效;对非布尔值返回空值或错误,具体取决于路径语法。 |
选项 |
|
返回值 |
|
示例 | 命令示例。 JSON.TOGGLE k1 $.* 返回示例。 1) (integer) 0 2) (integer) 1 3) (nil) 4) (nil) |
类别 | 说明 |
命令语法 | JSON.ARRAPPEND <key> <path> <json> [<json> ...] |
时间复杂度 | O(N),其中 N 为待追加的值数量。 |
命令描述 | 向路径匹配到的数组末尾追加一个或多个 JSON 值。该命令仅对数组生效,遇到非数组值时会在返回结果中给出空值。 |
选项 |
|
返回值 |
|
示例 | 命令示例。 JSON.ARRAPPEND k1 $[*] '"c"' 返回示例。 1) (integer) 1 2) (integer) 2 3) (integer) 3 |
类别 | 说明 |
命令语法 | JSON.ARRINDEX <key> <path> <json-scalar> [start [end]] |
时间复杂度 | O(N),其中 N 为数组长度。 |
命令描述 | 在路径匹配到的数组中查找某个标量 JSON 值首次出现的位置。越界的 start/end 会被裁剪到数组边界;若 start > end,则返回 -1。 |
选项 |
|
返回值 |
|
示例 | 命令示例。 JSON.ARRINDEX k1 $[*] '"b"' 返回示例。 1) (integer) -1 2) (integer) -1 3) (integer) 1 4) (integer) 1 |
类别 | 说明 |
命令语法 | JSON.ARRINSERT <key> <path> <index> <json> [<json> ...] |
时间复杂度 | O(N),其中 N 为数组长度。 |
命令描述 | 在路径匹配到的数组中,于指定下标之前插入一个或多个值。index=0 表示头插;负下标从数组尾部反向计数;下标必须位于数组边界内。 |
选项 |
|
返回值 |
|
示例 | 命令示例。 JSON.ARRINSERT k1 $[*] 0 '"c"' 返回示例。 1) (integer) 1 2) (integer) 2 3) (integer) 3 |
类别 | 说明 |
命令语法 | JSON.ARRLEN <key> [path] |
时间复杂度 | O(N),其中 N 为路径匹配到的数组数量。 |
命令描述 | 返回路径上数组的长度。该命令仅统计数组值;若路径匹配到非数组,返回结果中会体现为空值。 |
选项 |
|
返回值 |
|
示例 | 命令示例。 JSON.ARRLEN k1 $[*] 返回示例。 1) (integer) 0 2) (integer) 1 3) (integer) 2 4) (integer) 3 |
类别 | 说明 |
命令语法 | JSON.ARRPOP <key> [path [index]] |
时间复杂度 | O(N),其中 N 为路径匹配到的数组数量。 |
命令描述 | 从数组中弹出指定下标的元素并返回该元素。若未提供 index,则弹出末尾元素;空数组弹出时返回空值。 |
选项 |
|
返回值 |
|
示例 | 命令示例。 JSON.ARRPOP k1 $[*] 返回示例。 1) (nil) 2) "\"a\"" 3) "\"b\"" |
类别 | 说明 |
命令语法 | JSON.ARRTRIM <key> <path> <start> <end> |
时间复杂度 | O(N),其中 N 为路径匹配到的数组数量。 |
命令描述 | 将路径上的数组裁剪为闭区间 [start, end] 对应的子数组。start 小于 0 会按 0 处理,end 超过数组长度会被截断;若 start >= size 或 start > end,结果为空数组。 |
选项 |
|
返回值 |
|
示例 | 命令示例。 JSON.ARRTRIM k1 $[*] 0 1 返回示例。 1) (integer) 0 2) (integer) 1 3) (integer) 2 4) (integer) 2 |
类别 | 说明 |
命令语法 | JSON.OBJKEYS <key> [path] |
时间复杂度 | O(N),其中 N 为路径匹配到的对象数量。 |
命令描述 | 返回路径上对象值的键名列表。对于增强路径,多个对象会分别返回各自的键名数组;对非对象值则返回空数组或空值。 |
选项 |
|
返回值 |
|
示例 | 命令示例。 JSON.OBJKEYS k1 $.d 返回示例。 1) "a" 2) "b" 3) "c" |
类别 | 说明 |
命令语法 | JSON.OBJLEN <key> [path] |
时间复杂度 | O(N),其中 N 为路径匹配到的对象数量。 |
命令描述 | 返回路径上对象包含的键数量。该命令仅对对象类型有意义;对非对象位置会返回空值。 |
选项 |
|
返回值 |
|
示例 | 命令示例。 JSON.OBJLEN k1 $.a 返回示例。 1) (integer) 0 |