*Redis JSON.GET 命令
JSON.GET 在 RedisJSON 中获取指定路径的 JSON 值。
*语法
JSON.GET key [path] [INDENT indent] [NEWLINE newline] [SPACE space] [NOESCAPE]
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| key | String | 是 | JSON 文档键名 |
| path | String | 否 | JSONPath 路径,默认根路径 $ |
| INDENT | String | 否 | 缩进字符 |
| NEWLINE | String | 否 | 换行字符 |
| SPACE | String | 否 | 空格字符 |
| NOESCAPE | Flag | 否 | 禁用 Unicode 转义 |
*返回值
- String:JSON 值的字符串表示
- Nil:路径不存在
*时间复杂度
O(N),N 为返回的 JSON 值大小
*示例
*获取整个文档
> JSON.SET doc $ '{"a": 1, "b": {"c": 2}}'
OK
> JSON.GET doc
"{\"a\":1,\"b\":{\"c\":2}}"
*获取路径
> JSON.GET doc $.b
"{\"c\":2}"
> JSON.GET doc $.b.c
"2"
*格式化输出
> JSON.GET doc $ INDENT " " NEWLINE "\n" SPACE " "
"{\n \"a\": 1,\n \"b\": {\n \"c\": 2\n }\n}"
*常见错误
| 错误 | 原因 | 解决 |
|---|---|---|
| ERR key does not exist | key 不存在 | 确认 key 存在 |
*最佳实践
- 使用 JSONPath 精确定位需要的值
- 使用 NOESCAPE 处理中文内容
- 配合格式化参数提高可读性
*FAQ
Q1: 可以获取多个路径吗? A: 可以,提供多个路径返回多个值。
Q2: 路径不存在会怎样? A: 返回 nil。
Q3: 返回的是字符串吗? A: 是的,返回 JSON 的字符串表示,客户端需要解析。