欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Jedis vs Redisson,到底怎么选?

程序员文章站 2022-06-27 20:47:52
本文主要内容对比Redis的两个框架:Jedis与Redisson,分析各自的优势与缺点,为项目中Java缓存方案中的Redis编程模型的选择提供参考。 Jedis与Redisson Jedis是Redis的Java实现的客户端,其API提供了比较全面的Redis命令的支持; Redisson实现了 ......

Jedis vs Redisson,到底怎么选?

本文主要内容对比redis的两个框架:jedis与redisson,分析各自的优势与缺点,为项目中java缓存方案中的redis编程模型的选择提供参考。

jedis与redisson

jedis是redis的java实现的客户端,其api提供了比较全面的redis命令的支持;

redisson实现了分布式和可扩展的java数据结构,和jedis相比,功能较为复杂,不仅支持字符串操作,且还支持排序、事务、管道、分区等redis特性。

redisson的宗旨是促进使用者对redis的关注分离,从而让使用者能够将精力更集中地放在处理业务逻辑上。

编程模型

jedis中的方法调用是比较底层的暴露的redis的api,也即jedis中的java方法基本和redis的api保持着一致,了解redis的api,也就能熟练的使用jedis。

而redisson中的方法则是进行比较高的抽象,每个方法调用可能进行了一个或多个redis方法调用。

如下分别为jedis和redisson操作的简单示例:

jedis jedis = …;  
  
jedis.set("key", "value");  
  
list<string> values = jedis.mget("key", "key2", "key3");

redisson操作map:

redisson redisson = …  
  
rmap map = redisson.getmap("my-map"); // implement java.util.map  
  
map.put("key", "value");  
  
map.containskey("key");  
  
map.get("key");

可伸缩性

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

redisson使用非阻塞的i/o和基于netty框架的事件驱动的通信层,其方法调用是异步的。redisson的api是线程安全的,所以可以操作单个redisson连接来完成各种操作。

数据结构

jedis仅支持基本的数据类型如:string、hash、list、set、sorted set

redisson不仅提供了一系列的分布式java常用对象,基本可以与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可提供更便捷的方法。

第三方框架整合

  • redisson提供了和spring框架的各项特性类似的,以spring xml的命名空间的方式配置redissonclient实例和它所支持的所有对象和服务;

  • redisson完整的实现了spring框架里的缓存机制;

  • redisson在redis的基础上实现了java缓存标准规范;

  • redisson为apache tomcat集群提供了基于redis的非黏性会话管理功能。该功能支持apache tomcat的6、7和8版。

  • redisson还提供了spring session会话管理器的实现。

作者:mcbye
https://www.cnblogs.com/mcbye/archive/2017/08/18/jedis-vs-redisson.html

推荐去我的博客阅读更多:

1.java jvm、集合、多线程、新特性系列教程

2.spring mvc、spring boot、spring cloud 系列教程

3.maven、git、eclipse、intellij idea 系列工具教程

4.java、后端、架构、阿里巴巴等大厂最新面试题

觉得不错,别忘了点赞+转发哦!