您好,登錄后才能下訂單哦!
Redis的三種模式是什么?可能很多人對(duì)此沒(méi)有深入了解過(guò),故而小編總結(jié)了這篇文章,通過(guò)這文章的講解,希望你能夠收獲更多知識(shí)。
standaloan(單機(jī)模式)
standaloan 是redis單機(jī)模式,及所有服務(wù)連接一臺(tái)redis服務(wù),該模式不適用生產(chǎn)。如果發(fā)生宕機(jī),內(nèi)存爆炸,就可能導(dǎo)致所有連接改redis的服務(wù)發(fā)生緩存失效引起雪崩。
ssentinel(哨兵模式)
redis-Sentinel(哨兵模式)是Redis官方推薦的高可用性(HA)解決方案,當(dāng)用Redis做Master-slave的高可用方案時(shí),假如master宕機(jī)了,Redis本身(包括它的很多客戶端)都沒(méi)有實(shí)現(xiàn)自動(dòng)進(jìn)行主備切換,而Redis-sentinel本身也是一個(gè)獨(dú)立運(yùn)行的進(jìn)程,它能監(jiān)控多個(gè)master-slave集群,發(fā)現(xiàn)master宕機(jī)后能進(jìn)行切換
sentinel哨兵如下功能實(shí)現(xiàn)
(1)monitoring:監(jiān)控redis是否正常運(yùn)行
(2)notification:通知application錯(cuò)誤信息
(3)failover:當(dāng)某個(gè)master死掉,選擇另外一個(gè)slave升級(jí)為master,更 新master-slave關(guān)系。
(4)configurationprovider:client通過(guò)sentinel獲取redis地址,并在failover時(shí)更新地址
2、sentinels and slaves autodiscovery(redis2.8及以上)
配置文件中只配置master地址,slave地址和sentinel地址可以自動(dòng)發(fā)現(xiàn)。
(1)sentinels——sentinel之間通過(guò)redis pub/sub交換信息獲得。
(2)slaves——詢問(wèn)master獲得。
3、sdown、odown、failover
故障檢測(cè)一般都是通過(guò)ping-pong機(jī)制,sentinel引入sdown(主觀下線)和odown(客觀下線)機(jī)制,目的應(yīng)該是在集群規(guī)模較大時(shí),檢測(cè)更客觀
(1)sdwon——is-master-down-after-milliseconds(可配置)時(shí)間內(nèi)ping-pong失敗。sdown的slave不能升級(jí)為master。
(2)odown——超過(guò)一定數(shù)目(可配置)的sentinel認(rèn)為sdown,odown只針對(duì)master。
(3)failover——多數(shù)sentinel認(rèn)為odown。
redis-cluster(集群模式)
redis集群模式,同樣可以實(shí)現(xiàn)redis高可用部署,Redis Sentinel集群模式中,隨著業(yè)務(wù)量和數(shù)據(jù)量增,到性能達(dá)到redis單節(jié)點(diǎn)瓶頸,垂直擴(kuò)容受機(jī)器限制,水平擴(kuò)容涉及對(duì)應(yīng)用的影響以及數(shù)據(jù)遷移中數(shù)據(jù)丟失風(fēng)險(xiǎn)。針對(duì)這些痛點(diǎn)
Redis3.0推出cluster分布式集群方案,當(dāng)遇到單節(jié)點(diǎn)內(nèi)存,并發(fā),流量瓶頸是,采用cluster方案實(shí)現(xiàn)負(fù)載均衡,cluster方案主要解決分片問(wèn)題,即把整個(gè)數(shù)據(jù)按照規(guī)則分成多個(gè)子集存儲(chǔ)在多個(gè)不同幾點(diǎn)上,每個(gè)節(jié)點(diǎn)負(fù)責(zé)自己整個(gè)數(shù)據(jù)的一部分。
Redis Cluster采用哈希分區(qū)規(guī)則中的虛擬槽分區(qū)。虛擬槽分區(qū)巧妙地使用了哈??臻g,使用分散度良好的哈希函數(shù)把所有的數(shù)據(jù)映射到一個(gè)固定范圍內(nèi)的整數(shù)集合,整數(shù)定義為槽(slot)。Redis Cluster槽的范圍是0 ~ 16383。槽是集群內(nèi)數(shù)據(jù)管理和遷移的基本單位。
采用大范圍的槽的主要目的是為了方便數(shù)據(jù)的拆分和集群的擴(kuò)展,每個(gè)節(jié)點(diǎn)負(fù)責(zé)一定數(shù)量的槽。Redis Cluster采用虛擬槽分區(qū),所有的鍵根據(jù)哈希函數(shù)映射到0 ~ 16383,計(jì)算公式:slot = CRC16(key)&16383。每一個(gè)實(shí)節(jié)點(diǎn)負(fù)責(zé)維護(hù)一部分槽以及槽所映射的鍵值數(shù)據(jù)。下圖展現(xiàn)一個(gè)五個(gè)節(jié)點(diǎn)構(gòu)成的集群,每個(gè)節(jié)點(diǎn)平均大約負(fù)責(zé)3276個(gè)槽,以及通過(guò)計(jì)算公式映射到對(duì)應(yīng)節(jié)點(diǎn)的對(duì)應(yīng)槽的過(guò)程。
redis-cluster架構(gòu)圖
關(guān)于Redis的三種模式就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。