*Redis JSON.MGET 命令
JSON.MGET 在 RedisJSON 中同时获取多个 key 的指定路径值。
*语法
JSON.MGET key [key ...] path
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| key | String | 是 | JSON 文档键名,支持多个 |
| path | String | 是 | JSONPath 路径 |
*返回值
- Array:各 key 对应路径值的数组,不存在的 key 返回 nil
*时间复杂度
O(N*M),N 为 key 数量,M 为每个 JSON 值大小
*示例
*获取多个文档
> JSON.SET doc1 $ '{"a": 1}'
OK
> JSON.SET doc2 $ '{"a": 2}'
OK
> JSON.MGET doc1 doc2 $.a
1) "1"
2) "2"
*路径不存在
> JSON.MGET doc1 doc2 $.b
1) (nil)
2) (nil)
*常见错误
| 错误 | 原因 | 解决 |
|---|---|---|
| ERR wrong number of arguments | 未提供 path | 至少提供一个 key 和 path |
*最佳实践
- 批量获取减少网络往返
- 所有 key 使用相同的 path
- 用于批量读取相似结构的 JSON 文档
*FAQ
Q1: 和 JSON.GET 有什么区别? A: JSON.MGET 支持多个 key;JSON.GET 只支持一个 key。
Q2: key 不存在会怎样? A: 返回 nil 对应位置。
Q3: 路径可以不同吗? A: 不可以,所有 key 使用相同的 path。