在Redis中存储和操作JSON数据的方法详解

 更新时间:2025年07月04日 08:37:35   作者:学亮编程手记  
RedisJSON 是 Redis 的一个模块,为 Redis 提供了 JSON 数据类型的支持,允许直接存储、更新和查询 JSON 文档,本文给大家详细介绍了RedisJSON 安装部署及使用示例,需要的朋友可以参考下

RedisJSON 安装部署及使用示例

RedisJSON 是 Redis 的一个模块,为 Redis 提供了 JSON 数据类型的支持,允许直接存储、更新和查询 JSON 文档。

一、安装部署

1. 前提条件

  • 已安装 Redis 5.0 或更高版本
  • Linux 系统(推荐 Ubuntu/CentOS)

2. 安装方法

方法一:从预编译二进制文件安装

下载预编译的 RedisJSON 模块:

wget https://redismodules.s3.amazonaws.com/redisjson/redisjson-latest.so

启动 Redis 并加载模块:

redis-server --loadmodule /path/to/redisjson-latest.so

方法二:从源码编译安装

安装依赖:

# Ubuntu/Debian
sudo apt-get install build-essential cmake

# CentOS/RHEL
sudo yum groupinstall "Development Tools"
sudo yum install cmake

克隆并编译 RedisJSON:

git clone https://github.com/RedisJSON/RedisJSON.git
cd RedisJSON
make

启动 Redis 并加载模块:

redis-server --loadmodule /path/to/RedisJSON/bin/linux-x64-release/rejson.so

3. 验证安装

连接到 Redis 并执行:

redis-cli
127.0.0.1:6379> MODULE LIST

如果安装成功,你应该能看到类似 name=ReJSON,ver=20000 的输出。

二、基本使用示例

1. 设置和获取 JSON 文档

# 设置一个JSON文档
127.0.0.1:6379> JSON.SET user1 $ '{"name":"Alice","age":30,"address":{"city":"New York","zip":"10001"},"tags":["developer","redis"]}'
OK

# 获取整个JSON文档
127.0.0.1:6379> JSON.GET user1
"{\"name\":\"Alice\",\"age\":30,\"address\":{\"city\":\"New York\",\"zip\":\"10001\"},\"tags\":[\"developer\",\"redis\"]}"

# 获取特定字段
127.0.0.1:6379> JSON.GET user1 .name
"\"Alice\""
127.0.0.1:6379> JSON.GET user1 .age
"30"

2. 更新 JSON 文档

# 更新单个字段
127.0.0.1:6379> JSON.SET user1 .age 31
OK

# 添加新字段
127.0.0.1:6379> JSON.SET user1 .email '"alice@example.com"'
OK

# 更新嵌套字段
127.0.0.1:6379> JSON.SET user1 .address.city '"Boston"'
OK

3. 数组操作

# 向数组添加元素
127.0.0.1:6379> JSON.ARRAPPEND user1 .tags '"database"'
(integer) 3

# 获取数组长度
127.0.0.1:6379> JSON.ARRLEN user1 .tags
(integer) 3

# 获取数组元素
127.0.0.1:6379> JSON.GET user1 .tags[1]
"\"redis\""

4. 数值操作

# 数值递增
127.0.0.1:6379> JSON.NUMINCRBY user1 .age 1
"32"

# 数值相乘
127.0.0.1:6379> JSON.NUMMULTBY user1 .age 2
"64"

5. 删除操作

# 删除字段
127.0.0.1:6379> JSON.DEL user1 .email
(integer) 1

# 删除整个键
127.0.0.1:6379> DEL user1
(integer) 1

三、高级查询

RedisJSON 2.0+ 支持 JSONPath 查询语法:

# 创建多个用户
127.0.0.1:6379> JSON.SET user:1 $ '{"name":"Alice","age":30,"city":"New York"}'
OK
127.0.0.1:6379> JSON.SET user:2 $ '{"name":"Bob","age":25,"city":"Boston"}'
OK
127.0.0.1:6379> JSON.SET user:3 $ '{"name":"Charlie","age":35,"city":"New York"}'
OK

# 查询所有在纽约的用户
127.0.0.1:6379> JSON.MGET user:1 user:2 user:3 $..[?(@.city=="New York")]
1) "{\"name\":\"Alice\",\"age\":30,\"city\":\"New York\"}"
2) "{\"name\":\"Charlie\",\"age\":35,\"city\":\"New York\"}"

四、Python 使用示例

安装 Redis 和 RedisJSON 的 Python 客户端:

pip install redis redis-json

示例代码:

import redis
from rejson import Client, Path

# 连接Redis
rj = Client(host='localhost', port=6379, decode_responses=True)

# 设置JSON文档
rj.jsonset('user:100', Path.rootPath(), {
    'name': 'Alice',
    'age': 30,
    'address': {
        'city': 'New York',
        'zip': '10001'
    },
    'tags': ['developer', 'redis']
})

# 获取字段
name = rj.jsonget('user:100', Path('.name'))
print(f"Name: {name}")

# 更新字段
rj.jsonset('user:100', Path('.age'), 31)

# 数组操作
rj.jsonarrappend('user:100', Path('.tags'), 'database')

# 获取整个文档
user_data = rj.jsonget('user:100', Path.rootPath())
print("User data:", user_data)

五、注意事项

  1. RedisJSON 需要 Redis 5.0 或更高版本
  2. 生产环境建议使用 Redis 6.0+ 以获得更好的性能
  3. 大文档可能会影响性能,建议合理设计数据结构
  4. RedisJSON 2.0+ 支持更强大的 JSONPath 查询语法

通过 RedisJSON,你可以直接在 Redis 中存储和操作 JSON 数据,无需在应用层进行序列化和反序列化,大大简化了开发流程并提高了性能。

以上就是在Redis中存储和操作JSON数据的方法详解的详细内容,更多关于Redis存储和操作JSON数据的资料请关注脚本之家其它相关文章!

相关文章

  • RabbitMQ+redis+Redisson分布式锁+seata实现订单服务的流程分析

    RabbitMQ+redis+Redisson分布式锁+seata实现订单服务的流程分析

    订单服务涉及许多方面,分布式事务,分布式锁,例如订单超时未支付要取消订单,订单如何防止重复提交,如何防止超卖、这里都会使用到,这篇文章主要介绍了RabbitMQ+redis+Redisson分布式锁+seata实现订单服务的流程分析,需要的朋友可以参考下
    2024-07-07
  • Redis实现高效插入大量数据的三种方法

    Redis实现高效插入大量数据的三种方法

    在实际开发中,我们经常需要向Redis批量写入大量数据,本文将详细介绍三种基于管道的批量插入方案,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下
    2026-04-04
  • Linux、Windows下Redis的安装即Redis的基本使用详解

    Linux、Windows下Redis的安装即Redis的基本使用详解

    Redis是一个基于内存的key-value结构数据库,Redis 是互联网技术领域使用最为广泛的存储中间件,这篇文章主要介绍了Linux、Windows下Redis的安装即Redis的基本使用详解,需要的朋友可以参考下
    2022-09-09
  • Redis Sentinel服务配置流程(详解)

    Redis Sentinel服务配置流程(详解)

    下面小编就为大家带来一篇Redis Sentinel服务配置流程(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • Redis所实现的Reactor模型设计方案

    Redis所实现的Reactor模型设计方案

    这篇文章主要介绍了Redis所实现的Reactor模型,本文将带领读者从源码的角度来查看redis关于reactor模型的设计,需要的朋友可以参考下
    2024-06-06
  • Redis报错“NOAUTH Authentication required”两种解决方案

    Redis报错“NOAUTH Authentication required”两种解决方案

    Redis提供了一个命令行工具redis-cli,它允许你直接连接到Redis服务器,如果你知道Redis服务器的密码,你可以在连接时直接提供它,本文给大家介绍连接了Redis报错“NOAUTH Authentication required”两种解决方案
    2024-05-05
  • php结合redis实现高并发下的抢购、秒杀功能的实例

    php结合redis实现高并发下的抢购、秒杀功能的实例

    下面小编就为大家带来一篇php结合redis实现高并发下的抢购、秒杀功能的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • 浅谈内存耗尽后Redis会发生什么

    浅谈内存耗尽后Redis会发生什么

    这篇文章主要介绍了浅谈内存耗尽后Redis会发生什么,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 深入解析Redis中常见的应用场景

    深入解析Redis中常见的应用场景

    这篇文章主要给大家介绍了关于Redis中常见的应用场景的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-09-09
  • redis4.0入门小结

    redis4.0入门小结

    这篇文章主要介绍了redis4.0入门小结,文中通过示例和概念介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11

最新评论