配置主從服務(wù)器
Redis主從服務(wù)器的搭建很簡(jiǎn)單,只要少許配置即可,為了演示的方便,我們就在一臺(tái)服務(wù)器上配置:
前提是你已經(jīng)有了一臺(tái)Redis服務(wù)器,如果沒(méi)有可以參考 我以前的文章 安裝。下面看看如何配置從服務(wù)器:
假設(shè)主服務(wù)器的配置文件是:/etc/redis.conf,我們復(fù)制一份作為從服務(wù)器的配置文件:
cp /etc/redis.conf /etc/redis_slave.conf
并作修改:
# vi /etc/redis_slave.conf
port 6380
dbfilename dump_slave.rdb
slaveof 127.0.0.1 6379
主服務(wù)器的端口使用的是缺省的6379,從服務(wù)器的端口我們?cè)O(shè)置成6380。
然后插入一些測(cè)試數(shù)據(jù):
redis-benchmark
由于我們沒(méi)有設(shè)定任何參數(shù),所以使用的是缺省端口(6379),在本例中就是主服務(wù)器。
然后啟動(dòng)從服務(wù)器:
redis-server /etc/redis_slave.conf
確認(rèn)一下是否都正常啟動(dòng)了:
ps -ef | grep redis
進(jìn)入數(shù)據(jù)目錄,查一下數(shù)據(jù)文件的散列:
md5sum *.rdb
你會(huì)發(fā)現(xiàn)數(shù)據(jù)文件散列都一樣,自動(dòng)同步了。
然后我們關(guān)閉一下從服務(wù)器(不關(guān)也行,我就是為了告訴你如何正確關(guān)閉redis服務(wù)器):
redis-cli -p 6380 shutdown
接著再往主服務(wù)器上寫(xiě)入測(cè)試數(shù)據(jù):
redis-benchmark -l
這會(huì)循環(huán)插入測(cè)試數(shù)據(jù),數(shù)據(jù)量的大小取決于時(shí)間的長(zhǎng)短,你可以在適當(dāng)?shù)臅r(shí)候按ctrl+c停止。
如果從服務(wù)器沒(méi)有啟動(dòng)的話(huà),接著再重新啟動(dòng)從服務(wù)器:
redis-server /etc/redis_slave.conf
通過(guò)觀(guān)察文件大小你會(huì)發(fā)現(xiàn)數(shù)據(jù)會(huì)自動(dòng)同步,如果沒(méi)有重啟動(dòng)從服務(wù)器,那么數(shù)據(jù)文件的md5sum散列值可能不同,這是正常的,不要緊。
在操作過(guò)程中,有時(shí)候你會(huì)發(fā)現(xiàn)主從服務(wù)器的數(shù)據(jù)文件大小不一樣,一般來(lái)說(shuō)也不是問(wèn)題,因?yàn)閞edis是異步寫(xiě)入磁盤(pán)的,此時(shí)可能有部分?jǐn)?shù)據(jù)還在內(nèi)存中,沒(méi)有同步到磁盤(pán),所以文件大小略顯不同,可以分別在主從服務(wù)器上執(zhí)行:
redis-cli save(redis-cli -p 6380 save)
這條命令強(qiáng)制同步到磁盤(pán),再看大小就應(yīng)該一樣了。
配置文件redis.conf里有一部分和save相關(guān)的參數(shù),缺省如下:
# Save the DB on disk:
#
# save <seconds> <changes>
#
# Will save the DB if both the given number of seconds and the given
# number of write operations against the DB occurred.
#
# In the example below the behaviour will be to save:
# after 900 sec (15 min) if at least 1 key changed
# after 300 sec (5 min) if at least 10 keys changed
# after 60 sec if at least 10000 keys changed
save 900 1
save 300 10
save 60 10000
在主服務(wù)器上,我們可以去掉上面的設(shè)置,改成類(lèi)似下面的設(shè)置(只要參數(shù)值夠大即可):
save 10000000000 10000000000
如此一來(lái)主服務(wù)器變成一個(gè)完全的內(nèi)存服務(wù)器,所有的操作都在內(nèi)存里完成,“永遠(yuǎn)”不會(huì)再往磁盤(pán)上持久化保存數(shù)據(jù),異步的也沒(méi)有。持久化則通過(guò)從服務(wù)器來(lái)完 成,這樣在操作主服務(wù)器的時(shí)候效率會(huì)更高。不過(guò)要注意的一點(diǎn)是此方法不適合保存關(guān)鍵數(shù)據(jù),否則一旦主服務(wù)器掛掉,如果你頭腦一熱簡(jiǎn)單的重啟服務(wù),那么從服 務(wù)器的數(shù)據(jù)也會(huì)跟著消失,此時(shí),必須拷貝一份備份數(shù)據(jù)到主服務(wù)器,然后再重啟服務(wù)才可以,數(shù)據(jù)的恢復(fù)稍顯麻煩。
從服務(wù)器也可以通過(guò)設(shè)置這個(gè)參數(shù)來(lái)調(diào)整從內(nèi)存同步到磁盤(pán)的頻率。
利用主從服務(wù)器備份
可以利用主從服務(wù)器的方便性來(lái)備份,專(zhuān)門(mén)做一臺(tái)從服務(wù)器用于備份功能,當(dāng)需要備份的時(shí)候,在從服務(wù)器上執(zhí)行下列命令:
redis-cli save
redis-cli shutdown
然后拷貝數(shù)據(jù)目錄下的rdb文件即可。
另: 官方文檔 介紹不使用主從,直接在服務(wù)器上cp就可以,不過(guò)感覺(jué)利用從服務(wù)器備份對(duì)線(xiàn)上服務(wù)器影響更小些。
總結(jié)
?
如果你以前做過(guò)MySQL主從服務(wù)器的話(huà),兩相對(duì)比,你會(huì)發(fā)現(xiàn)Redis主從服務(wù)器不用做前期的數(shù)據(jù)同步,設(shè)置好了從服務(wù)器,簡(jiǎn)單啟動(dòng)就OK了。至于Redis主從怎么用,是備份也好,讀寫(xiě)分離也好,就看你的想象力了。
資料
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
