21人参与 • 2025-07-04 • Javascript
redisjson 是 redis 的一个模块,为 redis 提供了 json 数据类型的支持,允许直接存储、更新和查询 json 文档。
方法一:从预编译二进制文件安装
下载预编译的 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
连接到 redis 并执行:
redis-cli 127.0.0.1:6379> module list
如果安装成功,你应该能看到类似 name=rejson,ver=20000
的输出。
# 设置一个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"
# 更新单个字段 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
# 向数组添加元素 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\""
# 数值递增 127.0.0.1:6379> json.numincrby user1 .age 1 "32" # 数值相乘 127.0.0.1:6379> json.nummultby user1 .age 2 "64"
# 删除字段 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\"}"
安装 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 中存储和操作 json 数据,无需在应用层进行序列化和反序列化,大大简化了开发流程并提高了性能。
以上就是在redis中存储和操作json数据的方法详解的详细内容,更多关于redis存储和操作json数据的资料请关注代码网其它相关文章!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论