redis19 - 客戶端選擇:jedis、redission、lettuce


地址詳情

  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 本身對字符串的操作支持很差。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM