首頁 > 軟體

Redis主從複製操作和設定詳情

2022-09-24 14:05:57

前言

環境:CentOS7下安裝Redis叢集,預設已安裝好5.0及以上版本,操作包括:

  • Redis-server環境變數
  • 設定設定叢集的
  • Redis.confRedis主從設定和啟動
  • 測試主從機的資料一致性和讀寫分離

一、Redis-server環境變數

啟動redis服務報錯:

-bash: redis-server: command not found

原因:

沒有設定對應命令,類似於window的環境變數,所以命令找不到

解決辦法:

將安裝目錄下的redis-server執行檔案路徑設定到系統執行命令裡
ln -s /usr/local/redis/redis-4.0.9/src/redis-server /usr/bin/redis-server

其中
/usr/local/redis/redis-4.0.9/src/redis-server 為安裝目錄下的redis-server服務檔案地址

二、設定叢集的Redis.conf

我們在一臺伺服器上開啟三個Redis服務,模擬redis叢集,一主兩從,結構如下 :

埠資訊為7001,7002,7003(若使用的伺服器記得開啟埠的防火牆)

1.先建立7001~7003的三個目錄,將組態檔放入對應目錄並進行設定

 Redis.conf設定:

  • bind:繫結的 IP,預設是本地,可以指定 IP,表示只有指定的 IP 才可存取,註釋掉的話則全部 IP 都可存取。(我們是本地開三個服務,繫結不用動,如果是分散式就0.0.0.0)
  • protected-mode :保護模式(無密碼 + 無繫結 = 本地存取),預設開啟。這個不用動
  • port :埠,改為700x
  • daemonize :表示以守護行程的方式執行,預設 no,需要改為 yes,避免關閉使用者端後,redis 也跟著關閉。我們實驗用的話,可以關掉
  • requirepass :密碼,預設沒有密碼,如果需要則設定密碼
[root@VM-0-4-centos ~]# redis-cli -p 6379
# 獲取密碼
127.0.0.1:6379> config get requirepass	
1) "requirepass"
2) ""
# 設定密碼
>127.0.0.1:6379> config set requirepass	12455
OK
# 重新關閉使用者端再進入時,輸入一下命令,則顯示無許可權
127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.
# 輸入密碼
127.0.0.1:6379> auth 12455
OK

三、設定主從伺服器

有臨時和永久兩種模式:

  • 修改組態檔(永久生效)
  • 在redis.conf中新增一行設定:slaveof <masterip> <masterport>
  • 使用redis-cli使用者端連線到redis服務,執行slaveof命令(重啟後失效):

slaveof <masterip> <masterport>

四、啟動三臺Redis伺服器

[root@localhost bin]# redis-server /myredis/redis6379.conf
[root@localhost bin]# redis-server /myredis/redis6380.conf
[root@localhost bin]# redis-server /myredis/redis6381.conf
[root@localhost bin]# ps -ef | grep redis
root       2999      1  0 11:58 ?        00:00:00 redis-server *:6379
root       3013      1  0 11:59 ?        00:00:00 redis-server *:6380
root       3019      1  0 11:59 ?        00:00:00 redis-server *:6381
root       3025   2189  0 11:59 pts/0    00:00:00 grep --color=autoredis

 使用命令登入三個redis

redis -p  <port> -a 密碼   指定埠號登入redis

執行下列操作以測試:

  • 利用redis-cli連線7001,執行set num 123
  • 利用redis-cli連線7002,執行get num,再執行set num 666
  • 利用redis-cli連線7003,執行get num,再執行set num 888

我們對從機進行寫操作發現報錯

對主機進行寫操作,從機可以獲取

可以發現,只有在7001這個master節點上可以執行寫操作,7002和7003這兩個slave節點只能執行讀操作。

到此這篇關於Redis主從複製操作和設定詳情的文章就介紹到這了,更多相關Redis主從複製 內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com