当前位置: 首页 > 科技观察

简单说说Redis中的几种Java客户端,以及它们的优缺点!

时间:2023-03-17 17:57:25 科技观察

1。小结与其他分布式中间件相比,Redis支持的客户端种类繁多,覆盖范围更广。除了支持c、c++、java、C#、php、Python等流行语言外,还支持Objective-C、Swift、Node.js等。以下是Redis按语言支持的客户端截图。从Java开发语言的角度来看,虽然有很多客户端可以选择,但官方推荐使用以下三个客户端,可能是因为它们对redis的支持更全面,API操作也更好。JedisLettuceRedisson在之前的文章中,我们详细介绍了Jedis、Lettuce、Redisson客户端的编程技巧。今天我们就来看看这三个客户端的优缺点,以及使用建议!2.客户对比2.1.JedisJedis是一个老牌的RedisJava客户端,它为Redis命令提供了全面的运行支持,是目前使用最广泛的客户端。项目访问地址:https://github.com/redis/jedis优点如下:JedisAPI提供了对Redis命令的全面支持。Jedis中的Java方法与RedisAPI基本一致,也就是说,了解RedisAPI,就可以熟练使用Jedis,支持pipelining、transaction、LUAScripting、RedisSentinel、RedisCluster等redis提供的高级特性轻量级、简洁、易于集成和改造、应用广泛、易于开发者使用,没有人是完美的,Jedis也有优点和缺点。缺点是:它使用阻塞I/O操作,它的方法调用都是同步的。程序流需要等到套接字处理完I/O后才能执行。它不支持异步Jedis。如果连接的redis服务器在多线程环境下是非线程安全的,此时可以使用连接池来管理Jedis。解决了Jedis客户端实例的非线程安全问题。不支持读写分离,需要技术文档自行实现,可以说几乎没有总体而言,Jedis是一款经典的Redis客户端(java语言方向),可以满足大部分项目的业务开发需求。虽然有一些瑕疵,但是可以通过其他方式弥补,比如可用性,安全性有保证,总体评价是操作简单,好用!2.2.LettuceLettuce是一个可扩展的、线程安全的Redis高级客户端。从SpringBoot2.x开始,Lettuce取代Jedis成为SpringBoot默认的Redis客户端项目访问地址:https://lettuce.io/优点如下:与Jedis相比,Lettuce是后起之秀,对于Redis来说更加全面,并解决了Jedis客户端实例存在非线程安全的问题。支持同步编程、异步编程、响应式编程、自动重连、主从模式、集群模块、哨兵模式、管道和编码器等Redis高级特性Lettuce基于Netty框架与redis的事件驱动通信采用非阻塞I/O操作,可以异步调用。与Jedis相比,Lettuce的性能是线程安全的。如果不是在执行阻塞和事务性操作,比如BLPOP和MULTI/EXEC等命令,多个线程可以共享一个连接,性能不会衰减。缺点是:API比较抽象,学习和使用成本高。实现了分布式可扩展的Java数据结构,提供了很多分布式相关的操作服务,比如可以通过Redis支持分布式锁、分布式集合、延迟队列等。项目访问地址:https://github.com/redisson/redisson优势如下:实现分布式特性和可扩展的Java数据结构,如分布式锁、分布式集合、分布式对象、分布式远程调度等高级特性,适合用于分布式开发与Lettuce一样,基于Netty框架与redis进行事件驱动通信,支持异步调用,高性能RedissonAPI是线程安全的,因此可以使用单个Redisson连接完成各种操作。支持读写分离,支持读负载均衡,可以在主从复制和RedisCluster架构下使用内置的TomcatSessionManager,为Tomcat6/7/8提供session共享功能,可以和SpringSession集成以Redis为基础实现与Jedis、Lettuce等基于redis命令封装的客户端相比,Redisson提供的功能更加高端和抽象。Redisson可以类比为Spring框架。这些框架构建了应用程序的基本框架和功能,可以显着提高开发效率,让开发者有更多时间关注业务逻辑文档更丰富,而且还有中文文档。缺点如下:相对于Jedis和Lettuce客户端,功能比较简单,对字符串的支持比较差,不支持排序,事务,管道,分区等Redis特性的API比较抽象,学习和使用成本高。3.总结Jedis和Lettuce是比较纯粹的Redis命令客户端,几乎不提供任何分布式操作服务。Jedis和Lettuce相比,Jedis的性能相对较差,其他方面也没有明显的区别,所以如果不需要使用Redis的高级功能,推荐优先使用Lettuce。与Jedis、Lettuce等基于redis命令封装的客户端相比,Redisson提供的功能更加高端和抽象。Redisson的优势在于它提供了许多开箱即用的高级Redis功能。如果你的应用需要使用Redis的高级功能,比如分布式锁、分布式对象、分布式会话共享等,推荐使用Redisson。总结一下:如果项目中需要分布式函数的场景不多,优先推荐Lettuce,基本够用。当然,如果你用Jedis也没问题,api操作会更简单。如果项目除了基本的数据缓存操作需求外,还需要分布式锁、分布式对象、分布式集合等功能,建议使用Lettuce+Redisson的组合。4.参考1.Redis-中文文档2.博客园-程序员的自由之路-Redis客户端Jedis、Lettuce、Redisson的比较3.腾讯云开发者社区-开发架构的二三事-几个java客户端的比较对于redis