*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。