Redis-3. Redis高級命令

  • 2020 年 1 月 14 日
  • 筆記

高級命令三:主從複製

1、主從複製:目的是實現讀寫分離

·Master可以擁有多個slave

·多個slave可以連接同一個Master外,還可以連接其他的slave

·主從複製不會阻塞master,在同步數據時,master可以繼續處理client請求

·提高系統的延伸性

2、主從複製過程:

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

2)master開啟後台進程,將資料庫快照保存到文件中,同時master主進程會開始收集新的寫命令並快取;

3)後台完成保存後,就將文件發送給slave;

4)slave將此文件保存到硬碟上;

3、主從複製配置:

準備3台linux伺服器,分別192.168.90.121(主)、192.168.90.122、192.168.90.123;分別安裝redis;

步驟:修改redis.conf配置文件

第一步:slaveof <masterIp> <masterport> 舉例:slaveof 192.168.1.121 6379

第二部:masterauth<master-password>   舉例:masterauth wlan

高級命令四:哨兵

  在主從複製以後,如果想對主從伺服器進行監控,實現高可用。redis2.6以後提供了一個哨兵機制。哨兵的含義就是監控redis系統的運行狀況,主要功能有兩點:

1. 監控主資料庫和從資料庫是否運行正常。

2. 主伺服器出現故障時,可以自動將從伺服器轉換為主伺服器。

實現步驟:在其中一台從伺服器中或者另外用別的伺服器進行配置

(1)修改sentinel.conf配置文件

# sentinel monitor <master-name> <ip> <redis-port> <quorum>

sentinel monitor mymaster 192.168.1.121  6379 2  //名稱 IP 埠號 投票選舉次數

# sentinel down-after-milliseconds <master-name> <milliseconds>

sentinel down-after-milliseconds mymaster 5000 //默認多久檢測一次主節點

# sentinel failover-timeout <master-name> <milliseconds>

sentinel failover-timeout mymaster 180000

# sentinel parallel-syncs <master-name> <numslaves>

sentinel parallel-syncs mymaster 2  //從節點數量

# sentinel auth-pass <master-name> <password>

sentinel auth-pass mymaster wlan

(2)啟動sentinel哨兵

[root@wlan121 bin]# redis-server /usr/local/redis/etc/sentinel.conf --sentinel &

(3)查看哨兵相關資訊

[root@wlan121 bin]# redis-cli -h 192.168.1.122 -p 26379 info Sentinel

高級命令六:持久化

   redis是一個支援持久化的記憶體資料庫,也就是說redis需要經常將記憶體中的數據同步到硬碟來保證持久化。

redis持久化的兩種方式:

(1)snapshotting快照方式,默認。將記憶體以快照的方式寫入到二進位文件中。默認為dump.rdb。可以配置redis在n秒內如果超過m個key則修改就自動做快照。快照方式是一定時間間隔做一次。

save 900 1 #900秒內如果超過1個key被修改,則發起快照保存

save 300 10 #300秒內如果超過10個key被修改,則發起快照保存

(2)append-only file(aof)的方式,由於快照方式是在一定時間間隔做一次,所以可能會發生redis意外down的情況就會丟失最後一次快照後所有修改的數據。而使用aof時,該機制以日誌的形式記錄伺服器所處理的每一個寫操作,在redis伺服器啟動之初讀取該文件來重新構建資料庫,以保證啟動後資料庫中的數據是完整的。文件在bin目錄下:appendonly.aof。aof不是立即寫到硬碟上。可以通過配置文件修改強制寫到硬碟中。

aof設置:

1)appendonly yes  //啟動aof持久化方式有三種修改方式

2)追加的模式

appendfsync always //收到寫命令就立即寫入磁碟,效率慢但是保證了完全的持久化

appendfsync  everysec //每秒寫入磁碟一次,在性能和持久化做了做好的折中

appendfsync no  //從不同步。高效但是數據不會被持久化

Tags: