新聞中心
一、摘要
相對(duì)于其他的分布式中間件,Redis 支持的客戶端種類非常繁多,涵蓋更加全面,除了支持比較流行的 c、c++、java、C#、php、Python 等語(yǔ)言以外,還支持 Objective-C、Swift、Node.js 等等,以下是來(lái)自于 Redis 支持的按語(yǔ)言分類的客戶端截圖。

十載的平陽(yáng)網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都營(yíng)銷網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整平陽(yáng)建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“平陽(yáng)網(wǎng)站設(shè)計(jì)”,“平陽(yáng)網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
站在 java 開(kāi)發(fā)語(yǔ)言的角度,雖然可供選擇的客戶端非常多,但是官方主要推薦使用以下三種客戶端,原因大概是它們對(duì) redis 提供的支持更加全面、api 操作更佳豐富。
- Jedis
- Lettuce
- Redisson
在前幾篇文章中,我們?cè)敿?xì)的介紹了 Jedis、Lettuce、Redisson 客戶端的編程使用技巧,今天我們一起來(lái)看看這三個(gè)客戶端的優(yōu)缺點(diǎn),以及使用建議!
二、客戶端對(duì)比
2.1、Jedis
Jedis 是一款老牌 Redis 的 Java 客戶端,提供了比較全面的 Redis 命令的操作支持,也是目前使用最廣泛的客戶端。
項(xiàng)目訪問(wèn)地址:
https://github.com/redis/jedis
優(yōu)點(diǎn)如下:
- Jedis 的 API 提供了比較全面的 Redis 命令的支持
- Jedis 中的 Java 方法基本和 Redis 的 API 保持著一致,也就是說(shuō)了解 Redis 的API,可以熟練的使用 Jedis
- 支持 pipelining、事務(wù)、LUA Scripting、Redis Sentinel、Redis Cluster等等 redis 提供的高級(jí)特性
- 客戶端輕量,簡(jiǎn)潔,便于集成和改造
- 使用廣泛,開(kāi)發(fā)人員易上手
人無(wú)完人,Jedis 也一樣有優(yōu)點(diǎn)也有劣勢(shì),缺點(diǎn)如下:
- 使用阻塞的 I/O 操作,且其方法調(diào)用都是同步的,程序流需要等到 sockets 處理完 I/O 才能執(zhí)行,不支持異步
- Jedis 在實(shí)現(xiàn)上是直接連接的 redis server,如果在多線程環(huán)境下是非線程安全的,這個(gè)時(shí)候可以使用連接池來(lái)管理 Jedis,已解決 Jedis 客戶端實(shí)例存在非線程安全的問(wèn)題
- 不支持讀寫(xiě)分離,需要自己實(shí)現(xiàn)
- 技術(shù)文檔差,可以說(shuō)幾乎沒(méi)有
整體來(lái)說(shuō),Jedis 是一款經(jīng)典的 Redis 客戶端(java 語(yǔ)言方向),能滿足絕大部分項(xiàng)目中的業(yè)務(wù)開(kāi)發(fā)需求,雖然有些瑕疵,但是可以通過(guò)其它方式來(lái)彌補(bǔ),可用性、安全性方面都有保證,總體評(píng)價(jià)是操作簡(jiǎn)單,易上手!
2.2、Lettuce
Lettuce 是一種可擴(kuò)展的、線程安全的 Redis 高級(jí)客戶端。
從 Spring Boot 2.x 開(kāi)始, Lettuce 已取代 Jedis 成為SpringBoot 默認(rèn)的 Redis 客戶端
項(xiàng)目訪問(wèn)地址:
https://lettuce.io/
優(yōu)點(diǎn)如下:
- 相比于 Jedis,Lettuce 屬于后起之秀,對(duì) Redis 更加全面,并且解決了 Jedis 客戶端實(shí)例存在非線程安全的問(wèn)題
- 支持同步編程,異步編程,響應(yīng)式編程,自動(dòng)重新連接,主從模式,集群模塊,哨兵模式,管道和編碼器等等高級(jí)的 Redis 特性
- Lettuce 底層基于 Netty 框架的事件驅(qū)動(dòng)與 redis 通信,采用了非阻塞的 I/O 操作,可異步調(diào)用,相比 Jedis,性能高
- Lettuce 的 API 是線程安全的,如果不是執(zhí)行阻塞和事務(wù)操作,如 BLPOP 和MULTI/EXEC 等命令,多個(gè)線程就可以共享一個(gè)連接,性能方面不會(huì)衰減
缺點(diǎn)如下:
- API 更加抽象,學(xué)習(xí)使用成本高
2.3、Redisson
Redisson 是一個(gè)在 Redis 的功能基礎(chǔ)上實(shí)現(xiàn)的 Java 駐內(nèi)存數(shù)據(jù)網(wǎng)格客戶端。實(shí)現(xiàn)了分布式和可擴(kuò)展的 Java 數(shù)據(jù)結(jié)構(gòu),提供很多分布式相關(guān)操作服務(wù),例如分布式鎖,分布式集合,可通過(guò) Redis 支持延遲隊(duì)列。
項(xiàng)目訪問(wèn)地址:
https://github.com/redisson/redisson
優(yōu)點(diǎn)如下:
- 實(shí)現(xiàn)了分布式特性和可擴(kuò)展的 Java 數(shù)據(jù)結(jié)構(gòu),例如分布式鎖,分布式集合,分布式對(duì)象,分布式遠(yuǎn)程調(diào)度等等高級(jí)功能,適合分布式開(kāi)發(fā)
- 與 Lettuce 一樣,基于 Netty 框架的事件驅(qū)動(dòng)與 redis 通信,支持異步調(diào)用,性能高
- Redisson 的 API 是線程安全的,所以可以使用單個(gè) Redisson 連接來(lái)完成各種操作。
- 支持讀寫(xiě)分離,支持讀負(fù)載均衡,在主從復(fù)制和 Redis Cluster 架構(gòu)下都可以使用
- 內(nèi)建 Tomcat Session Manager,為 Tomcat 6/7/8 提供了會(huì)話共享功能,可以與 Spring Session 集成,實(shí)現(xiàn)基于 Redis 的會(huì)話共享
- 相比于 Jedis、Lettuce 等基于 redis 命令封裝的客戶端,Redisson 提供的功能更加高端和抽象,Redisson 可以類比 Spring 框架,這些框架搭建了應(yīng)用程序的基礎(chǔ)框架和功能,可以顯著提升開(kāi)發(fā)效率,讓開(kāi)發(fā)者有更多的時(shí)間來(lái)關(guān)注業(yè)務(wù)邏輯
- 文檔較豐富,有中文文檔
缺點(diǎn)如下:
- 和 Jedis、Lettuce 客戶端相比,功能較為簡(jiǎn)單,對(duì)字符串的支持比較差,不支持排序、事務(wù)、管道、分區(qū)等 Redis 特性
- API 更加抽象,學(xué)習(xí)使用成本高
三、小結(jié)
Jedis 和 Lettuce 是比較純粹的 Redis 命令客戶端,幾乎沒(méi)提供什么分布式操作服務(wù)。
Jedis 和 Lettuce 兩者相比,Jedis 的性能比較差,其他方面并沒(méi)有太明顯的區(qū)別,所以如果你不需要使用 Redis 的高級(jí)功能的話,優(yōu)先推薦使用 Lettuce。
相比于 Jedis、Lettuce 等基于 redis 命令封裝的客戶端,Redisson 提供的功能更加高端和抽象,逼格高!
Redisson 的優(yōu)勢(shì)是提供了很多開(kāi)箱即用的 Redis 高級(jí)功能,如果你的應(yīng)用中需要使用到 Redis 的高級(jí)功能,比如分布式鎖,分布式對(duì)象,分布式會(huì)話共享等等,建議使用 Redisson。
總結(jié)下來(lái):
- 如果項(xiàng)目中對(duì)分布式功能的需求場(chǎng)景不多,優(yōu)先推薦使用 Lettuce,基本上夠用,當(dāng)然你使用 Jedis 也沒(méi)用問(wèn)題,api 操作方面會(huì)更加簡(jiǎn)單。
- 如果項(xiàng)目中除了對(duì)基本的數(shù)據(jù)緩存操作需求以外,還需要用到分布式鎖,分布式對(duì)象,分布式集合等功能,優(yōu)先推薦采用?
?Lettuce??? +??Redisson??組合方式使用。
四、參考
1、redis - 中文文檔
2、博客園 - 程序員自由之路 - Redis 客戶端 Jedis、lettuce 和 Redisson 對(duì)比
3、騰訊云開(kāi)發(fā)者社區(qū) - 開(kāi)發(fā)架構(gòu)二三事 - redis幾種java客戶端比較
網(wǎng)站標(biāo)題:簡(jiǎn)單聊聊Redis中的幾種Java客戶端,以及它們的優(yōu)缺點(diǎn)!
本文路徑:http://www.5511xx.com/article/dhpppep.html


咨詢
建站咨詢
