地址詳情
Jedis api 在線網址:http://tool.oschina.net/uploads/apidocs/redis/clients/jedis/Jedis.html
redisson 官網地址:https://redisson.org/
redisson git項目地址:https://github.com/redisson/redisson
lettuce 官網地址:https://lettuce.io/
lettuce git項目地址:https://github.com/lettuce-io/lettuce-core
首先,在spring boot2之后,對redis連接的支持,默認就采用了lettuce。這就一定程度說明了lettuce 和Jedis的優劣。
概念
Jedis:是老牌的Redis的Java實現客戶端,提供了比較全面的Redis命令的支持,
Redisson:實現了分布式和可擴展的Java數據結構。
Lettuce:高級Redis客戶端,用於線程安全同步,異步和響應使用,支持集群,Sentinel,管道和編碼器。
優點
Jedis:比較全面的提供了Redis的操作特性
Redisson:促使使用者對Redis的關注分離,提供很多分布式相關操作服務,例如:分布式鎖,分布式集合,可通過Redis支持延遲隊列
Lettuce:基於Netty框架的事件驅動的通信層,其方法調用是異步的。Lettuce 的 API 是 線程安全的,所以可以操作單個Lettuce連接來完成各種操作
可伸縮
Jedis:使用阻塞的I/O,且其方法調用都是同步的,程序流需要等到sockets處理完I/O才能執行,不支持異步。Jedis客戶端實例不是線程安全的,所以需要通過連接池來使用Jedis。
Redisson:基於Netty框架的事件驅動的通信層,其方法調用是異步的。Redisson的API是線程安全的,所以可以操作單個Redisson連接來完成各種操作
Lettuce:基於Netty框架的事件驅動的通信層,其方法調用是異步的。Lettuce的API是線程安全的,所以可以操作單個Lettuce連接來完成各種操作
lettuce 能夠支持 redis4,需要java8及以上。lettuce 是基於netty實現的與redis進行同步和異步的通信。
lettuce 和 jedis比較
jedis 是直連 redis server,如果在多線程環境下是非線程安全的,這個時候只有使用連接池,為每個jedis實例增加物理連接 ;
lettuce 的連接是基於Netty的,連接實例可以在多個線程間並發訪問,是線程安全的,所以一個連接實例可以滿足多線程環境下的並發訪問,當然這也是可伸縮的設計,一個連接實例不夠的情況也可以按需增加連接實例。
Redisson 實現了分布式 和 可擴展的Java數據結構,和 Jedis 相比,功能較為簡單,不支持字符串操作,不支持排序、事務、管道、分區等Redis特性。Redisson 的宗旨是促進使用者對Redis的關注分離,從而讓使用者能夠將精力更集中地放在處理業務邏輯上。
總結
優先使用 Lettuce,如果需要分布式鎖,分布式集合等分布式的高級特性,添加 Redisson 結合使用,因為 Redisson 本身對字符串的操作支持很差。