Jedis vs Redisson,到底怎么选?

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

image.png

本文主要内容对比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会话管理器的实现。



相关文章
|
负载均衡 监控 关系型数据库
MySQL 官宣:支持读写分离了!!
【10月更文挑战第8天】MySQL的读写分离功能显著提升了数据库性能、可用性和可靠性。通过将读写操作分配至不同服务器,有效减轻单个服务器负载,提高响应速度与吞吐量,并增强系统稳定性。此外,它还支持便捷的扩展方式,可通过增加只读服务器提升读操作性能。实现读写分离的方法包括软件层面(如使用数据库中间件)和硬件层面(使用独立服务器)。使用时需注意数据一致性、负载均衡及监控管理等问题。
565 0
|
Web App开发 缓存 安全
让你的win10/win11系统变得不再卡顿,优雅草伊凡整理-长期更新-如何让windows操作系统不用老是重装依然保持流畅运行
如题:让你的win10/win11系统变得不再卡顿,优雅草伊凡整理-长期更新-如何让windows操作系统不用老是重装在不断的更新中依然保持流畅运行 本文长期更新,本次更新2023年11月8日! 很多时候 我们的win10win11系统不管再怎么关闭更新,都会莫名又被打开,莫名的关机和自动更新,总是在你不注意的时候就更新,因此大家也明白微软的厉害了,扯远了,但是频繁的更新会让系统特别卡,传统办法就是重装系统,因而还衍生了很多一件重装工具,但是每一次重装的代价都是巨大的我相信每个同学都明白。
1010 4
|
编解码 数据可视化 数据挖掘
空间单细胞|10x Visium数据分析、可视化与整合(3)
空间单细胞|10x Visium数据分析、可视化与整合(3)
空间单细胞|10x Visium数据分析、可视化与整合(3)
|
小程序
Taro@3.x+Vue@3.x+TS开发微信小程序,设置转发分享
本文介绍了Taro中`useShareAppMessage`的使用方法,需在页面配置`enableShareAppMessage: true`并重新编译。
827 0
Taro@3.x+Vue@3.x+TS开发微信小程序,设置转发分享
|
消息中间件 存储 NoSQL
redis实战——go-redis的使用与redis基础数据类型的使用场景(一)
本文档介绍了如何使用 Go 语言中的 `go-redis` 库操作 Redis 数据库
626 0
redis实战——go-redis的使用与redis基础数据类型的使用场景(一)
|
NoSQL 算法 Java
弄懂Redis的儿子Redisson,只需这个15问题
在一个分布式系统中,由于涉及到多个实例同时对同一个资源加锁的问题,像传统的synchronized、ReentrantLock等单进程情况加锁的api就不再适用,需要使用分布式锁来保证多服务实例之间加锁的安全性。常见的分布式锁的实现方式有zookeeper和redis等。而由于redis分布式锁相对于比较简单,在实际的项目中,redis分布式锁被用于很多实际的业务场景中。 redis分布式锁的实现中又以Redisson比较出名,所以本文来着重看一下Redisson是如何实现分布式锁的,以及Redisson提供了哪些其它的功能。
|
前端开发 Java Nacos
SpringCloud灰度路由
SpringCloud灰度路由
542 0
|
存储 Shell
Shell【工具 01】Shc一个用于将Shell脚本编译成二进制可执行文件的工具(下载安装使用)
Shell【工具 01】Shc一个用于将Shell脚本编译成二进制可执行文件的工具(下载安装使用)
658 1
|
Ubuntu Linux Windows
Ventoy -- 一个U盘装多个系统镜像
Ventoy -- 一个U盘装多个系统镜像
1132 0