Redis7系列:RedisJSON使用文档

279 阅读1分钟

cover_image

RedisJSON 是 Redis 的扩展模块,支持原生 JSON 数据格式的存储和操作,提供高效的 JSON 路径查询语法(类似JSONPath),支持:

  • 完整 JSON 文档的存储;

  • 原子化局部更新;

  • 嵌套结构快速查询;

  • 与其他 Redis 数据类型(如 Streams)结合使用。

01 RedisJSON 配置

1.1 RedisJSON配置

由于 RedisJSON是Redis的扩展模块,所以需要将该模块加载到Redis中去。 RedisJSON的模块来自Redis Statck的lib中 的resjon.so模块,配置到Redis的配置文件redis.conf中即可:

loadmodule /opt/redis-stack-6.2.6/lib/rejson.so

02 基本语法

2.1 数据类型的支持

  • 字符串(String);

  • 数字类型(Number);

  • 布尔类型(Boolean);

  • 数组(Array);

  • 对象(Object);

  • null

2.2 核心命令

# 设置值(路径必须从根开始)
JSON.SET <key> $ <json_value> 

# 获取值
JSON.GET <key> [<path>]  

# 删除字段
JSON.DEL <key> <path>

# 类型检查
JSON.TYPE <key> <path>

# 数字累加
JSON.NUMINCRBY <key> <path> <value> 

# 数组操作
JSON.ARRAPPEND <key> <path> <value...>
JSON.ARRINDEX <key> <path> <value>

03 使用场景

3.1 典型场景

  • 配置管理: 存储动态配置的嵌套结构;

  • 用户会话: 保存包含多种属性的用户会话数据 ;

  • 实时分析 : 快速更新统计指标中的部分字段 ;

  • 内容存储: CMS 系统存储文章内容及元数据 ;

  • 设备状态: IoT 设备复杂状态的原子更新 。

3.2 优势体现

  • 需要频繁局部更新的场景 ;

  • 涉及多层嵌套查询的场景 ;

  • 需要结合 Redis 其他功能的场景(如过期时间) ;

  • 涉及多层嵌套查询的场景 ;

04 命令行示例

4.1 基础操作


# 插入用户数据
JSON.SET user:1001 $ '{
  "name":"张三",
  "age":28,
  "address":{
    "city":"北京",
    "zipcode":"100000"
  },
  "tags":["tech","sports"]
}'

# 获取城市信息
JSON.GET user:1001 $.address.city
# 返回:"[\"北京\"]"

# 修改年龄(原子操作)
JSON.SET user:1001 $.age 29

# 年龄+10(原子操作)
JSON.NUMINCRBY user:1001 $.age 10

# 添加标签
JSON.ARRAPPEND user:1001 $.tags '"music"'

4.2 路径查询


# 获取所有标签的第一个元素
JSON.GET user:1001 $.tags[0]

# 使用通配符查询
JSON.GET user:1001 $.address.*

** END **

喜欢就点赞、收藏,微信可以搜公众号【编程朝花夕拾】或扫码关注我哦!