简单谈谈Redis中的几种java客户端以及优缺点!

Redis客户端Jedis、Lettuce 和 Redisson优缺点总结 Redis 官方推荐的 Java 客户端有Jedis、Lettuce 和 Redisson。本文总结这些客服端的优缺点。 阅读详情

一、摘要

相对于其他的分布式中间件,Redis 支持的客户端种类非常繁多,涵盖更加全面,除了支持比较流行的 c、c++、java、C#、php、Python 等语言以外,还支持 Objective-C、Swift、Node.js 等等,以下是来自于 Redis 支持的按语言分类的客户端截图。

站在 java 开发语言的角度,虽然可供选择的客户端非常多,但是官方主要推荐使用以下三种客户端,原因大概是它们对 redis 提供的支持更加全面、api 操作更佳丰富。

  • Jedis

  • Lettuce

  • Redisson

在前几篇文章中,我们详细的介绍了 Jedis、Lettuce、Redisson 客户端的编程使用技巧,今天我们一起来看看这三个客户端的优缺点,以及使用建议!

二、客户端对比

2.1、Jedis

Jedis 是一款老牌 Redis 的 Java 客户端,提供了比较全面的 Redis 命令的操作支持,也是目前使用最广泛的客户端。

项目访问地址:

https://github.com/redis/jedis

优点如下:

  • Jedis 的 API 提供了比较全面的 Redis 命令的支持

  • Jedis 中的 Java 方法基本和 Redis 的 API 保持着一致,也就是说了解 Redis 的API,可以熟练的使用 Jedis

  • 支持 pipelining、事务、LUA Scripting、Redis Sentinel、Redis Cluster等等 redis 提供的高级特性

  • 客户端轻量,简洁,便于集成和改造

  • 使用广泛,开发人员易上手

人无完人,Jedis 也一样有优点也有劣势,缺点如下:

  • 使用阻塞的 I/O 操作,且其方法调用都是同步的,程序流需要等到 sockets 处理完 I/O 才能执行,不支持异步

  • Jedis 在实现上是直接连接的 redis server,如果在多线程环境下是非线程安全的,这个时候可以使用连接池来管理 Jedis,已解决 Jedis 客户端实例存在非线程安全的问题

  • 不支持读写分离,需要自己实现

  • 技术文档差,可以说几乎没有

整体来说,Jedis 是一款经典的 Redis 客户端(java 语言方向),能满足绝大部分项目中的业务开发需求,虽然有些瑕疵,但是可以通过其它方式来弥补,可用性、安全性方面都有保证,总体评价是操作简单,易上手!

2.2、Lettuce

Lettuce 是一种可扩展的、线程安全的 Redis 高级客户端。

从 Spring Boot 2.x 开始, Lettuce 已取代 Jedis 成为SpringBoot 默认的 Redis 客户端

项目访问地址:

https://lettuce.io/

优点如下:

  • 相比于 Jedis,Lettuce 属于后起之秀,对 Redis 更加全面,并且解决了 Jedis 客户端实例存在非线程安全的问题

  • 支持同步编程,异步编程,响应式编程,自动重新连接,主从模式,集群模块,哨兵模式,管道和编码器等等高级的 Redis 特性

  • Lettuce 底层基于 Netty 框架的事件驱动与 redis 通信,采用了非阻塞的 I/O 操作,可异步调用,相比 Jedis,性能高

  • Lettuce 的 API 是线程安全的,如果不是执行阻塞和事务操作,如 BLPOP 和MULTI/EXEC 等命令,多个线程就可以共享一个连接,性能方面不会衰减

缺点如下:

  • API 更加抽象,学习使用成本高

2.3、Redisson

Redisson 是一个在 Redis 的功能基础上实现的 Java 驻内存数据网格客户端。实现了分布式和可扩展的 Java 数据结构,提供很多分布式相关操作服务,例如分布式锁,分布式集合,可通过 Redis 支持延迟队列。

项目访问地址:

https://github.com/redisson/redisson

优点如下:

  • 实现了分布式特性和可扩展的 Java 数据结构,例如分布式锁,分布式集合,分布式对象,分布式远程调度等等高级功能,适合分布式开发

  • 与 Lettuce 一样,基于 Netty 框架的事件驱动与 redis 通信,支持异步调用,性能高

  • Redisson 的 API 是线程安全的,所以可以使用单个 Redisson 连接来完成各种操作。

  • 支持读写分离,支持读负载均衡,在主从复制和 Redis Cluster 架构下都可以使用

  • 内建 Tomcat Session Manager,为 Tomcat 6/7/8 提供了会话共享功能,可以与 Spring Session 集成,实现基于 Redis 的会话共享

  • 相比于 Jedis、Lettuce 等基于 redis 命令封装的客户端,Redisson 提供的功能更加高端和抽象,Redisson 可以类比 Spring 框架,这些框架搭建了应用程序的基础框架和功能,可以显著提升开发效率,让开发者有更多的时间来关注业务逻辑

  • 文档较丰富,有中文文档

缺点如下:

  • 和 Jedis、Lettuce 客户端相比,功能较为简单,对字符串的支持比较差,不支持排序、事务、管道、分区等 Redis 特性

  • API 更加抽象,学习使用成本高

三、小结

Jedis 和 Lettuce 是比较纯粹的 Redis 命令客户端,几乎没提供什么分布式操作服务。

Jedis 和 Lettuce 两者相比,Jedis 的性能比较差,其他方面并没有太明显的区别,所以如果你不需要使用 Redis 的高级功能的话,优先推荐使用 Lettuce。

相比于 Jedis、Lettuce 等基于 redis 命令封装的客户端,Redisson 提供的功能更加高端和抽象,逼格高!

Redisson 的优势是提供了很多开箱即用的 Redis 高级功能,如果你的应用中需要使用到 Redis 的高级功能,比如分布式锁,分布式对象,分布式会话共享等等,建议使用 Redisson。

总结下来:

  • 如果项目中对分布式功能的需求场景不多,优先推荐使用 Lettuce,基本上够用,当然你使用 Jedis 也没用问题,api 操作方面会更加简单。

  • 如果项目中除了对基本的数据缓存操作需求以外,还需要用到分布式锁,分布式对象,分布式集合等功能,优先推荐采用Lettuce + Redisson组合方式使用。

四、参考

1、redis - 中文文档

2、博客园 - 程序员自由之路 - Redis 客户端 Jedis、lettuce 和 Redisson 对比

3、腾讯云开发者社区 - 开发架构二三事 - redis几种java客户端比较

【Redis】Redis 的常见客户端汇总 1. 自定义序列化器super();@Override@Override2. 配置序列化器@Bean// 使用StringRedisSerializer来序列化和反序列化redis的key值// Hash的key也采用StringRedisSerializer的序列化方式。 阅读详情

相关推荐

「差生文具多系列」推荐两个好看的 Redis 客户端

📢 声明:🍄🌍 作者主页:【⚠️ 本文目的为个人学习记录及知识分享。如果有什么不正确、不严谨的地方请及时指正,不胜感激。直达博主:「(搜索或点击扫码)软件推荐时间到,推荐两款我常用的 Redis 客户端,都是免费的,且支持Mac、Windows,如果你之前的 Redis 客户端用的不顺手,可以试试下面这两个。

古时的风筝 1054

Redis的Java客户端

RedisJava的Java客户端

chenchenchencl的博客 1082

Redis 客户端深度对比:Jedis、Lettuce、Redisson 全方位解析

本文全面解析Java三大主流Redis客户端:Jedis、Lettuce和Redisson的核心特性与适用场景。Jedis作为老牌客户端,API简单直观但线程不安全;Lettuce基于Netty实现异步非阻塞,支持响应式编程,是SpringBoot默认选择;Redisson提供丰富的分布式数据结构和服务,特别适合复杂分布式场景。文章通过代码示例详细对比了三者在功能、性能、易用性等方面的差异,并给出选型建议:简单场景用Jedis,常规SpringBoot项目用Lettuce,需要分布式锁等高级功能时选用Red

weixin_51040479的博客 524

Redis(四) - Redis的Java客户端

Redis(四) - Redis的Java客户端

及时当勉励,岁月不待人 3511

Java 中使用 Redis 的几种方式优缺点对比

Redis 是一个高性能的键值对存储系统,广泛用于缓存、消息队列、分布式锁等场景。在 Java 开发中,集成 Redis 是提升应用性能和扩展性的常用方式。随着 Redis 客户端和技术栈的不断发展,开发者可以通过多种方式在 Java 中使用 Redis。本文将详细介绍几种常见的 Redis 集成方式,分析其优缺点,帮助开发者选择适合自己项目的实现方式。

fudaihb的博客 1758

ESP32锂电池电量检测实战:从引脚选择到低功耗优化(附完整电路图)

本文详细介绍了ESP32锂电池电量检测的实战方案,从ADC引脚选择到低功耗优化,提供完整的电路图和代码实现。通过MOS管智能开关和深度睡眠技术,显著降低静态功耗至0.5μA,提升设备续航能力。适合物联网开发者解决电量检测中的常见问题。

weixin_28731223的博客 462

Redis Java客户端推荐及解析——必看的权威指南

Redis支持多种Java客户端,包括Jedis、Lettuce和Redisson等。其中,官方推荐使用Jedis或Lettuce作为主要客户端。Jedis基于连接池实现,适合简单场景;Lettuce则支持Reactive和异步模式,适用于高并发需求。选择时需根据具体业务场景和性能要求进行权衡。

蓝鲸鱼计算机软件开发工作室 1085

从零解析:富斯i6遥控器与STM32的IBUS协议通信实战

本文详细解析了富斯i6遥控器与STM32通过IBUS协议通信的实战指南,涵盖硬件准备、协议解析、驱动实现及常见问题解决。特别适合机器人及智能小车开发者,提供低成本、高可靠性的无线控制方案,助力快速实现多通道控制功能。

weixin_29193359的博客 441

Redis中的几种java客户端对比

Redis中的几种java客户端对比

坚持学习永不言弃 326

Python 爬取新浪财经 7x24(1): 下载数据

前言 最近在做一个需要很多财经数据的项目。于是想到可不可以通过爬虫来解决(尝试白嫖)。 提供财经数据的网站有很多个,其中比较靠谱和更新比较及时的应该是新浪7x24 live数据。 http://finance.sina.com.cn/7x24/?tag=0 这个问题有一定的难度,因为这个网页是动态加载的。每一次只会加载部分数据,而只有拉到底部才可以加载新的数据。 于是乎,我们要做的事情是: 下载数据 保存到数据库 本篇介绍如何下载数据。 代码 闲言少叙书归正文,代码的实现如下: import reque

ZJ_11701的博客 2905

C# 操作Excel的时候,出现"被呼叫方拒绝接受呼叫的异常"的解决方案(参考官方给出的解决方案)

首先官方有对这个错误给出解释和解决方案,连接如下: https://docs.microsoft.com/zh-cn/previous-versions/ms228772(v=vs.120)#%E5%8F%AF%E9%9D%A0%E7%BC%96%E7%A8%8B 简单来说,貌似是线程问题,我猜。。。 之前我尝试着在代码中添加 Thread.Sleep(1000); 来进行解决,这种办...

Ck_Max的博客 5769

Redis 客户端简述

不同的Redis客户端根据其支持的编程语言、设计理念和实现机制有着不同的特点、优缺点。选择合适的客户端通常取决于项目的具体需求、开发团队的技术栈以及对性能、可用性的考量。

坚定目标,超越自我 1322

PR工具timing report中setup time的计算过程

然后去pr工具里报告report_delay_calculation/reportDelayCalculation -from related_pin -to constraint_pin。这里constraint pin就是D pin (D0 D1 D2 D3),related pin就是 CK pin。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 458

Java使用Redis的几种客户端介绍

Redisson提供的特性包括完善的Redis客户端功能、支持单节点、集群、哨兵模式的自动切换、提供了完整的Java原生API、支持所有Redis支持的数据结构以及扩展的分布式数据结构、提供了线程安全的同步/异步Redis操作、支持高性能并发操作、提供了分布式实现的超时等待、信号量、倒计时器、锁、消息队列、异步执行等功能。Lettuce是另一个流行的Redis客户端,它的优点包括:易于使用、支持多种数据结构、支持集群模式和哨兵模式、支持事务和管道操作等。此外,Jedis在处理大文件时可能会出现问题。

Qrind的博客 846

tsmc12: m0po max length问题(H384.M0_PO.L.1)

手动调整可以挪cell,制造上下两个row相对的至少一个site的空间,通过插普通filler来解决,这里需要注意的是,tsmc12有via0的规则,需要让via0落在via0 grid上。在pt eco之后会有一些m0po max length问题出现,大部分问题都可以通过替换decap来解决,少部分由于局部density过高,需要手动调整。更多学习内容请关注「拾陆楼」知识星球。#ICC2中替换decap的参考脚本。

m0_61544122的博客 792

基于STM32设计的遥控灭火消防小车_296

随着城市化进程的加速和火灾发生频率的增加,传统的消防方式在应对初期火灾时存在反应慢、效率低等问题。为了提高火灾响应速度和灭火效率,本设计开发了一款基于STM32单片机的遥控灭火消防小车。该小车配备了烟雾检测、温湿度监测、火源定位、灭火操作等功能,能够通过蓝牙和WIFI实现远程控制与实时视频传输。设计采用了MQ2烟雾传感器、SHT30温湿度传感器、火光传感器和ESP32摄像头模块等硬件设备。系统不仅能够自动检测和定位火源,还可以手动调整灭火器对准位置,进行干粉灭火。此外,蜂鸣器用于火源报警,确保操作人员及时得

724

Redis第2讲——Java三种客户端(Jedis、Lettuce和Redisson)

上篇文章介绍了Redis的9种数据类型和常命令、7种数据结构和9种编码方式。但是如果想要把它应用到项目中,我们还需要一个redis的客户端。redis的Java客户端种类还是很多的,其中使用最广泛的有三种——Jedis、lettuce和redisson,下面我们一起来学习下。基于redis开放的通信协议,大神们纷纷开发出了各种语言的redis客户端,包括C、C++、C#、D、java、Python、Ruby等50多种,这些客户端都是基于redis命令做了一层封装,并打包成工具,以便更方便地操作redis。

让~学习~成为一种习惯(橡 皮 人の技术博客) 6550

大华 DSS 数字监控系统 itcBulletin SQL 注入漏洞复现

大华 DSs 数字监控系统是大华开发的一款安防视频监控系统,拥有实时监视、云台操作、录像回放、报警处理、设备管理等功能。大华 DSS存在SQL注入漏洞,攻击者 pota/services/itcBuletin 路由发送特殊构造的数据包,利用报错注入获取数据库敏感信息。攻击者除了可以利用 SQL注入漏词获取数据库中的信息例如,管理员后台密码、站点的用户人人信息)之外,甚至在高权限的情况可向服务器中写入木马,进一步获取服务器系统权限poc验证是否存在漏洞如果你想查询用户名和密码。

holyxp的博客 4004

Redis客户端合集

Jedis:简单、同步的客户端,适合中小型应用。Lettuce:支持异步和响应式操作,适合高并发应用。Redisson:功能丰富,支持分布式功能,适合复杂应用。:与 Spring 框架集成,适合 Spring 应用。JRedis:轻量级客户端,适合嵌入式应用。:连接池管理库,适合与其他客户端结合使用。选择 Redis 客户端库时,可以根据应用的需求、并发要求、是否使用 Spring 等因素来决定。

鸡蛋番茄炒饭的博客 913

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Redis中的Java客户端

SpringData是Spring中数据操作的模块,包含对各种数据库的集成,其中对Redis的集成模块就叫做官网地址提供了对不同Redis客户端的整合(Lettuce和Jedis提供了统一API来操作Redis支持Redis的发布订阅模型支持Redis哨兵和Redis集群支持基于Lettuce的响应式编程支持基于JDK、JSON、字符串、Spring对象的数据序列化及反序列化支持基于Redis的JDKCollection实现。

· 1065

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Redis:原理速成+项目实战——Redis的Java客户端

Redis:原理速成+项目实战——Redis的Java客户端

m0_52380556的博客 1336

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Redis100篇 - 新手必看:Redis客户端怎么选 Redis CLI/Redis Desktop Manager对比

场景推荐工具学习 Redis 命令开发调试服务器运维团队协作✅ RDM + 文档自动化脚本快速演示🌟终极建议“新手先用 RDM 熟悉数据,同时用 CLI 练命令;熟练后,CLI 为主,RDM 为辅;运维一律用 CLI。现在,打开你的终端或 RDM,连接 Redis,亲手试一试吧!当你能自由切换 CLI 和 GUI 时,你就真正掌握了 Redis 的“任督二脉”!✨🔍 技术之路没有捷径,但每一次阅读、思考和实践,都在悄悄拉近你与目标的距离。💡 如果本文对你有帮助,不妨 👍、📌、📤分享。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

Redis的Java客户端以及SpringBoot整合Jedis、SpringDataRedis、RedisTemplate、StringRedisTemplate

Redis提供了三种主流Java客户端:Jedis(线程不安全,需连接池)、Lettuce(基于Netty,线程安全)和Redisson(提供分布式数据结构)。Spring Data Redis整合了这些客户端,通过RedisTemplate提供统一API。默认JDK序列化存在可读性差问题,可通过配置改用JSON序列化。为节省内存,推荐使用StringRedisTemplate手动处理对象序列化。示例演示了字符串、对象和哈希类型的基本操作,建议根据实际需求选择合适的客户端和序列化方式。

BRJ_123456789的博客 1296

Java Redis三种客户端对比(优缺点对比+使用建议)

Redis 官方推荐的 Java 客户端有Jedis、lettuce 和 Redisson。 1. Jedis Jedis 是老牌的 Redis 的 Java 实现客户端,提供了比较全面的 Redis 命令的支持,其官方网址是:http://tool.oschina.net/uploads/apidocs/redis/clients/jedis/Jedis.html。 优点: 支持全面的 Redis 操作特性(可以理解为API比较全面)。 缺点: 使用阻塞的 I/O,且其方法调用都是同步的,程序流

qq_35222843的博客 1944
上一篇: 带你用20张图了解什么是 JVM 运行时数据区
下一篇: 程序员该如何用“高科技”智能地教狗狗上厕所
Java_LingFeng
博客等级 码龄4年 505粉丝 259原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值