Redis Json 的安装与实战,真的很丝滑
2021/12/17 19:56:17
本文主要是介绍Redis Json 的安装与实战,真的很丝滑,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
号外
喜大普奔,Redis 官方支持 JSON 操作了,当我看到这个消息时,我的脑海中立马闪过这些操作:
-
把一个对象序列化成 json 字符串;
-
塞到 redis 的一个键上;
-
用的时候,拿到字符串,解析成对象,然后一顿操作猛如虎;
-
再序列化成字符串,塞回去。
而现在这一切简化成直接操作 Json 的了!下面赶紧来体验一番
安装 Redis
关于 redis 的安装,这里附上传送门:
https://blog.csdn.net/qq_24434251/article/details/121983628
安装 RedisJson
https://github.com/RedisJSON/RedisJSON/releases
在 redis 安装目录下新建 module 文件夹,把 rejson.so 放到 module 文件夹中
修改 rejson.so 为可执行权限
chmod +x rejson.so
修改 redis.conf ,搜索 loadmodule
loadmodule /usr/local/redis-6.2.6/module/rejson.so
重启 redis
/usr/local/redis-6.2.6/bin/redis-cli -a 123456 shutdown /usr/local/redis-6.2.6/bin/redis-server conf/redis.conf
命令行体验 json 的操作
# 创建一个 json_1 127.0.0.1:6379> JSON.SET json_1 . '{"name":"zz","age":22,"msg":"hello"}' OK # 设置 json_1 的 key=name 的值为 zhangsan 127.0.0.1:6379> JSON.SET json_1 .name '"zhangsan"' OK # 获得整个 json_1 127.0.0.1:6379> JSON.GET json_1 "{\"name\":\"zhangsan\",\"age\":22,\"msg\":\"hello\"}" # 获得 json_1 键为 name 的值 127.0.0.1:6379> JSON.GET json_1 .name "\"zhangsan\"" # 往 json_1 中添加一个数组对象 127.0.0.1:6379> json.set json_1 .list '[2,3,4]' OK # 往 json_1 的 list 对象中添加一个元素 6 127.0.0.1:6379> json.arrappend json_1 .list 6 (integer) 4 # 查看所有元素 127.0.0.1:6379> json.get json_1 "{\"name\":\"zhangsan\",\"age\":22,\"msg\":\"hello\",\"list\":[2,3,4,6]}"
体验下来,感觉 Redis 原生支持 json 之后,对于 redis 的操作更加灵活了。
想象空间更大了,一切复杂信息的存储皆可 JSON,并且操作十分简单,省去了序列化、反序列化的操作,那我们一起来看一下使用 Java Api 如何操作 Redis Json 的!
使用 Java 来操作 redis Json
当然我们还是要在一个 Java 工程中去操作一下:
package com.kkarch.rejson; import com.redislabs.modules.rejson.JReJSON; import com.redislabs.modules.rejson.Path; import redis.clients.jedis.Jedis; import java.util.Arrays; /** * @Author wangkai * @Time 2021/12/16 21:21 */ public class ReJsonMain { public static void main(String[] args) { Jedis jedis = new Jedis("192.168.0.110",6379); jedis.auth("123456"); JReJSON redisClient = new JReJSON(jedis); System.out.println("初始化 json"); redisClient.set("json_2",new Object()); redisClient.set("json_2","zhangsan",new Path(".name")); redisClient.set("json_2",21,new Path(".age")); redisClient.set("json_2","hello",new Path(".msg")); redisClient.set("json_2",Arrays.asList(9,8,7),new Path(".arr")); Object result = null; result = redisClient.get("json_2"); System.out.println(result); System.out.println("设置 name=lisi"); redisClient.set("json_2","lisi",new Path(".name")); result = redisClient.get("json_2"); System.out.println(result); System.out.println("在数组追加一个值:21"); redisClient.arrAppend("json_2", new Path(".arr"), 21); result = redisClient.get("json_2"); System.out.println(result); } }
结果:
初始化 json {name=zhangsan, age=21.0, msg=hello, arr=[9.0, 8.0, 7.0]} 设置 name=lisi {name=lisi, age=21.0, msg=hello, arr=[9.0, 8.0, 7.0]} 在数组追加一个值:21 {name=lisi, age=21.0, msg=hello, arr=[9.0, 8.0, 7.0, 21.0]}
其他命令还有下面这些,总之可以覆盖 json 的所有操作了。
使用 Python 操作 Redis Json
好久没用 Python,我的 PyCharm 都罢工了,遂直接用 cmd 来演示一把
首先要安装 rejson 模块
pip install rejson
然后进入命令行就可以直接操作了:
from rejson import Client, Path rj = Client(host='192.168.0.110', port=6379, decode_responses=True,password="123456") rj.jsonset("json_3",Path.rootPath(),{}) rj.jsonset("json_3",Path(".name"),"zhangsan") rj.jsonset("json_3",Path(".age"),"19") rj.jsonset("json_3",Path(".arr"),[1,3,4]) rj.jsonget("json_3")
结果:
>>> rj.jsonget("json_3") {'name': 'zhangsan', 'age': '19', 'arr': [1, 3, 4]}
使用 json 也是相当简单的。
当然,官方还支持更多的客户端(https://github.com/RedisJSON/RedisJSON):
关注了实用性,下面到了我们最关注的点了,性能如何?
RedisJson 的性能如何
官网也给了一个性能测试报告,可谓碾压其他 NoSQL,下面是核心的报告结论:
- 对于隔离写入(isolated writes),RedisJSON 比 MongoDB 快 5.4 倍,比 ElasticSearch 快 200 倍以上。
- 对于隔离读取(isolated reads),RedisJSON 比 MongoDB 快 12.7 倍,比 ElasticSearch 快 500 倍以上。
在混合工作负载场景中,实时更新不会影响 RedisJSON 的搜索和读取性能,而 ElasticSearch 会受到影响。以下是具体的数据:
- RedisJSON* 支持的操作数/秒比 MongoDB 高约 50 倍,比 ElasticSearch 高 7 倍/秒。
- RedisJSON* 的延迟比 MongoDB 低约 90 倍,比 ElasticSearch 低 23.7 倍。
此外,RedisJSON 的读取、写入和负载搜索延迟在更高的百分位数中远比 ElasticSearch 和 MongoDB 稳定。当增加写入比率时,RedisJSON 还能处理越来越高的整体吞吐量,而当写入比率增加时,ElasticSearch 会降低它可以处理的整体吞吐量。
其他更加详细的报告可以参看官网的基准测试博客:
https://redis.com/blog/redisjson-public-preview-performance-benchmarking/
有人已经将他翻译成了中文:
https://blog.csdn.net/xiangzhihong8/article/details/121530019
这篇关于Redis Json 的安装与实战,真的很丝滑的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16Vue3资料:新手入门必读教程
- 2024-11-16Vue3资料:新手入门全面指南
- 2024-11-16Vue资料:新手入门完全指南
- 2024-11-16Vue项目实战:新手入门指南
- 2024-11-16React Hooks之useEffect案例详解
- 2024-11-16useRef案例详解:React中的useRef使用教程
- 2024-11-16React Hooks之useState案例详解
- 2024-11-16Vue入门指南:从零开始搭建第一个Vue项目
- 2024-11-16Vue3学习:新手入门教程与实践指南
- 2024-11-16Vue3学习:从入门到初级实战教程