NoSQL之Redis高級實用命令詳解--安全和主從復制

jopen 11年前發布 | 178K 次閱讀 Redis NoSQL數據庫 NOSQL

一、安全性

為redis設置密碼:設置客戶端連接后進行任何其他指定前需要實用的密碼。

警告:因為redis速度非常快,所以在一臺較好的服務器下,一個外部用戶可以在一秒鐘進行150k次的密碼嘗試,這意味著你需要指定非常非常強大的密碼來防止暴力破解。

修改密碼的方法:

只需要在redis的配置文件redis.conf中開啟requirepass就可以了,比如我設置我的訪問密碼是mypassword

requirepass mypassword

在redis.conf中加入這一行代碼之后,我們殺死原來的redis進程:pkill redis然后重新啟動redis:/usr/local/redis-2.8.1/src/redis-server /user/local/redis-2.8.1/redis.conf

然后我們用/usr/local/redis-2.8.1/src/redis-cli發現還能登陸進來,但是當我們執行操作的時候,比如keys *就會如下錯誤:

127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.

沒有必要的授權驗證。

在這里redis支持兩種授權方式,一種就是直接用auth命令進行授權:

NoSQL之Redis高級實用命令詳解--安全和主從復制

第一次輸入了一個錯誤的密碼test,授權失敗,第二次輸入正確的密碼,返回ok,授權成功,之后就可以進行所有的操作。

如果我們不想每次登錄進來之后都要用auth進行授權,那么我們可以采用另一種授權方式,就是在登陸客戶端的時候用-a 來指定密碼

sh-3.2# /usr/local/redis-2.8.1/src/redis-cli -a mypassword

上面的密碼如果輸錯,也能進入,但是之后不能進行操作。需要用auth重新進行授權。

二、主從復制

Redis主從復制配置和使用都非常簡單。通過主從復制可以允許多個slave server擁有和master server相同的數據庫副本。

redis主從復制的特點:

1.一臺master可以擁有多個slave(1對多的關系)

2.多個slave可以連接同一個master外,還可以連接到其他slave(這樣做的原因是如果masterdown掉之后其中的一臺slave立馬可以充當master的角色,這樣整個服務流程不受影響)

3.中從復制不會阻塞master,在同步數據的同時,master可以繼續處理client請求。

4.提高系統的伸縮性

redis主從復制的過程:

1.slave與master建立連接,發送sync同步命令。

2.Master會啟動一個后臺進程,將數據庫快照保存到文件中,同時master主進程會開始收集新得寫命令并緩存。

3.后臺完成保存后,將文件發送給slave

4.slave將文件保存到硬盤上

配置主從服務器:

配置slave服務器很簡單,只需要在slave的配置文件中加入以下配置:

slaveof masterip masterport

如果主機開啟了登錄驗證,那么還需要加入下面這句:

masterauth authpassword

然后啟動從機,首先主機會發快照給從機,從機的數據庫會更新到和主機相同的狀態,然后往主機里寫內容,從機也會隨之更新。

如果我們在從機上寫數據那么會報錯:

(error) READONLY You can't write against a read only slave.

我們可以用info命令來查看主從服務器的信息,在從機上用info命令可以看到

role:slave

master_host:masterip

master_port:masterport

master_link_status:up證明和主機處在連接狀態

在主機上用info命令

role:master

同時連接著幾臺從機

connected_slaves:1

同時可以查看連接到主機上的從機的ip和在線狀態

slave0:ip=192.168.1.107,port=6379,state=online,offset=1709,lag=1

</span>原文地址:http://blog.csdn.net/liutingxu1/article/details/17116107

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!