it编程 > 编程语言 > Javascript

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

21人参与 2025-07-04 Javascript

redisjson 安装部署及使用示例

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

一、安装部署

1. 前提条件

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数据的资料请关注代码网其它相关文章!

(0)

您想发表意见!!点此发布评论

推荐阅读

MySQL中JSON数据类型完全指南(从基础到高级)

07-04

Win11 25H2新开始菜单之应用分类揭秘:仅靠15MB JSON文件实现

07-04

一文详解php、jsp、asp和aspx的区别(小科普)

07-07

MySQL进行JSON复杂查询的完全指南

07-01

MySQL查询JSON数组字段包含特定字符串的方法

06-30

Rust 中的 JSON 处理利器serde_json功能详解

06-27

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论