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

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