本篇內(nèi)容介紹了“redis6中的主從復(fù)制架構(gòu)有什么特點”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
我們提供的服務(wù)有:成都做網(wǎng)站、成都網(wǎng)站設(shè)計、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、寧都ssl等。為超過千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的寧都網(wǎng)站制作公司
主從復(fù)制,是指將一臺Redis服務(wù)器的數(shù)據(jù),復(fù)制到其他的Redis服務(wù)器。前者為主節(jié)點(master),后者成為從節(jié)點(slave);數(shù)據(jù)的復(fù)制都是單向的,只能由主節(jié)點到從節(jié)點。默認(rèn)情況下,每臺Redis服務(wù)器都是一個主節(jié)點,且一個主節(jié)點可以有多個從節(jié)點(或者沒有從節(jié)點),但一個從節(jié)點只能有一個主節(jié)點。
使用主從復(fù)制的好處:讀寫分離,能夠擴(kuò)展主節(jié)點的讀能力,給主節(jié)點分擔(dān)壓力。容災(zāi)恢復(fù),一旦主節(jié)點宕機(jī),可以在從節(jié)點作為主節(jié)點的備份隨時可以頂上來。
從節(jié)點復(fù)制了主節(jié)點的數(shù)據(jù),復(fù)制之后我們就可以做一個讀寫分離。如果是單節(jié)點的話,應(yīng)用程序的請求都集中在主節(jié)點,但有了從節(jié)點之后可以承擔(dān)部分的讀壓力。主節(jié)點就可以做讀寫操作,而從節(jié)點只做讀操作。這樣便給主節(jié)點分擔(dān)壓力了。
Redis主從復(fù)制,一主二從架構(gòu)環(huán)境準(zhǔn)備
說了那么多概念咱們就開始動手部署Redis的主從復(fù)制架構(gòu)吧,這次我們部署的是一主二從的架構(gòu)。
#創(chuàng)建文件 mkdir -p /data/redis/master/data mkdir -p /data/redis/slave1/data mkdir -p /data/redis/slave2/data #從節(jié)點開啟只讀模式(默認(rèn)) replica-read-only yes #從節(jié)點訪問主節(jié)點的密碼,和requirepass?樣 masterauth 123456 #哪個主節(jié)點進(jìn)?復(fù)制 replicaof 8.129.113.233 6379
首先創(chuàng)建一個主節(jié)點,在data/redis/master/data目錄下touch一個redis.conf文件,編輯redis.conf文件
bind 0.0.0.0 port 6379 daemonize yes requirepass "123456" logfile "/usr/local/redis/log/redis1.log" dbfilename "xdclass1.rdb" dir "/usr/local/redis/data" appendonly yes appendfilename "appendonly1.aof" masterauth "123456"
接著創(chuàng)建從節(jié)點1,在data/redis/slave1/data目錄下建redis.conf
bind 0.0.0.0 port 6380 daemonize yes requirepass "123456" logfile "/usr/local/redis/log/redis2.log" dbfilename "xdclass2.rdb" dir "/usr/local/redis/data" appendonly yes appendfilename "appendonly2.aof" replicaof 8.129.113.233 6379 masterauth "123456"
創(chuàng)建從節(jié)點2,在data/redis/slave2/data目錄下建redis.conf
bind 0.0.0.0 port 6381 daemonize yes requirepass "123456" logfile "/usr/local/redis/log/redis3.log" dbfilename "xdclass3.rdb" dir "/usr/local/redis/data" appendonly yes appendfilename "appendonly3.aof" replicaof 8.129.113.233 6379 masterauth "123456"
注意:防火墻記得關(guān)閉,阿里云服務(wù)器記得開放網(wǎng)絡(luò)安全組。
創(chuàng)建好后就開始啟動已經(jīng)配置好的節(jié)點
啟動方式:
#啟動主 ./redis-server/data/redis/master/data/redis.conf #啟動從1 ./redis-server/data/redis/slave1/data/redis.conf #啟動從2 ./redis-server/data/redis/slave2/data/redis.conf
使用info replication可以查看當(dāng)前節(jié)點的狀態(tài)
主從復(fù)制和讀寫驗證
1.在主節(jié)點創(chuàng)建一個key set name jack 2.在兩個從節(jié)點測試是否能拿到主節(jié)點的數(shù)據(jù) get name 3.在從節(jié)點set key是失敗的,因為從節(jié)點只支持讀操作
Redis6主從架構(gòu)-復(fù)制讀寫分離原理解析
主從復(fù)制分為兩種:一種是主從剛開始連接的時候,進(jìn)行全量同步;另一種是全同步結(jié)束后,進(jìn)行增量同步。
全量復(fù)制:master服務(wù)器會開啟一個后臺的進(jìn)程用于將Redis的數(shù)據(jù)生成一個rdb文件,主服務(wù)器會緩存所有接受到的來自客戶端的寫命令,當(dāng)后臺保存進(jìn)程后,會將rdb文件傳遞給slave服務(wù)器,這時候slave服務(wù)器就有了master服務(wù)器的數(shù)據(jù)了。在此之后,master服務(wù)器會將在此期間把緩存過來的命令通過redis傳輸協(xié)議發(fā)送給slave服務(wù)器,然后slave服務(wù)器再將這些命令依次用于自己本地上,最終達(dá)到數(shù)據(jù)的一致性
增量復(fù)制:主節(jié)點會有不斷的命令寫進(jìn)來,slave完成初始化后開始工作時主服務(wù)器發(fā)送寫的操作同步到服務(wù)器的過程就叫增量復(fù)制。增量復(fù)制是服務(wù)器每執(zhí)行一個寫命令就會向從服務(wù)器發(fā)送相同的寫命令,從服務(wù)器接受并執(zhí)行收到的寫命令。
主從復(fù)制有何特點:
主從復(fù)制對于主/從 服務(wù)器來說都是非阻塞的,所有在同步數(shù)據(jù)期間都可以正常處理外界的請求,一個主節(jié)點可以包含有多個從節(jié)點,每個從節(jié)點可以接受來自其他從節(jié)點的連接。從節(jié)點不會讓key過期,而是在主節(jié)點的key過期刪除后,發(fā)送刪除命令給從節(jié)點進(jìn)行刪除。
加速復(fù)制:在節(jié)點完成重新同步的時候需要在磁盤上創(chuàng)建一個RDB文件,然后加載這個文件來為從服務(wù)器發(fā)送數(shù)據(jù),但如果磁盤的速率比較低呢?這就會導(dǎo)致主節(jié)點與從節(jié)點的數(shù)據(jù)不一致。在新版的Redis中,支持無磁盤的復(fù)制,直接將RBD文件通過網(wǎng)絡(luò)發(fā)送的形式給從服務(wù)器,不在使用磁盤作為中間件。
如果主從連接斷開的話,重新連接后可以從中斷的地方繼續(xù)進(jìn)行復(fù)制,而不用重新同步。在2.8版本后,重新同步的這個新特性使用PSYNC命令,而舊的使用SYNC命令
“Redis6中的主從復(fù)制架構(gòu)有什么特點”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!