最新要闻
- 强震已致超7700人遇难!土耳其地震背后的人祸 建筑不达标、豆腐渣工程多
- 全球热议:全球首架国产大飞机C919首飞三亚 民航最高接待礼“过水门”接风
- 环球关注:iPhone 15 Pro系列拿到三星顶级屏幕!超出S23系列整整两代
- 免费无广告 微软电脑管家2.7公测版发布:任务栏被意外修改有救了
- 4599元!佳能EOS R50发布:329克超轻便 支持无裁切6K
- 天天信息:研发10几年、花费千亿:日本国产大飞机为何失败?就是畸形产物
- 全球微速讯:LV将涨价?国人排长龙抢购 买万元包像在赶集:世界首富曾感慨中国用户有钱
- 马斯克将于3月1日公布特斯拉宏图第三篇章 第二篇章已烂尾
- 世界观速讯丨国产车企1:1复刻几十年前的MINI外观专利 宝马抗议!结果判了
- 【独家焦点】真心没想到!五旬男子开车撞上护栏:只因刚割了双眼皮
- 全球热消息:全世界最后一只袋狼究竟是怎么死的?
- 民企第一只 京东仓储REIT上市:认购额超718亿元遭疯抢
- 微动态丨暴躁小钢炮!极氪X实车亮相:零百加速3秒级
- 环球微速讯:《仙剑奇侠传》《和平精英》梦幻联动:赵灵儿端枪吃鸡
- 啥身材都能包!真维斯连帽卫衣大促:日常100元 现价50到手
- 6年来苹果iPhone涨价近50% 还会继续涨 库克不怕没人买
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
全球热头条丨Jedis那么低性能,还在用吗? lettuce时代开幕啦
文章持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版为您奉上珍贵的学习资源 :
免费赠送 :《尼恩Java面试宝典》持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备免费赠送 经典图书:《Java高并发核心编程(卷1)加强版》面试必备 + 大厂必备 +涨薪必备 加尼恩免费领免费赠送 经典图书:《Java高并发核心编程(卷2)加强版》面试必备 + 大厂必备 +涨薪必备 加尼恩免费领免费赠送 经典图书:《Java高并发核心编程(卷3)加强版》面试必备 + 大厂必备 +涨薪必备 加尼恩免费领
(资料图片)
免费赠送 资源宝库: Java 必备 百度网盘资源大合集 价值>10000元 加尼恩领取
在 疯狂创客圈 的社群面试交流中,有很多小伙伴在面大厂, 经常遇到下面的问题:
3大redis客户端:Jedis、Redisson、Lettuce ,如何选型?
现在把这个 题目以及参考答案,收入咱们的 《尼恩Java面试宝典》,
供后面的小伙伴参考,提升大家的 3高 架构、设计、开发水平。
注:本文以 PDF 持续更新,最新尼恩 架构笔记、面试题 的PDF文件,请从这里获取:码云
简介:Redis 的3大 Java 客户端组件
Redis 官方推荐的 Java 客户端有Jedis、lettuce 和 Redisson。
客户端1:Jedis
是老牌的Redis的Java实现客户端,提供了比较全面的Redis命令的支持
Jedis 在线网址:
http://tool.oschina.net/uploads/apidocs/redis/clients/jedis/Jedis.html
客户端2:Redisson
实现了分布式和可扩展的Java数据结构。促使使用者对Redis的关注分离,提供很多分布式相关操作服务,例如,分布式锁,分布式集合,可通过Redis支持延迟队列
redisson 官网地址:
https://redisson.org/
redisson git项目地址:
https://github.com/redisson/redisson
客户端3:lettuce
高级Redis客户端,用于线程安全同步,异步和响应使用,支持集群,Sentinel,管道和编码器。
基于Netty框架的事件驱动的通信层,其方法调用是异步的。Lettuce的API是线程安全的,所以可以操作单个Lettuce连接来完成各种操作
lettuce 官网地址:
https://lettuce.io/
lettuce git项目地址:
https://github.com/lettuce-io/lettuce-core
客户端组件1:Jedis
Jedis 是老牌的 Redis 的 Java 实现客户端,提供了比较全面的 Redis 命令的支持
优点:
- 支持全面的 Redis 操作特性(可以理解为API比较全面)。
缺点:
- 使用阻塞的 I/O,且其方法调用都是同步的,程序流需要等到 sockets 处理完 I/O 才能执行,不支持异步;
- Jedis 客户端实例不是线程安全的,所以需要通过连接池来使用 Jedis。
客户端组件2:Redisson
Redisson 是一个在 Redis 的基础上实现的 Java 驻内存数据网格(In-Memory Data Grid)。
Redisson 提供了使用Redis 的最简单和最便捷的方法。
它不仅提供了一系列的分布式的 Java 常用对象,还提供了许多分布式服务。
其中包括:
BitSet, Set, Multimap, SortedSet, Map, List, Queue, BlockingQueue, Deque, BlockingDeque, Semaphore, Lock, AtomicLong, CountDownLatch, Publish / Subscribe, Bloom filter, Remote service, Spring cache, Executor service, Live Object service, Scheduler service)
Redisson 的宗旨是促进使用者对Redis的关注分离(Separation of Concern),从而让使用者能够将精力更集中地放在处理业务逻辑上。
优点:
- 使用者对 Redis 的关注分离,可以类比 Spring 框架,这些框架搭建了应用程序的基础框架和功能,提升开发效率,让开发者有更多的时间来关注业务逻辑;
- 提供很多分布式相关操作服务,例如,分布式锁,分布式集合,可通过Redis支持延迟队列等。
- Redisson基于Netty框架的事件驱动的通信层,其方法调用是异步的。
- Redisson的API是线程安全的,所以可以操作单个Redisson连接来完成各种操作
缺点:
- Redisson 对字符串的操作支持比较差。
客户端组件3:lettuce
lettuce ([ˈletɪs]),是一种可扩展的线程安全的 Redis 客户端,支持异步模式。
如果避免阻塞和事务操作,如BLPOP和MULTI/EXEC,多个线程就可以共享一个连接。
lettuce 底层基于 Netty,支持高级的 Redis 特性,比如哨兵,集群,管道,自动重新连接和Redis数据模型。
lettuce能够支持redis4,需要java8及以上。
lettuce是基于netty实现的与redis进行同步和异步的通信。
优点:
- 支持同步异步通信模式;
- Lettuce 的 API 是线程安全的,如果不是执行阻塞和事务操作,如BLPOP和MULTI/EXEC,多个线程就可以共享一个连接。
lettuce、jedis、Redisson 三者比较:
jedis使直接连接redis server,如果在多线程环境下是非线程安全的,这个时候只有使用连接池,为每个jedis实例增加物理连接 ;
lettuce的连接是基于Netty的,连接实例(StatefulRedisConnection)可以在多个线程间并发访问,StatefulRedisConnection是线程安全的,所以一个连接实例可以满足多线程环境下的并发访问,当然这也是可伸缩的设计,一个连接实例不够的情况也可以按需增加连接实例。
Jedis 和 lettuce 是比较纯粹的 Redis 客户端,几乎没提供什么高级功能。
Jedis 的性能比较差,所以如果你不需要使用 Redis 的高级功能的话,优先推荐使用 lettuce。
Redisson实现了分布式和可扩展的Java数据结构,和Jedis相比,功能较为简单,不支持字符串操作,不支持排序、事务、管道、分区等Redis特性。
Redisson的宗旨是促进使用者对Redis的关注分离,从而让使用者能够将精力更集中地放在处理业务逻辑上。
如果需要分布式锁,分布式集合等分布式的高级特性,添加Redisson结合使用,因为Redisson本身对字符串的操作支持很差。
Redisson 的优势是提供了很多开箱即用的 Redis 高级功能,如果你的应用中需要使用到 Redis 的高级功能,建议使用 Redisson。
具体 Redisson 的高级功能可以参考:https://redisson.org/
使用建议
建议:lettuce + Redisson
在spring boot2之后,redis连接默认就采用了lettuce。
就想 spring 的本地缓存,默认使用Caffeine一样,
这就一定程度说明了,lettuce 比 Jedis在性能的更加优秀。
生产问题
问题1 链接短链怎么办?
小伙伴问题1 链接短链怎么办?
具体问题:Jedis有心跳 能保持长连接,lettuce好像没有心跳。 阿里ecs 搭的redis tcp长时间没有传输 就会断开 ,但是lettuce感知不到, 再执行redis请求就会提示链接不可用
这就需要大家,熟悉Netty的开发和源码,
具体来说,可以通过用netty的空闲检测机制来维持连接。
空闲检测 不是心跳机制。
什么是心跳机制
心跳是在TCP长连接中,客户端和服务端定时向对方发送数据包通知对方自己还在线,保证连接的有效性的一种机制。在服务器和客户端之间一定时间内没有数据交互时, 即处于 idle 状态时, 客户端或服务器会发送一个特殊的数据包给对方, 当接收方收到这个数据报文后, 也立即发送一个特殊的数据报文, 回应发送方, 此即一个 PING-PONG 交互.
自然地, 当某一端收到心跳消息后, 就知道了对方仍然在线, 这就确保 TCP 连接的有效性.
空闲检测 是心跳的基础机制。
**什么是空闲检测 **
就是检测通道中的读写数据包,如果一段时间内,没有收到读写数据包,就会出发 IdleStateEvent 空闲状态事件。
所以,可以借助这个机制,主动关闭 空闲的、被异常断开的连接。
参考代码如下:
import io.lettuce.core.resource.ClientResources;import io.lettuce.core.resource.NettyCustomizer;import io.netty.bootstrap.Bootstrap;import io.netty.channel.Channel;import io.netty.channel.ChannelDuplexHandler;import io.netty.channel.ChannelHandlerContext;import io.netty.handler.timeout.IdleStateEvent;import io.netty.handler.timeout.IdleStateHandler;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration; @Configurationpublic class ClientConfig { @Bean public ClientResources clientResources(){ NettyCustomizer nettyCustomizer = new NettyCustomizer() { @Override public void afterChannelInitialized(Channel channel) { channel.pipeline().addLast( //此处事件必须小于超时时间 new IdleStateHandler(40, 0, 0)); channel.pipeline().addLast(new ChannelDuplexHandler() { @Override public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception { if (evt instanceof IdleStateEvent) { ctx.disconnect(); } } }); } @Override public void afterBootstrapInitialized(Bootstrap bootstrap) { } }; //替换掉 NettyCustomizer 通道初始化处理器 return ClientResources.builder().nettyCustomizer(nettyCustomizer ).build(); }}
写在最后
这个组件,大家可以用用,然后写在简历上, 增加简历亮点。
如果不知道怎么写,可以来找尼恩改简历,一定把你的简历,改到脱胎换骨,金光闪闪。
参考
- RESP协议1:https://www.cnblogs.com/4a8a08f09d37b73795649038408b5f33/p/9998245.html
- RESP协议2:https://my.oschina.net/u/2474629/blog/913805
- RESP协议3:https://www.cnblogs.com/throwable/p/11644790.html
- Redis的三个框架:Jedis,Redisson,Lettuce:https://www.cnblogs.com/williamjie/p/11287292.html
- redis客户端选型-Jedis、lettuce、Redisson:https://blog.csdn.net/a5569449/article/details/106891111/
推荐阅读:
《网易二面:CPU狂飙900%,该怎么处理?》
《阿里二面:千万级、亿级数据,如何性能优化? 教科书级 答案来了》
《峰值21WQps、亿级DAU,小游戏《羊了个羊》是怎么架构的?》
《场景题:假设10W人突访,你的系统如何做到不 雪崩?》
《2个大厂 100亿级 超大流量 红包 架构方案》
《Nginx面试题(史上最全 + 持续更新)》
《K8S面试题(史上最全 + 持续更新)》
《操作系统面试题(史上最全、持续更新)》
《Docker面试题(史上最全 + 持续更新)》
《Springcloud gateway 底层原理、核心实战 (史上最全)》
《Flux、Mono、Reactor 实战(史上最全)》
《sentinel (史上最全)》
《Nacos (史上最全)》
《分库分表 Sharding-JDBC 底层原理、核心实战(史上最全)》
《clickhouse 超底层原理 + 高可用实操 (史上最全)》
《nacos高可用(图解+秒懂+史上最全)》
《队列之王: Disruptor 原理、架构、源码 一文穿透》
《环形队列、 条带环形队列 Striped-RingBuffer (史上最全)》
《一文搞定:SpringBoot、SLF4j、Log4j、Logback、Netty之间混乱关系(史上最全)》
《红黑树( 图解 + 秒懂 + 史上最全)》
《分布式事务 (秒懂)》
《缓存之王:Caffeine 源码、架构、原理(史上最全,10W字 超级长文)》
《缓存之王:Caffeine 的使用(史上最全)》
《Docker原理(图解+秒懂+史上最全)》
《Redis分布式锁(图解 - 秒懂 - 史上最全)》
《Zookeeper 分布式锁 - 图解 - 秒懂》
《Zookeeper Curator 事件监听 - 10分钟看懂》
《Netty 粘包 拆包 | 史上最全解读》
《Netty 100万级高并发服务器配置》
全球热头条丨Jedis那么低性能,还在用吗? lettuce时代开幕啦
热资讯!阿里IM技术分享(十):深度揭密钉钉后端架构的单元化演进之路
强震已致超7700人遇难!土耳其地震背后的人祸 建筑不达标、豆腐渣工程多
全球热议:全球首架国产大飞机C919首飞三亚 民航最高接待礼“过水门”接风
环球关注:iPhone 15 Pro系列拿到三星顶级屏幕!超出S23系列整整两代
全球消息!高级Excel教程_编程入门自学教程_菜鸟教程-免费教程分享
重点聚焦!Serverless 时代开启,云计算进入业务创新主战场
【天天报资讯】Go的参数是传值还是传引用问题
【环球聚看点】【踩坑记录】单测中@PostConstruct多次执行
免费无广告 微软电脑管家2.7公测版发布:任务栏被意外修改有救了
4599元!佳能EOS R50发布:329克超轻便 支持无裁切6K
天天信息:研发10几年、花费千亿:日本国产大飞机为何失败?就是畸形产物
全球微速讯:LV将涨价?国人排长龙抢购 买万元包像在赶集:世界首富曾感慨中国用户有钱
高级Excel图表教程_编程入门自学教程_菜鸟教程-免费教程分享
Apache ANT 教程_编程入门自学教程_菜鸟教程-免费教程分享
焦点播报:算法学习笔记(15): Trie(字典树)
今日讯!火山引擎 DataTester“智能发布”:覆盖产品研发、测试、上线全流程,一站式智能管理 A/B 实验
DB2教程_编程入门自学教程_菜鸟教程-免费教程分享
马斯克将于3月1日公布特斯拉宏图第三篇章 第二篇章已烂尾
世界观速讯丨国产车企1:1复刻几十年前的MINI外观专利 宝马抗议!结果判了
【独家焦点】真心没想到!五旬男子开车撞上护栏:只因刚割了双眼皮
全球热消息:全世界最后一只袋狼究竟是怎么死的?
民企第一只 京东仓储REIT上市:认购额超718亿元遭疯抢
当前视讯!C#(进制转换) NumberConversion
ChatGPT国内也能用吗?ChatGPT国内镜像站点分享给你们
微动态丨暴躁小钢炮!极氪X实车亮相:零百加速3秒级
环球微速讯:《仙剑奇侠传》《和平精英》梦幻联动:赵灵儿端枪吃鸡
啥身材都能包!真维斯连帽卫衣大促:日常100元 现价50到手
6年来苹果iPhone涨价近50% 还会继续涨 库克不怕没人买
《流浪地球2》导演郭帆:国产科幻片工业流程还是初级 吃饭都会出大错误
童话二分之一的大结局是什么?童话二分之一演员表
金棕色适合什么肤色?金棕色和金栗色茶色的区别有哪些?
回避型人格障碍的表现有哪些?回避型人格障碍怎么治疗?
天天快资讯丨袋鼠云数栈UI5.0焕新升级,全新设计语言DT Design,更懂视觉更懂你!
【世界热闻】芯驿电子发布车载系列产品全新品牌AUMO
速讯:仿制作图《这里是中国》封面
【天天播资讯】spring注解
升学宴是什么意思?学生升学宴家长答谢宴致辞
货柜标准尺寸是多少?货柜集装箱尺寸规格表
淘宝换购是什么意思?淘宝换购的东西是正品吗?
笔记本键盘怎么拆卸?笔记本电脑键盘拆卸方法
ddr2内存条还能用吗?ddr2和ddr3的区别有哪些?
爱奇艺弹幕开关在哪里?爱奇艺怎么关闭弹幕?
手机微信语音电话接不到是什么原因?手机微信语音没有声音是怎么回事?
观点:零跑汽车创始人:有信心在一些环节超越特斯拉
【全球热闻】大六缸白菜价!马自达CX-90售价公布:约27.8万元起
美国计划强制让电动汽车“发声” 20多年的老车也不放过
环球热资讯!冷空气今起发货!江南等地暴雨北方局地暴雪 出行注意
人民日报评智能电视套路收费:广告无法消除、会员一充再充
必应、Edge拥抱ChatGPT 微软一晚大赚5400多亿:AI时代已到
焦点报道:女子网上买iPhone 14收到一堆铁片 京东自营退一赔一
天天日报丨用ChatGPT搞钱年入百万!各路博主发布生财之道 网友回呛
今日讯!比亚迪秦PLUS DM-i 2023冠军版宣布2月10日发布:车机、续航全升级
精选!特斯拉跌落神坛?辅助驾驶横评仅得第七
必知必会的设计原则——依赖倒置原则
难怪发质没有变好!这么多年用吹风机竟用错了
每日快看:PC 10年来最大跌幅 2023依然寒气逼人:复活要靠Win10“死亡”
全球通讯!优化渣?《霍格沃兹之遗》3A游戏被指太吃硬件:8GB显存都不好意思打招呼
坐拥千万粉丝医生称女子因洁牙感染梅毒?口腔机构回应 权威科普来了
读Java实战(第二版)笔记04_用流收集数据
世界今热点:告别OLED!苹果2025年商用microLED:克服烧屏问题
【世界时快讯】一加杀入平板领域!一加Pad发布:天玑9000加持
观点:女子存款5万需提供个人收入证明引热议:回应来了
一文了解WiFi 7优势:网速快不是最大看点
全球聚焦:男子网恋5年转给对方1700万被骗 还是已婚男人:网友崩溃
全球信息:Go学习资料
阿里云产品-智能语音交互快速测评
世界快讯:“ChatGPT中文版”上线:遭国内网友爆破
三十年了 钠离子电池总算熬出头!取代铅酸、把锂价打下去
环球热门:女子取药时发现医生用手机追剧引争议 医院回应:核实后会处罚
看完狗头萝莉、胡鑫宇的遭遇 我想聊聊自杀这件事
当前头条:亚洲第一!中国火箭发动机试车台传喜讯
【全球报资讯】【LeetCode哈希表#4】梦开始的地方:两数之和(map),以及关于容器map的一些代码技巧
【全球独家】18寸终极发烧游戏本!ROG枪神7 Plus超竞版评测:首发i9-13980HX多核暴涨40%
杭州法华寺月薪8万招聘和尚?传授72绝技?假的
铁锅“”开锅“”有科学依据吗?为什么厂家不帮忙弄好?
《分布式技术原理与算法解析》学习笔记Day04
【独家】ASP.NET Core+Element+SQL Server开发校园图书管理系统(四)
快消息!E. Monsters (hard version)
日本国产大飞机研发失败:研发耗时十余年
当前视讯!大批《LOL》玩家逃离国服挤爆台服 拳头调查处理中
Blazor封装一个显示Markdown的组件
高层次综合器Vivado HLS的概念与特点[原创www.cnblogs.com/helesheng]
头条:为何突然爆红网络?小胖俞涛回应“九转大肠梗” 吃起来确实酸爽
【环球报资讯】天马认领:独家供应一加Ace 2 1.5K灵犀触控屏
世界报道:HashMap源码分析 (基于JDK1.8)
cmd的一些命令
焦点速看:Python教程:高级特性
天天快看点丨vue3 | slots
通讯!0糖0脂0卡 三种口味 哪吒气泡水1.66元/瓶史底
世界今亮点!逆天!男子称在国美买家电两年没到货 花费超两万
全球热消息:影驰首次涉足游戏显示器:27寸2K屏、165Hz高刷
奔驰史诗级调整:19款车将停产!不挣钱的不要
世界热门:宁德时代两大杀手级新品电池正式来了:新能源汽车市场要变天?
VGA、TFT显示模块——verilog实现
天天看热讯:智能运维|AIRIOT智慧光伏管理解决方案
定时任务
14.9mm纤薄机身惊艳:联想小新Air 14 2023烟霞紫亮相
观热点:1099元起 真我推出V30/V30t新机:天玑700入门U
环球热点评!3月1日上线全国外卖服务?抖音回应:无具体时间表