Redis提供了兩種數據持久化的方式:
-
RDB
該機制是指在指定的時間間隔內將內存中的數據集快照寫入磁盤。
-
AOF
該機制將以日志的形式記錄服務器所處理的每一個寫操作。
在Redis服務器啟動之初會讀取文件來重新構建數據庫,以保證啟動后數據庫中的數據是完整的。
2. RDB
Redis Database:通過單文件的方式來持久化
RDB是默認的持久化方式,默認存儲在啟動redis服務器時所在當前目錄下的dump.rdb文件中,一般都會修改存儲在一個固定的目錄中
編輯配置文件:
dbfilename dump.rdb #持久化文件的名稱
dir ./ ? ? #持久化文件的目錄,默認為執行redis-server命令時所在的當前目錄
持久化的時機:
-
在數據庫關閉時會持久化(需要注意的是在數據庫宕機時不會生成,數據可能會丟失)
-
滿足特定條件時會持久化,編輯配置文件:
save 900 1 #在900秒內,只要有1個key發生變化,就會dump持久化
save 300 10
save 60 10000
優缺點:
-
缺點:可能會丟失數據
-
優點:效率比較高
3. AOF
Append Only File:通過操作日志的方式來持久化
編輯配置文件:
appendonly yes #開啟aof模式的持久化
ppendfilename "appendonly.aof" #aof的持久化文件
appendfsync everysec ? #每一秒進行一次持久化操作,可取值:always、everysec、no
dir ./ #持久化文件的目錄,與RDB相同
優缺點:
-
缺點:效率比較差
-
優點:丟失數據量比較少
Redis的架構模式有以下幾種:
-
單機模式(Standalone)
最簡單的模式,不涉及數據同步,所以天然具備一致性。
單機Redis能夠承載的QPS(每秒查詢速率)大概在幾萬左右。
如果用戶訪問量太大,可能會導致redis直接掛掉。缺乏可靠性,單機有宕機的風險。
-
主從模式(Master-Slave)
也稱為主從復制,允許根據一個Redis服務器來創建任意多個該服務器的復制品。
其中被復制的服務器為主服務器/節點(master),而通過復制創建出來的服務器復制品則為從服務器/節點(slave)。
特點:
-
主從結構:一個主節點可以有多個從節點,從節點可以有從節點,形成級聯結構。
-
數據同步:主節點上的數據更新后,會自動將更新的數據同步到從節點,并且這種同步是異步進行的。
-
讀寫分離:主從模式可以實現讀寫分離,主節點主要負責寫入操作,而從節點則主要負責讀取操作。
-
數據備份:從節點可以作為主節點的備份節點,保存主節點的數據備份,提高數據的安全性和可靠性。
-
-
哨兵模式(Sentinel)
哨兵模式是在主從模式的基礎上添加了故障檢測和自動故障轉移的功能。
在哨兵模式下,哨兵進程會監視主從節點的運行狀態,當主節點出現故障時,會自動將其中一個從節點提升為新的主節點,并通知其他從節點修改配置文件,以將數據復制修改為主節點。這樣可以實現自動的故障轉移,無需人工干預,提高系統可用性和可擴展性。
哨兵模式不可以單獨使用,它需要與主從模式一起使用。
-
集群模式(Cluster)
集群模式是為了解決單機Redis容量有限的問題,將數據按一定的規則分配到多臺機器上。
在集群模式下,每個節點都負責存儲數據的一部分,并且可以處理來自其他節點的請求。當一個節點出現故障時,其他節點可以接管它的職責,繼續處理請求。
集群模式可以提高并發處理能力和數據容量,但實現復雜度較高,需要處理數據分片和節點間的通信等問題。
2. 主從模式的配置
啟動兩個Redis服務器,可以考慮在同一臺機器上啟動兩個Redis服務器,分別監聽不同的端口,如6379和6380
將配置文件拷貝兩份,并修改端口號
步驟:
-
主服務器master
將配置文件拷貝兩份,并修改端口號
$ redis-server 6379.conf
-
從服務器slave
$ vi 6380.conf # 編輯配置文件,配置主從關系slaveof 127.0.0.1 6379 ?# 在末尾添加,指定master的主機地址和端口號 $ redis-server 6380.conf $ redis-cli -p 6380 ? # 連接從服務器,slave端口號為6380