java使用redis框架 Jedis,lettuce,Redisson对比

Jedis

传统老牌Java客户端,一直在更新,对redis命令有比较全面的支持。

优点

  • 支持全面的Redis命令,具有全面的API。

缺点

  • 阻塞式I/O,其方法都是同步调用,程序流需要等到 sockets 处理完 I/O 才能执行,不支持异步;
  • Jedis 客户端实例不是线程安全的,所以需要通过连接池来使用 Jedis。

lettuce

lettuce是可扩展的线程安全的客户端,支持异步模式。如果避免阻塞和事务操作,如BLPOP和MULTI/EXEC,多个线程就可以共享一个连接。lettuce 底层基于 Netty,支持高级的 Redis 特性,比如哨兵,集群,管道,自动重新连接和Redis数据模型。

优点:

  • 支持同步异步通信模式;
  • Lettuce 的 API 是线程安全的,如果不是执行阻塞和事务操作,如BLPOP和MULTI/EXEC,多个线程就可以共享一个连接。
  • SpringBoot 2.x默认Redis客户端,对Lettuce 提供完美支持

Redisson

Redisson 是一个在 Redis 的基础上实现的 Java 驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的 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 的最简单和最便捷的方法。Redisson 的宗旨是促进使用者对Redis的关注分离(Separation of Concern),从而让使用者能够将精力更集中地放在处理业务逻辑上。

优点:

  • 使用者对 Redis 的关注分离,可以类比 Spring 框架,这些框架搭建了应用程序的基础框架和功能,提升开发效率,让开发者有更多的时间来关注业务逻辑;
  • 提供很多分布式相关操作服务,例如,分布式锁,分布式集合,可通过Redis支持延迟队列等。 缺点:
  • Redisson 对字符串的操作支持比较差。

Redis Java客户端技术选型

文章基于SpringBoot 2.x进行选型

  • 仅使用Redis进行字符串的数据进行缓存处理,可以使用默认的lettuce。
  • 需要使用Redis做分布式事务,可以选择lettuce + Redisson。
  • 需要缓存分布式集合数据并对集合进行频繁读写操作,可以选择lettuce + Redisson。
  • 使用Redis 做消息队列,可以选择lettuce + Redisson。

连接池

Lettuce 连接被设计为线程安全,所以一个连接可以被多个线程共享,同时lettuce连接默认是自动重连。

虽然连接池在大多数情况下是不必要的,但在某些用例中可能是有用的。

连接池是否有必要?

Lettuce被线程安全的,它满足了多数场景需求.。所有Redis用户的操作是单线程执行的,使用多连接并不能改善一个应用的性能.。

阻塞操作的使用通常与获得专用连接的工作线程结合在一起。

使用Redis事务是使用动态连接池的典型场景,因为需要专用连接的线程数趋于动态,也就是说动态连接池的需求是有限的。

连接池总是伴随着复杂性和维护成本提升。

 # 留言:老婆做了一个小红书账号,全是瓷砖方面的干货,大佬们如果有需求或者有兴趣可以移步了解一下,嘻嘻~

小红书地址 GO GO GO ! ! !

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值