基本介紹
- 外文名:Redisson
- 屬性:計算機領域術語
人物,發展歷程,適用場景,特性,說明,已知用戶,
人物
開發團隊成員主要,jackygurui(中國),mrniko(俄羅斯)。
發展歷程
項目起始與2013年12月22日,迄今為止(2023-02-19)已經經歷了9年多的版本疊代,主要版本有3.19.3 和 2.15.2 版本。
適用場景
主要適用於以下幾種場景:
分散式套用,快取,分散式會話,分散式任務/服務/延遲執行服務,Redis客戶端
特性
Redisson在基於NIO的Netty框架上,充分的利用了Redis鍵值資料庫提供的一系列優勢,在Java實用工具包中常用接口的基礎上,為使用者提供了一系列具有分散式特性的常用工具類。使得原本作為協調單機多執行緒並發程式的工具包獲得了協調分散式多機多執行緒並發系統的能力,大大降低了設計和研發大規模分散式系統的難度。同時結合各富特色的分散式服務,更進一步簡化了分散式環境中程式相互之間的協作。
兼容 Redis 2.6+ and JDK 1.6+,使用Apache License 2.0授權協定,閱讀 wiki 來獲取更多使用信息
主要有以下幾大特性:
雲Redis管理、多樣Redis配置支持、豐富連線方式、分散式對象、分散式集合、分散式鎖、分散式服務、多種序列化方式、三方框架整合、完善工具等
1. 支持雲託管服務模式(同時支持亞馬遜雲的ElastiCache Redis和微軟雲的Azure Redis Cache):
- 自動發現主節點變化
2. 支持Redis集群模式(同時支持亞馬遜雲的ElastiCache Redis Cluster和微軟雲的Azure Redis Cache):
- 自動發現主從節點
- 自動更新狀態和組態拓撲
- 自動發現槽的變化
3. 支持Redis哨兵模式:
- 自動發現主、從和哨兵節點
- 自動更新狀態和組態拓撲
4. 支持Redis主從模式
5. 支持Redis單節模式
6. 多節點模式均支持讀寫分離:從讀主寫,主讀主寫,主從混讀主寫
7. 所有對象和接口均支持異步操作
8. 自行管理的彈性異步連線池
9. 所有操作執行緒安全
10. 支持LUA腳本
11. 提供分散式對象
通用對象桶(Object Bucket)、二進制流(Binary Stream)、地理空間對象桶(Geospatial Bucket)、BitSet、原子整長形(AtomicLong)、原子雙精度浮點數(AtomicDouble)、話題(訂閱分發)、布隆過濾器(Bloom Filter)和基數估計算法(HyperLogLog)
12. 提供分散式集合
映射(Map)、多值映射(Multimap)、集(Set)、列表(List)、有序集(SortedSet)、計分排序集(ScoredSortedSet)、字典排序集(LexSortedSet)、列隊(Queue)、雙端佇列(Deque)、阻塞佇列(Blocking Queue)、有界阻塞列隊(Bounded Blocking Queue)、阻塞雙端列隊(Blocking Deque)、阻塞公平列隊(Blocking Fair Queue)、延遲列隊(Delayed Queue)、優先佇列(Priority Queue)和優先雙端佇列(Priority Deque)
12. 提供分散式鎖和同步器
可重入鎖(Reentrant Lock)、公平鎖(Fair Lock)、聯鎖(MultiLock)、紅鎖(RedLock)、讀寫鎖(ReadWriteLock)、信號量(Semaphore)、可過期性信號量(PermitExpirableSemaphore)和閉鎖(CountDownLatch)
12. 提供分散式服務
分散式遠程服務(Remote Service, RPC)、分散式實時對象(Live Object)服務、分散式執行服務(Executor Service)、分散式調度任務服務(Scheduler Service)和分散式映射歸納服務(MapReduce)
13.支持Spring框架
14. 提供Spring Cache集成
15. 提供Hibernate Cache集成
16. 提供JCache實現
17. 提供Tomcat Session Manager
18. 提供Spring Session集成
19. 支持異步流方式執行操作
20. 支持Redis管道操作(批量執行)
21. 支持安卓(Andriod)系統
22. 支持斷線自動重連
23. 支持命令傳送失敗自動重試
24. 支持OSGi
26. 超過1000個單元測試
說明
充分的利用了Redis鍵值資料庫提供的一系列優勢,基於Java實用工具包中常用接口,為使用者提供了一系列具有分散式特性的常用工具類。使得原本作為協調單機多執行緒並發程式的工具包獲得了協調分散式多機多執行緒並發系統的能力,大大降低了設計和研發大規模分散式系統的難度。同時結合各富特色的分散式服務,更進一步簡化了分散式環境中程式相互之間的協作。
Redisson採用了基於NIO的Netty框架,不僅能作為Redis底層驅動客戶端,具備提供對Redis各種組態形式的連線功能,對Redis命令能以同步傳送、異步形式傳送、異步流形式傳送或管道形式傳送的功能,LUA腳本執行處理,以及處理返回結果的功能,還在此基礎上融入了更高級的套用方案,不但將原生的RedisHash,List,Set,String,Geo,HyperLogLog等數據結構封裝為Java里大家最熟悉的映射(Map),列表(List),集(Set),通用對象桶(Object Bucket),地理空間對象桶(Geospatial Bucket),基數估計算法(HyperLogLog)等結構,在這基礎上還提供了分散式的多值映射(Multimap),本地快取映射(LocalCachedMap),有序集(SortedSet),計分排序集(ScoredSortedSet),字典排序集(LexSortedSet),列隊(Queue),阻塞佇列(Blocking Queue),有界阻塞列隊(Bounded Blocking Queue),雙端佇列(Deque),阻塞雙端列隊(Blocking Deque),阻塞公平列隊(Blocking Fair Queue),延遲列隊(Delayed Queue),布隆過濾器(Bloom Filter),原子整長形(AtomicLong),原子雙精度浮點數(AtomicDouble),BitSet等Redis原本沒有的分散式數據結構。不僅如此,Redisson還實現了Redis文檔中提到像分散式鎖Lock這樣的更高階套用場景。事實上Redisson並沒有不止步於此,在分散式鎖的基礎上還提供了聯鎖(MultiLock),讀寫鎖(ReadWriteLock),公平鎖(Fair Lock),紅鎖(RedLock),信號量(Semaphore),可過期性信號量(PermitExpirableSemaphore)和閉鎖(CountDownLatch)這些實際當中對多執行緒高並發套用至關重要的基本部件。正是通過實現基於Redis的高階套用方案,使Redisson成為構建分散式系統的重要工具。
在提供這些工具的過程當中,Redisson廣泛的使用了承載於Redis訂閱發布功能之上的分散式話題(Topic)功能。使得即便是在複雜的分散式環境下,Redisson的各個實例仍然具有能夠保持相互溝通的能力。在以這為前提下,結合了自身獨有的功能完善的分散式工具,Redisson進而提供了像分散式遠程服務(Remote Service),分散式執行服務(Executor Service)和分散式調度任務服務(Scheduler Service)這樣適用於不同場景的分散式服務。使得Redisson成為了一個基於Redis的Java中間件(Middleware)。
Redisson Node的出現作為駐記憶體數據格線的重要特性之一,使Redisson能夠獨立作為一個任務處理節點,以系統服務的方式運行並自動加入Redisson集群,具備集群節點彈性增減的能力。然而在真正意義上讓Redisson發展成為一個完整的駐記憶體數據格線的,還是具有將基本上任何複雜、多維結構的對象都能變為分散式對象的分散式實時對象服務(Live Object Service),以及與之相結合的,在分散式環境中支持跨節點對象引用(Distributed Object Reference)的功能。這些特色功能使Redisson具備了在分散式環境中,為Java程式提供了堆外空間(Off-Heap Memory)儲存對象的能力。
Redisson提供了使用Redis的最簡單和最便捷的方法。Redisson的宗旨是促進使用者對Redis的關注分離(Separation of Concern),從而讓使用者能夠將精力更集中地放在處理業務邏輯上。如果您現在正在使用其他的Redis的Java客戶端,希望Redis命令和Redisson對象匹配列表能夠幫助您輕鬆的將現有代碼遷徙到Redisson框架里來。如果Redis的套用場景還僅限於作為快取使用,您也可以將Redisson輕鬆的整合到像Spring和Hibernate這樣的常用框架里。除此外您也可以間接的通過Java快取標準規範JCache API (JSR-107)接口來使用Redisson。
Redisson生而具有的高性能,分散式特性和豐富的結構等特點恰巧與Tomcat這類服務程式對會話管理器(Session Manager)的要求相吻合。利用這樣的特點,Redisson專門為Tomcat提供了會話管理器(Tomcat Session Manager)。
在此不難看出,Redisson同其他Redis Java客戶端有著很大的區別,相比之下其他客戶端提供的功能還僅僅停留在作為資料庫驅動層面上,比如僅針對Redis提供連線方式,傳送命令和處理返回結果等。像上面這些高層次的套用則只能依靠使用者自行實現。
Redisson支持Redis2.8以上版本,支持Java1.6+以上版本。
已知用戶
Electronic Arts,Baidu,New Relic Synthetics,Brookhaven National Laboratory,Singtel,Infor,Netflix Dyno client,Ocous,Invaluable,Clover,Apache Karaf Decanter,Atmosphere Framework,BrandsEye,Datorama,BrightCloud,Azar,Snapfish,Crimson Hexagon,Quby,Base CRM