配置主從服務(wù)器
Redis主從服務(wù)器的搭建很簡單,只要少許配置即可,為了演示的方便,我們就在一臺服務(wù)器上配置:
前提是你已經(jīng)有了一臺Redis服務(wù)器,如果沒有可以參考 我以前的文章 安裝。下面看看如何配置從服務(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ù)器的端口我們設(shè)置成6380。
然后插入一些測試數(shù)據(jù):
redis-benchmark
由于我們沒有設(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ù)器上寫入測試數(shù)據(jù):
redis-benchmark -l
這會(huì)循環(huán)插入測試數(shù)據(jù),數(shù)據(jù)量的大小取決于時(shí)間的長短,你可以在適當(dāng)?shù)臅r(shí)候按ctrl+c停止。
如果從服務(wù)器沒有啟動(dòng)的話,接著再重新啟動(dòng)從服務(wù)器:
redis-server /etc/redis_slave.conf
通過觀察文件大小你會(huì)發(fā)現(xiàn)數(shù)據(jù)會(huì)自動(dòng)同步,如果沒有重啟動(dòng)從服務(wù)器,那么數(shù)據(jù)文件的md5sum散列值可能不同,這是正常的,不要緊。
在操作過程中,有時(shí)候你會(huì)發(fā)現(xiàn)主從服務(wù)器的數(shù)據(jù)文件大小不一樣,一般來說也不是問題,因?yàn)閞edis是異步寫入磁盤的,此時(shí)可能有部分?jǐn)?shù)據(jù)還在內(nèi)存中,沒有同步到磁盤,所以文件大小略顯不同,可以分別在主從服務(wù)器上執(zhí)行:
redis-cli save(redis-cli -p 6380 save)
這條命令強(qiáng)制同步到磁盤,再看大小就應(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è)置,改成類似下面的設(shè)置(只要參數(shù)值夠大即可):
save 10000000000 10000000000
如此一來主服務(wù)器變成一個(gè)完全的內(nèi)存服務(wù)器,所有的操作都在內(nèi)存里完成,“永遠(yuǎn)”不會(huì)再往磁盤上持久化保存數(shù)據(jù),異步的也沒有。持久化則通過從服務(wù)器來完 成,這樣在操作主服務(wù)器的時(shí)候效率會(huì)更高。不過要注意的一點(diǎn)是此方法不適合保存關(guān)鍵數(shù)據(jù),否則一旦主服務(wù)器掛掉,如果你頭腦一熱簡單的重啟服務(wù),那么從服 務(wù)器的數(shù)據(jù)也會(huì)跟著消失,此時(shí),必須拷貝一份備份數(shù)據(jù)到主服務(wù)器,然后再重啟服務(wù)才可以,數(shù)據(jù)的恢復(fù)稍顯麻煩。
從服務(wù)器也可以通過設(shè)置這個(gè)參數(shù)來調(diào)整從內(nèi)存同步到磁盤的頻率。
利用主從服務(wù)器備份
可以利用主從服務(wù)器的方便性來備份,專門做一臺從服務(wù)器用于備份功能,當(dāng)需要備份的時(shí)候,在從服務(wù)器上執(zhí)行下列命令:
redis-cli save
redis-cli shutdown
然后拷貝數(shù)據(jù)目錄下的rdb文件即可。
另: 官方文檔 介紹不使用主從,直接在服務(wù)器上cp就可以,不過感覺利用從服務(wù)器備份對線上服務(wù)器影響更小些。
總結(jié)
?
如果你以前做過MySQL主從服務(wù)器的話,兩相對比,你會(huì)發(fā)現(xiàn)Redis主從服務(wù)器不用做前期的數(shù)據(jù)同步,設(shè)置好了從服務(wù)器,簡單啟動(dòng)就OK了。至于Redis主從怎么用,是備份也好,讀寫分離也好,就看你的想象力了。
資料
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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