- 主從復(fù)制模式
一個(gè)主節(jié)點(diǎn)和多個(gè)從節(jié)點(diǎn)。主節(jié)點(diǎn)提供寫入和讀取功能,但是從屬節(jié)點(diǎn)只提供讀取功能。
主從復(fù)制的數(shù)據(jù)同步過程如下:
(1)首先主節(jié)點(diǎn)啟動(dòng),然后從屬節(jié)點(diǎn)啟動(dòng),從屬節(jié)點(diǎn)會(huì)連接主節(jié)點(diǎn)并發(fā)送SYNC命令以請(qǐng)求同步
(2)主節(jié)點(diǎn)收到SYNC命令之后,就會(huì)執(zhí)行BGSAVE命令生成RDB文件并使用緩沖區(qū)記錄此后執(zhí)行的寫入命令
(3)執(zhí)行了BGSAVE之后,就向所有從屬節(jié)點(diǎn)發(fā)送快照文件
(4)從屬節(jié)點(diǎn)收到快照文件之后,會(huì)丟棄自己已有的所有舊數(shù)據(jù)并把收到的快照寫入數(shù)據(jù)庫
(5)之后,主節(jié)點(diǎn)會(huì)把緩沖區(qū)中的寫命令發(fā)送給所有從節(jié)點(diǎn)實(shí)現(xiàn)從節(jié)點(diǎn)的增量同步
缺點(diǎn):主節(jié)點(diǎn)掛了,需要手動(dòng)去設(shè)置一個(gè)從屬節(jié)點(diǎn)變?yōu)橹鞴?jié)點(diǎn)并修改其它節(jié)點(diǎn)配置。
- 哨兵模式
在主從復(fù)制模式的基礎(chǔ)上,增加哨兵節(jié)點(diǎn)以監(jiān)視所有節(jié)點(diǎn)的情況,假設(shè)主節(jié)點(diǎn)掛掉了,哨兵節(jié)點(diǎn)會(huì)從所有從屬節(jié)點(diǎn)中選舉一個(gè)節(jié)點(diǎn)作為新的主節(jié)點(diǎn),并修改其余從屬節(jié)點(diǎn)的配置。
- cluster模式
在上述哨兵模式中,已經(jīng)實(shí)現(xiàn)了高可用和讀寫分離。但是我們也可見每個(gè)節(jié)點(diǎn)都要儲(chǔ)存一份完整的數(shù)據(jù),這樣很浪費(fèi)內(nèi)存。因此Redis官方推出了Cluster模式,這種模式下每個(gè)節(jié)點(diǎn)不會(huì)儲(chǔ)存完整的內(nèi)容,但是節(jié)點(diǎn)直接相互連通,所有節(jié)點(diǎn)內(nèi)容加起來才是完整的內(nèi)容。
每個(gè)節(jié)點(diǎn)可能儲(chǔ)存一部分內(nèi)容,但是不論某個(gè)內(nèi)容存放在哪個(gè)節(jié)點(diǎn),我們都可以通過任意一個(gè)節(jié)點(diǎn)訪問到,因?yàn)樗鼈冎g互相連通。
Redis會(huì)先把整個(gè)集群所使用的儲(chǔ)存空間分為一定數(shù)量的等分,這個(gè)等分就叫做哈希槽(hash slot)。
Redis集群中有16384個(gè)哈希槽,假設(shè)集群中有三個(gè)主節(jié)點(diǎn)分別是A、B和C,每個(gè)主節(jié)點(diǎn)對(duì)應(yīng)一個(gè)從屬節(jié)點(diǎn)A1、B1和C1,那么主節(jié)點(diǎn)會(huì)被分配槽位如下:
- A包含從
0-5460
哈希槽位 - B包含從
5461-10922
哈希槽位 - C包含從
10923-16383
哈希槽位
存入數(shù)據(jù)時(shí),就會(huì)對(duì)存入的鍵計(jì)算CRC16,然后拿計(jì)算出來的值對(duì)16384取模得到的結(jié)果,就是這個(gè)數(shù)據(jù)的槽位。假設(shè)現(xiàn)在主節(jié)點(diǎn)B掛掉了文章來源:http://www.zghlxwxcb.cn/news/detail-839075.html
,其對(duì)應(yīng)的從屬節(jié)點(diǎn)B1會(huì)被自動(dòng)地提升為主節(jié)點(diǎn),意味著5461-10922
槽位還能存儲(chǔ)數(shù)據(jù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-839075.html
到了這里,關(guān)于Redis的三種集群模式(圖解)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!