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)
五、注意事项
- redisjson 需要 redis 5.0 或更高版本
- 生产环境建议使用 redis 6.0+ 以获得更好的性能
- 大文档可能会影响性能,建议合理设计数据结构
- redisjson 2.0+ 支持更强大的 jsonpath 查询语法
通过 redisjson,你可以直接在 redis 中存储和操作 json 数据,无需在应用层进行序列化和反序列化,大大简化了开发流程并提高了性能。
以上就是在redis中存储和操作json数据的方法详解的详细内容,更多关于redis存储和操作json数据的资料请关注代码网其它相关文章!
发表评论