Redis框架Jedis及Redisson對比解析
1概述
1.1. 主要內(nèi)容
本文的主要內(nèi)容為對比Redis的兩個框架:Jedis與Redisson,分析各自的優(yōu)勢與缺點,為項目中Java緩存方案中的Redis編程模型的選擇提供參考。
2. Jedis與Redisson對比
2.1. 概況對比
Jedis是Redis的Java實現(xiàn)的客戶端,其API提供了比較全面的Redis命令的支持;Redisson實現(xiàn)了分布式和可擴展的Java數(shù)據(jù)結(jié)構(gòu),和Jedis相比,功能較為簡單,不支持字符串操作,不支持排序、事務(wù)、管道、分區(qū)等Redis特性。Redisson的宗旨是促進使用者對Redis的關(guān)注分離,從而讓使用者能夠?qū)⒕Ω械胤旁谔幚順I(yè)務(wù)邏輯上。
2.2. 編程模型
Jedis中的方法調(diào)用是比較底層的暴露的Redis的API,也即Jedis中的Java方法基本和Redis的API保持著一致,了解Redis的API,也就能熟練的使用Jedis。而Redisson中的方法則是進行比較高的抽象,每個方法調(diào)用可能進行了一個或多個Redis方法調(diào)用。
如下分別為Jedis和Redisson操作的簡單示例:
Jedis設(shè)置key-value與set操作:
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");
2.3. 可伸縮性
Jedis使用阻塞的I/O,且其方法調(diào)用都是同步的,程序流需要等到sockets處理完I/O才能執(zhí)行,不支持異步。Jedis客戶端實例不是線程安全的,所以需要通過連接池來使用Jedis。
Redisson使用非阻塞的I/O和基于Netty框架的事件驅(qū)動的通信層,其方法調(diào)用是異步的。Redisson的API是線程安全的,所以可以操作單個Redisson連接來完成各種操作。
2.4. 數(shù)據(jù)結(jié)構(gòu)
Jedis僅支持基本的數(shù)據(jù)類型如:String、Hash、List、Set、Sorted Set。
Redisson不僅提供了一系列的分布式Java常用對象,基本可以與Java的基本數(shù)據(jù)結(jié)構(gòu)通用,還提供了許多分布式服務(wù),其中包括(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)。
在分布式開發(fā)中,Redisson可提供更便捷的方法。
2.5. 第三方框架整合
1 Redisson提供了和Spring框架的各項特性類似的,以Spring XML的命名空間的方式配置RedissonClient實例和它所支持的所有對象和服務(wù);
2 Redisson完整的實現(xiàn)了Spring框架里的緩存機制;
3 Redisson在Redis的基礎(chǔ)上實現(xiàn)了Java緩存標(biāo)準規(guī)范;
4 Redisson為Apache Tomcat集群提供了基于Redis的非黏性會話管理功能。該功能支持Apache Tomcat的6、7和8版。
5Redisson還提供了Spring Session會話管理器的實現(xiàn)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
如何基于回調(diào)實現(xiàn)Java的異步調(diào)用
這篇文章主要介紹了如何基于回調(diào)實現(xiàn)Java的異步調(diào)用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06spring boot里增加表單驗證hibernate-validator并在freemarker模板里顯示錯誤信息(推
這篇文章主要介紹了spring boot里增加表單驗證hibernate-validator并在freemarker模板里顯示錯誤信息的相關(guān)資料,需要的朋友可以參考下2018-01-01Mybatis-Plus開發(fā)提速器generator的使用
本文就介紹這款基于Mybatis-Plus的代碼自助生成器,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07Java 字符串轉(zhuǎn)float運算 float轉(zhuǎn)字符串的方法
今天小編就為大家分享一篇Java 字符串轉(zhuǎn)float運算 float轉(zhuǎn)字符串的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07Java實現(xiàn)獲取指定個數(shù)的不同隨機數(shù)
今天小編就為大家分享一篇關(guān)于Java實現(xiàn)獲取指定個數(shù)的不同隨機數(shù),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-01-01SpringBoot中使用MQTT實現(xiàn)消息的訂閱和發(fā)布(示例代碼)
這篇文章主要介紹了SpringBoot中使用MQTT實現(xiàn)消息的訂閱和發(fā)布的相關(guān)知識,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧2024-06-06springboot的maven多模塊混淆jar包的實現(xiàn)方法
springboot可以使用proguard-maven-plugin 這個插件 在 pom.xml 中自定義proguard 的指令,本文基于 springboot + maven + proguard 的maven多模塊架構(gòu)進行代碼混淆,需要的朋友可以參考下2024-03-03