Amazon ElastiCache RedisJSON对象键含斜杠的行为差异问题
AWS ElastiCache Redis 7.1与本地Redis Stack JSON路径解析差异解决方案
问题核心
AWS ElastiCache for Redis 7.1(搭载旧版RedisJSON)处理带斜杠的JSON键名时,会将/解析为路径分隔符,导致$.path["0/1"]被拆分为path下的0子结构再嵌套1;而本地Redis Stack 7.2.0-v14(新版RedisJSON)会将引号内的0/1视为完整键名,直接存入path对象。
可行解决方案
1. 用单引号包裹特殊键名
在JSON路径中使用单引号包裹包含斜杠的键名,绕过旧版本的路径解析逻辑:
AWS:6379> json.set "key" "$.path['0/1']" '{"ID":"0/1"}'
执行后验证:
AWS:6379> json.get "key" "{\"path\":{\"0/1\":{\"ID\":\"0/1\"}}}"
2. 命令行环境下双重转义斜杠
若必须使用双引号,需对斜杠做双重转义(Redis命令行会先解析一次转义字符):
AWS:6379> json.set "key" "$.path[\"0\\/1\"]" "{\"ID\":\"0/1\"}"
3. 升级ElastiCache版本(长期方案)
将ElastiCache升级到7.2及以上版本,新版RedisJSON的路径解析逻辑与本地Redis Stack一致,无需特殊处理即可直接使用$.path["0/1"]语法。
内容的提问来源于stack exchange,提问作者Marko
相关产品推荐
相关产品推荐

