Redisson是架設在Redis基礎上的一個Java駐內存數據網格(In-Memory Data Grid)。充分的利用了Redis鍵值數據庫提供的一系列優點,基於Java實用工具包中經常使用接口,爲使用者提供了一系列具備分佈式特性的經常使用工具類。使得本來做爲協調單機多線程併發程序的工具包得到了協調分佈式多機多線程併發系統的能力,大大下降了設計和研發大規模分佈式系統的難度。同時結合各富特點的分佈式服務,更進一步簡化了分佈式環境中程序相互之間的協做。html
Redisson採用了基於NIO的Netty框架,不只能做爲Redis底層驅動客戶端,具有提供對Redis各類組態形式的鏈接功能,對Redis命令能以同步發送、異步形式發送、異步流形式發送或管道形式發送的功能,LUA腳本執行處理,以及處理返回結果的功能,還在此基礎上融入了更高級的應用方案,不但將原生的Redis Hash
,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成爲構建分佈式系統的重要工具。java
在提供這些工具的過程中,Redisson普遍的使用了承載於Redis訂閱發佈功能之上的分佈式話題(Topic)
功能。使得即使是在複雜的分佈式環境下,Redisson的各個實例仍然具備可以保持相互溝通的能力。在以之爲前提下,結合了自身獨有的功能完善的分佈式工具,Redisson進而提供了像分佈式遠程服務(Remote Service)
,分佈式執行服務(Executor Service)
和分佈式調度任務服務(Scheduler Service)
這樣適用於不一樣場景的分佈式服務。使得Redisson成爲了一個基於Redis的Java中間件(Middleware)。git
Redisson Node
的出現做爲駐內存數據網格的重要特性之一,使Redisson可以獨立做爲一個任務處理節點,以系統服務的方式運行並自動加入Redisson集羣,具有集羣節點彈性增減的能力。然而在真正意義上讓Redisson發展成爲一個完整的駐內存數據網格的,仍是具備將基本上任何複雜、多維結構的對象都能變爲分佈式對象的分佈式實時對象服務(Live Object Service)
,以及與之相結合的,在分佈式環境中支持跨節點對象引用(Distributed Object Reference)的功能。這些特點功能使Redisson具有了在分佈式環境中,爲Java程序提供了堆外空間(Off-Heap Memory)儲存對象的能力。github
Redisson提供了使用Redis的最簡單和最便捷的方法。Redisson的宗旨是促進使用者對Redis的關注分離(Separation of Concern),從而讓使用者可以將精力更集中地放在處理業務邏輯上。若是您如今正在使用其餘的Redis的Java客戶端,但願Redis命令和Redisson對象匹配列表 可以幫助您輕鬆的將現有代碼遷徙到Redisson框架裏來。若是目前Redis的應用場景還僅限於做爲緩存使用,您也能夠將Redisson輕鬆的整合到像Spring和Hibernate這樣的經常使用框架裏。除此外您也能夠間接的經過Java緩存標準規範JCache API (JSR-107)接口來使用Redisson。redis
Redisson生而具備的高性能,分佈式特性和豐富的結構等特色恰巧與Tomcat這類服務程序對會話管理器(Session Manager)的要求相吻合。利用這樣的特色,Redisson專門爲Tomcat提供了會話管理器(Tomcat Session Manager)。算法
在此不難看出,Redisson同其餘Redis Java客戶端有着很大的區別,相比之下其餘客戶端提供的功能還僅僅停留在做爲數據庫驅動層面上,好比僅針對Redis提供鏈接方式,發送命令和處理返回結果等。像上面這些高層次的應用則只能依靠使用者自行實現。spring
Redisson支持Redis 2.8以上版本,支持Java1.6+以上版本。數據庫