valkey-json)提供 JSON 文档的原生存储与操作能力,允许以树形结构直接存储、查询和修改 JSON 数据,通过 JSONPath 表达式(如 $.store.book[0].title)可精确访问嵌套层级中的任意节点。该模块适用于文档型配置存储、API 响应缓存、嵌套对象查询等需要灵活 JSON 结构操作的场景。该模块自 Valkey 8.0 起支持,不属于 Redis 内核命令集。其核心命令按功能可分为以下四类:JSON.SET、JSON.GET、JSON.MGET、JSON.MSET、JSON.DEL(含别名 JSON.FORGET),用于设置/获取/批量读取/批量设置/删除键中的 JSON 值。Valkey 8.0标准架构与集群架构均支持。JSON.STRAPPEND、JSON.STRLEN,用于向 JSON 字符串追加内容和获取字符串长度。Valkey 8.0标准架构与集群架构均支持。JSON.NUMINCRBY、JSON.NUMMULTBY,用于对 JSON 数值进行加减和乘法运算。Valkey 8.0标准架构与集群架构均支持。JSON.ARRAPPEND、JSON.ARRINDEX、JSON.ARRINSERT、JSON.ARRLEN、JSON.ARRPOP、JSON.ARRTRIM,用于向数组追加元素、查找元素索引、插入元素、获取数组长度、弹出元素、修剪数组。Valkey 8.0标准架构与集群架构均支持。JSON.OBJKEYS、JSON.OBJLEN、JSON.CLEAR,用于获取对象键名、获取对象键数量、清空数组或对象。Valkey 8.0标准架构与集群架构均支持。JSON.TYPE、JSON.TOGGLE、JSON.RESP、JSON.DEBUG,用于获取值类型、切换布尔值、以 RESP 格式返回 JSON 值、调试信息(JSON.DEBUG 的 KEYTABLE-CORRUPT、KEYTABLE-CLEAR、KEYTABLE-DISTRIBUTION 子命令需模块加载时启用 json.debug-mode)。JSON.MGET 和 JSON.MSET 为多键命令,集群架构下所有键必须位于同一哈希槽(Slot),否则触发 CROSSSLOT 错误。建议使用 Hash Tag(例如 {user}:profile、{user}:settings)确保同组键落入同一 Slot。命令 | Valkey 9.0标准架构 | Valkey 9.0集群架构 | Valkey 8.0标准架构 | Valkey 8.0集群架构 | 集群架构跨 Slot 支持 |
json.set | ✓ | ✓ | ✓ | ✓ | — |
json.get | ✓ | ✓ | ✓ | ✓ | — |
json.mget | ✓ | ✓ | ✓ | ✓ | ✗ |
json.mset | ✓ | ✓ | ✓ | ✓ | ✗ |
json.del | ✓ | ✓ | ✓ | ✓ | — |
json.forget | ✓ | ✓ | ✓ | ✓ | — |
json.strappend | ✓ | ✓ | ✓ | ✓ | — |
json.strlen | ✓ | ✓ | ✓ | ✓ | — |
json.numincrby | ✓ | ✓ | ✓ | ✓ | — |
json.nummultby | ✓ | ✓ | ✓ | ✓ | — |
json.arrappend | ✓ | ✓ | ✓ | ✓ | — |
json.arrindex | ✓ | ✓ | ✓ | ✓ | — |
json.arrinsert | ✓ | ✓ | ✓ | ✓ | — |
json.arrlen | ✓ | ✓ | ✓ | ✓ | — |
json.arrpop | ✓ | ✓ | ✓ | ✓ | — |
json.arrtrim | ✓ | ✓ | ✓ | ✓ | — |
json.objkeys | ✓ | ✓ | ✓ | ✓ | — |
json.objlen | ✓ | ✓ | ✓ | ✓ | — |
json.clear | ✓ | ✓ | ✓ | ✓ | — |
json.type | ✓ | ✓ | ✓ | ✓ | — |
json.toggle | ✓ | ✓ | ✓ | ✓ | — |
json.resp | ✓ | ✓ | ✓ | ✓ | — |
json.debug | ✓ | ✓ | ✓ | ✓ | — |
文档反馈