Jedis api 在線網址:http://tool.oschina.net/uploads/apidocs/redis/clients/jedis/Jedis.htmlhtml
redisson 官網地址:https://redisson.org/java
redisson git項目地址:https://github.com/redisson/redissongit
lettuce 官網地址:https://lettuce.io/github
lettuce git項目地址:https://github.com/lettuce-io/lettuce-coreredis
概念:編程
Jedis:是Redis的Java實現客戶端,提供了比較全面的Redis命令的支持,api
Redisson:實現了分佈式和可擴展的Java數據結構。緩存
Lettuce:高級Redis客戶端,用於線程安全同步,異步和響應使用,支持集羣,Sentinel,管道和編碼器。安全
優勢:數據結構
Jedis:比較全面的提供了Redis的操做特性
Redisson:促使使用者對Redis的關注分離,提供不少分佈式相關操做服務,例如,分佈式鎖,分佈式集合,可經過Redis支持延遲隊列
Lettuce:主要在一些分佈式緩存框架上使用比較多
可伸縮:
Jedis:使用阻塞的I/O,且其方法調用都是同步的,程序流須要等到sockets處理完I/O才能執行,不支持異步。Jedis客戶端實例不是線程安全的,因此須要經過鏈接池來使用Jedis。
Redisson:基於Netty框架的事件驅動的通訊層,其方法調用是異步的。Redisson的API是線程安全的,因此能夠操做單個Redisson鏈接來完成各類操做
Lettuce:基於Netty框架的事件驅動的通訊層,其方法調用是異步的。Lettuce的API是線程安全的,因此能夠操做單個Lettuce鏈接來完成各類操做
結論:
建議使用:Jedis + Redisson
Jedis與Redisson選型對比
1 概述
1.1. 主要內容
本文的主要內容爲對比Redis的兩個框架:Jedis與Redisson,分析各自的優點與缺點,爲項目中Java緩存方案中的Redis編程模型的選擇提供參考。
2. Jedis與Redisson對比
2.1. 概況對比
Jedis是Redis的Java實現的客戶端,其API提供了比較全面的Redis命令的支持;Redisson實現了分佈式和可擴展的Java數據結構,和Jedis相比,功能較爲簡單,不支持字符串操做,不支持排序、事務、管道、分區等Redis特性。Redisson的宗旨是促進使用者對Redis的關注分離,從而讓使用者可以將精力更集中地放在處理業務邏輯上。
2.2. 編程模型
Jedis中的方法調用是比較底層的暴露的Redis的API,也即Jedis中的Java方法基本和Redis的API保持着一致,瞭解Redis的API,也就能熟練的使用Jedis。而Redisson中的方法則是進行比較高的抽象,每一個方法調用可能進行了一個或多個Redis方法調用。
以下分別爲Jedis和Redisson操做的簡單示例:
Jedis設置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,且其方法調用都是同步的,程序流須要等到sockets處理完I/O才能執行,不支持異步。Jedis客戶端實例不是線程安全的,因此須要經過鏈接池來使用Jedis。
Redisson使用非阻塞的I/O和基於Netty框架的事件驅動的通訊層,其方法調用是異步的。Redisson的API是線程安全的,因此能夠操做單個Redisson鏈接來完成各類操做。
2.4. 數據結構
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可提供更便捷的方法。
2.5. 第三方框架整合
1 Redisson提供了和Spring框架的各項特性相似的,以Spring XML的命名空間的方式配置RedissonClient實例和它所支持的全部對象和服務;
2 Redisson完整的實現了Spring框架裏的緩存機制;
3 Redisson在Redis的基礎上實現了Java緩存標準規範;
4 Redisson爲Apache Tomcat集羣提供了基於Redis的非黏性會話管理功能。該功能支持Apache Tomcat的六、7和8版。
5 Redisson還提供了Spring Session會話管理器的實現。