標籤:style blog http ar io color os sp strong
最近公司項目也用上了。但有個點沒有弄很明白。
requirepass只是給CLIENT認證用的,還是同時給從REDIS認證用的?(masterauth)
一般的思路是主伺服器不開AOF,從伺服器開啟AOF,以便有更高的主伺服器效能。
網上相關文檔如下:
環境描述:
主redis:192.168.10.1 6379
從redis:192.168.10.2 6380
一、主從配置
1、將主從redis設定檔redis.conf中的aemonize no 改為 yes
2、修改從redis設定檔redis.conf中的port 6379 改為 6380,添加slaveof 192.168.10.1 6379
如果主redis有密碼 masterauth password
3、啟動主從服務
主redis:
[[email protected] redis-2.8.3]# src/redis-server /soft/redis-2.8.3-master/redis-2.8.3/redis.conf
從redis:
[[email protected] redis-2.8.3]# src/redis-server /soft/redis-2.8.3-slave/redis-2.8.3/redis.conf
4、測試資料同步
主redis:
[[email protected] redis-2.8.3]# src/redis-cli -p 6379
127.0.0.1:6379> set name abc
OK
127.0.0.1:6379> get name
"abc"
127.0.0.1:6379>
從redis:
[[email protected] redis-2.8.3]# src/redis-cli -p 6380
127.0.0.1:6380> get name
"abc"
127.0.0.1:6380>
5、預設是讀寫分離的
在從redis:
[[email protected] redis-2.8.3]# src/redis-cli -p 6380
127.0.0.1:6380> set name 123
(error) READONLY You can‘t write against a read only slave.
二、主從切換
1、停止主redis
[[email protected] redis-2.8.3]# src/redis-cli -n 6379 shutdown
[[email protected] redis-2.8.3]# src/redis-cli -p 6379
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected>
2、將從redis設成主redis
[[email protected] redis-2.8.3]# src/redis-cli -p 6380 slaveof NO ONE
OK
3、測試從redis是否切換從主redis
[[email protected] redis-2.8.3]# src/redis-cli -p 6380
127.0.0.1:6380> set name 123
OK
127.0.0.1:6380> get name
"123"
127.0.0.1:6380>
4、原來的主redis恢複正常了,要重新切換回去
1)將現在的主redis的資料進行儲存
[[email protected] redis-2.8.3]# src/redis-cli -p 6380
127.0.0.1:6380> get name
"abc"
127.0.0.1:6380> set name 123
OK
127.0.0.1:6380> get name
"123"
127.0.0.1:6380> save
OK
127.0.0.1:6380> get name
"123"
127.0.0.1:6380>
2)將現在的主redis根目錄下dump.rdb檔案拷貝覆蓋到原來主redis的根目錄
3)啟動原來的主redis
[[email protected] redis-2.8.3]# src/redis-server /soft/redis-2.8.3-master/redis-2.8.3/redis.conf
4)在現在的主redis中切換
[[email protected] redis-2.8.3]# src/redis-cli -p 6380 slaveof 192.168.10.1 6379
OK
~~~~~~~~~~~~~~~~~~~~~~~~~~~
一. 如何初始化redis的密碼?
總共2個步驟:
a.在設定檔中有個參數: requirepass 這個就是配置redis訪問密碼的參數。
比如 requirepass test123
b.設定檔中參數生效需要重啟重啟redis 。
二.不重啟redis如何配置密碼?
a. 在設定檔中配置requirepass的密碼(當redis重啟時密碼依然有效)。
# requirepass foobared
如 修改成 :
requirepass test123
b. 進入redis重定義參數
查看當前的密碼:
[[email protected] redis-2.4.16]# ./src/redis-cli -p 6379
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> config get requirepass
1) "requirepass"
2) (nil)
顯示密碼是空的,
然後設定密碼:
redis 127.0.0.1:6379> config set requirepass test123
OK
重新查詢密碼:
redis 127.0.0.1:6379> config get requirepass
(error) ERR operation not permitted
此時報錯了!
現在只要求輸入密碼認證就可以了。
redis 127.0.0.1:6379> auth test123
OK
重新查詢密碼:
redis 127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "test123"
密碼已經得到修改。
當到了可以重啟redis的時候 由於配置參數已經修改 所以密碼會自動生效。
要是配置參數沒添加密碼 那麼redis重啟 密碼將相當於沒有設定。
三.如何登入有密碼的redis?
a.在登入的時候 密碼就輸入
[[email protected] redis-2.4.16]# ./src/redis-cli -p 6379 -a test123
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "test123"
b.先登入再驗證:
[[email protected] redis-2.4.16]# ./src/redis-cli -p 6379
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> auth test123
OK
redis 127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "test123"
redis 127.0.0.1:6379>
四. master 有密碼,slave 如何配置?
當master 有密碼的時候 配置slave 的時候 相應的密碼參數也得相應的配置好。不然slave 是無法進行正常複製的。
相應的參數是:
#masterauth
比如:
masterauth mstpassword
REDIS主從配置及切換