Redisson項(xiàng)目介紹
Rui Gu edited this page <relative-time datetime="2018-05-23T22:07:43Z" title="May 24, 2018, 6:07 AM GMT+8" style="box-sizing: border-box;">on May 24</relative-time> · 18 revisions
Redisson項(xiàng)目介紹
Redisson是架設(shè)在Redis基礎(chǔ)上的一個(gè)Java駐內(nèi)存數(shù)據(jù)網(wǎng)格(In-Memory Data Grid)。充分的利用了Redis鍵值數(shù)據(jù)庫(kù)提供的一系列優(yōu)勢(shì)进宝,基于Java實(shí)用工具包中常用接口鲸阔,為使用者提供了一系列具有分布式特性的常用工具類劣砍。使得原本作為協(xié)調(diào)單機(jī)多線程并發(fā)程序的工具包獲得了協(xié)調(diào)分布式多機(jī)多線程并發(fā)系統(tǒng)的能力磺箕,大大降低了設(shè)計(jì)和研發(fā)大規(guī)模分布式系統(tǒng)的難度。同時(shí)結(jié)合各富特色的分布式服務(wù)突委,更進(jìn)一步簡(jiǎn)化了分布式環(huán)境中程序相互之間的協(xié)作昆著。
Redisson采用了基于NIO的Netty框架,不僅能作為Redis底層驅(qū)動(dòng)客戶端缸夹,具備提供對(duì)Redis各種組態(tài)形式的連接功能痪寻,對(duì)Redis命令能以同步發(fā)送、異步形式發(fā)送虽惭、異步流形式發(fā)送或管道形式發(fā)送的功能橡类,LUA腳本執(zhí)行處理,以及處理返回結(jié)果的功能芽唇,還在此基礎(chǔ)上融入了更高級(jí)的應(yīng)用方案顾画,不但將原生的Redis Hash
,List
匆笤,Set
研侣,String
,Geo
炮捧,HyperLogLog
等數(shù)據(jù)結(jié)構(gòu)封裝為Java里大家最熟悉的映射(Map)
庶诡,列表(List)
,集(Set)
咆课,通用對(duì)象桶(Object Bucket)
末誓,地理空間對(duì)象桶(Geospatial Bucket)
扯俱,基數(shù)估計(jì)算法(HyperLogLog)
等結(jié)構(gòu),在這基礎(chǔ)上還提供了分布式的多值映射(Multimap)
喇澡,本地緩存映射(LocalCachedMap)
迅栅,有序集(SortedSet)
,計(jì)分排序集(ScoredSortedSet)
晴玖,字典排序集(LexSortedSet)
库继,列隊(duì)(Queue)
,阻塞隊(duì)列(Blocking Queue)
窜醉,有界阻塞列隊(duì)(Bounded Blocking Queue)
宪萄,雙端隊(duì)列(Deque)
,阻塞雙端列隊(duì)(Blocking Deque)
榨惰,阻塞公平列隊(duì)(Blocking Fair Queue)
拜英,延遲列隊(duì)(Delayed Queue)
,布隆過(guò)濾器(Bloom Filter)
琅催,原子整長(zhǎng)形(AtomicLong)
居凶,原子雙精度浮點(diǎn)數(shù)(AtomicDouble)
,BitSet
等Redis原本沒(méi)有的分布式數(shù)據(jù)結(jié)構(gòu)藤抡。不僅如此侠碧,Redisson還實(shí)現(xiàn)了Redis文檔中提到像分布式鎖Lock
這樣的更高階應(yīng)用場(chǎng)景。事實(shí)上Redisson并沒(méi)有不止步于此缠黍,在分布式鎖的基礎(chǔ)上還提供了聯(lián)鎖(MultiLock)
弄兜,讀寫(xiě)鎖(ReadWriteLock)
,公平鎖(Fair Lock)
瓷式,紅鎖(RedLock)
替饿,信號(hào)量(Semaphore)
,可過(guò)期性信號(hào)量(PermitExpirableSemaphore)
和閉鎖(CountDownLatch)
這些實(shí)際當(dāng)中對(duì)多線程高并發(fā)應(yīng)用至關(guān)重要的基本部件贸典。正是通過(guò)實(shí)現(xiàn)基于Redis的高階應(yīng)用方案视卢,使Redisson成為構(gòu)建分布式系統(tǒng)的重要工具。
在提供這些工具的過(guò)程當(dāng)中廊驼,Redisson廣泛的使用了承載于Redis訂閱發(fā)布功能之上的分布式話題(Topic)
功能据过。使得即便是在復(fù)雜的分布式環(huán)境下,Redisson的各個(gè)實(shí)例仍然具有能夠保持相互溝通的能力妒挎。在以這為前提下绳锅,結(jié)合了自身獨(dú)有的功能完善的分布式工具,Redisson進(jìn)而提供了像分布式遠(yuǎn)程服務(wù)(Remote Service)
饥漫,分布式執(zhí)行服務(wù)(Executor Service)
和分布式調(diào)度任務(wù)服務(wù)(Scheduler Service)
這樣適用于不同場(chǎng)景的分布式服務(wù)榨呆。使得Redisson成為了一個(gè)基于Redis的Java中間件(Middleware)罗标。
Redisson Node
的出現(xiàn)作為駐內(nèi)存數(shù)據(jù)網(wǎng)格的重要特性之一庸队,使Redisson能夠獨(dú)立作為一個(gè)任務(wù)處理節(jié)點(diǎn)积蜻,以系統(tǒng)服務(wù)的方式運(yùn)行并自動(dòng)加入Redisson集群,具備集群節(jié)點(diǎn)彈性增減的能力彻消。然而在真正意義上讓Redisson發(fā)展成為一個(gè)完整的駐內(nèi)存數(shù)據(jù)網(wǎng)格的竿拆,還是具有將基本上任何復(fù)雜、多維結(jié)構(gòu)的對(duì)象都能變?yōu)榉植际綄?duì)象的分布式實(shí)時(shí)對(duì)象服務(wù)(Live Object Service)
宾尚,以及與之相結(jié)合的丙笋,在分布式環(huán)境中支持跨節(jié)點(diǎn)對(duì)象引用(Distributed Object Reference)的功能。這些特色功能使Redisson具備了在分布式環(huán)境中煌贴,為Java程序提供了堆外空間(Off-Heap Memory)儲(chǔ)存對(duì)象的能力御板。
Redisson提供了使用Redis的最簡(jiǎn)單和最便捷的方法。Redisson的宗旨是促進(jìn)使用者對(duì)Redis的關(guān)注分離(Separation of Concern)牛郑,從而讓使用者能夠?qū)⒕Ω械胤旁谔幚順I(yè)務(wù)邏輯上怠肋。如果您現(xiàn)在正在使用其他的Redis的Java客戶端,希望Redis命令和Redisson對(duì)象匹配列表 能夠幫助您輕松的將現(xiàn)有代碼遷徙到Redisson里來(lái)淹朋。如果目前Redis的應(yīng)用場(chǎng)景還僅限于作為緩存使用笙各,您也可以將Redisson輕松的整合到像Spring和Hibernate這樣的常用框架里。除此外您也可以間接的通過(guò)Java緩存標(biāo)準(zhǔn)規(guī)范JCache API (JSR-107)接口來(lái)使用Redisson础芍。
Redisson生而具有的高性能杈抢,分布式特性和豐富的結(jié)構(gòu)等特點(diǎn)恰巧與Tomcat這類服務(wù)程序?qū)?huì)話管理器(Session Manager)的要求相吻合。利用這樣的特點(diǎn)仑性,Redisson專門為Tomcat提供了會(huì)話管理器(Tomcat Session Manager)惶楼。
在此不難看出,Redisson同其他Redis Java客戶端有著很大的區(qū)別诊杆,相比之下其他客戶端提供的功能還僅僅停留在作為數(shù)據(jù)庫(kù)驅(qū)動(dòng)層面上鲫懒,比如僅針對(duì)Redis提供連接方式,發(fā)送命令和處理返回結(jié)果等刽辙。像上面這些高層次的應(yīng)用則只能依靠使用者自行實(shí)現(xiàn)窥岩。
Redisson支持Redis 2.8以上版本,支持Java1.6+以上版本宰缤。
https://www.cnblogs.com/LT0314/p/6757390.html
i flym
不會(huì)寫(xiě)C++的JAVA人員不是一個(gè)好UI
不會(huì)用Linux的程序員不是一個(gè)好DBA