這篇文章主要講解了“redis搭建主從同步和讀寫分離實際操作”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Redis搭建主從同步和讀寫分離實際操作”吧!
創(chuàng)新互聯(lián)公司專注于泗水企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,購物商城網(wǎng)站建設(shè)。泗水網(wǎng)站建設(shè)公司,為泗水等地區(qū)提供建站服務(wù)。全流程定制設(shè)計,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
Redis分布式基礎(chǔ)主從同步
前面我們介紹了主從同步基礎(chǔ),今天我們動手來搭建一個Redis的主從服務(wù)器,然后到讀寫分離。
首先我們準(zhǔn)備一下材料,Redis5.0Windows版本和Redis的管理工具,如果在網(wǎng)上找不到的同學(xué)可以關(guān)注下面的公眾號然后回復(fù):redis5.0
注意:我們的操作和展示都是在Windows操作系統(tǒng)下進行的,想在Linux操作系統(tǒng)下玩的同學(xué)不要慌,雖然有些許的不同,但是思路和配置都是一樣的。
我們把Redis復(fù)制到這三個文件夾下,不多解釋看名字就能知道我是要做一主多從的結(jié)構(gòu)。
我們進到這個文件夾里面找到【redis.windows.conf】這個文件,建議通過notepad打開,這里我們修改主服務(wù)器的ip和端口號
#修改ipbind 192.168.1.219#修改端口port 6000
保存后后我們運行這個【redis-server.exe】,啟動服務(wù)后發(fā)現(xiàn)端口號木有變,這里我教大家一招,直接選中【redis.windows.conf】然后拖到【redis-server.exe】上,這時運行的redis服務(wù)端口就變成了6000。
按照此步驟我們把從服務(wù)器A的端口號配置成7001,從服務(wù)器B的端口配置成7002
然后在RedisManage工具上登錄這兩個服務(wù)器,此時我們做完了基本的準(zhǔn)備工作,下面我們正式進入。
從服務(wù)器A配置同步服務(wù)器信息,此配置項為:slaveof [主ip] [主端口]
slaveof 192.168.1.219 6000
>set name mango
接著我們把從服務(wù)器B也配置slaveof啟動,此處在原理篇講過,添加子節(jié)點,主服務(wù)器會啟動子線程保存一個快照,通過socket同步共享到子節(jié)點。
我們先想一個問題,前面在主服務(wù)器添加一個name,然后很快就同步到其他的從服務(wù)器,那么如果我在從服務(wù)器寫一個新的key是不是也得同步到其他服務(wù)器上?這樣會導(dǎo)致幾個問題,如果從服務(wù)器寫一個key還沒來得及同步到其他服務(wù)器就掛掉了,重啟后我們發(fā)現(xiàn)從服務(wù)器和主服務(wù)器上的key不同;又比如每臺服務(wù)器都可以寫,那么我們的服務(wù)器非?;靵y,不是在同步的過程中就是在同步的路上,這樣加重了服務(wù)器的壓力和IO讀寫的性能消耗。
為了降低這樣的復(fù)雜性問題,在設(shè)計的時候我們只允許一個服務(wù)器做一件事情,也就是主服務(wù)器負責(zé)寫數(shù)據(jù),從服務(wù)器負責(zé)提供讀數(shù)據(jù),所以讀寫分離就出來了。
#從服務(wù)器配置只讀slave-read-only yes
配置完后我們來寫一個key試試
>set name li"READONLY You can't write against a read only replica."
配置日志文件
如果Redis異常了我們?nèi)绾闻挪閱栴}呢?對了,這里我們需要配置上日志文件,異常信息一個都不落下
#日志級別loglevel notice#日志文件logfile "redis.log"
如果我們的從服務(wù)器掉線重啟,從服務(wù)器會和主服務(wù)器對比數(shù)據(jù),如果沒有寫key,那么就不會執(zhí)行同步,反之會同步整個緩存快照,數(shù)據(jù)量如果非常大,那么同步快照簡直就是地獄,所以Redis提供一個復(fù)制緩沖區(qū)。
這個結(jié)構(gòu)是一個環(huán)狀結(jié)構(gòu),用來保存最新復(fù)制的命令。這樣在從服務(wù)器離線的時候,不需要完全復(fù)制主服務(wù)器的數(shù)據(jù),如果可以執(zhí)行部分同步,只需要把緩沖區(qū)的部分數(shù)據(jù)復(fù)制給從服務(wù)器,就能恢復(fù)正常復(fù)制狀態(tài)。緩沖區(qū)的大小越大,從服務(wù)器離線的時間可以更長,復(fù)制緩沖區(qū)只有在有slave連接的時候才分配內(nèi)存。沒有從服務(wù)器的一段時間,內(nèi)存會被釋放出來,默認1m
repl-backlog-size 1mb
配置本地壓縮
隨著運行時間越來越長,Redis的本地磁盤上的數(shù)據(jù)庫越來越大,所以我們可以對數(shù)據(jù)庫進行壓縮數(shù)據(jù),Redis采用LZF壓縮方式,但占用了一點CPU的時間。
rdbcompression yes
到這里差不多把主從同步和讀寫分離的系統(tǒng)搭建完成了,還有一些細節(jié)性的配置需要小伙伴們自行嘗試了,整個配置環(huán)節(jié)時間不是很長,但是里面的原理還得需要搞清楚,主從主要是防止單機Redis掛掉了,數(shù)據(jù)請求直接到數(shù)據(jù)庫,導(dǎo)致服務(wù)器不可用。
感謝各位的閱讀,以上就是“Redis搭建主從同步和讀寫分離實際操作”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Redis搭建主從同步和讀寫分離實際操作這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!