redis的持久化政策分為兩種:和
rdb存儲政策
aof存儲政策
1.rdb存儲政策(資料儲存位置 -> redis根目錄/bin/dmp.rdb)
按照一定的時間間隔觸發資料儲存操作
優點:
缺點:
不是在使用者寫資料的同時立即儲存資料到硬碟,是以能給伺服器大量減壓
其優點就是是其缺點,由于按照一定的時間間隔存儲,是以在不正常或者非法關閉時,會導緻最後一次的資料丢失
解決方案:
搭建redis叢集或者采用aof存儲政策(aof會犧牲性能)
1)關于rdb存儲政策的配置(redis.conf檔案)
:(預設開啟)
redis預設配置如下
save 900 1 # 15分鐘執行一次寫操作就會儲存一次 save 300 10 # 5分鐘執行10次寫操作就會儲存一次 save 60 10000 # 1分鐘執行10000次寫操作就會儲存一次
2) rdb存儲政策的原理
當觸及到rbd持久化政策時,将會fork出一個子程序
同時會拍攝目前資料庫的快照資訊(SNAPSHOT)
父程序繼續處理服務端其他業務:由子程序處理SNAPSHOT的持久化存儲,當子程序持久化結束,則自動銷毀
缺點:非法關閉,會丢失最後一次操作的資料
#### 2.aof存儲政策(資料儲存位置 -> redis根目錄/bin/appendonly.aof)
> aof存儲政策(append only file)----->預設關閉
>
> ***特點***:`将每次寫操作存儲到aof持久化檔案(appendonly.aof)中,預設不開啟,此模式追求該可靠型`
> ***缺點***:主要是性能差點(想比較rdb存儲政策)
##### 1) 開啟aof存儲政策(redis.conf)
> appendonly yes
##### 2) aof持久化政策(redis.conf)
```shell
# appendfsync always
appendfsync everysec
# appendfsync no
當設定appendfsync為no的時候,Redis不會主動調用fsync去将AOF日志内容同步到磁盤,是以這一切就完全依賴于作業系統的調試了。對大多數Linux作業系統,是每30秒進行一次fsync,将緩沖區中的資料寫到磁盤上。
當設定appendfsync為everysec的時候,Redis會預設每隔一秒進行一次fsync調用,将緩沖區中的資料寫到磁盤。但是當這一
次的fsync調用時長超過1秒時。Redis會采取延遲fsync的政策,再等一秒鐘。也就是在兩秒後再進行fsync,這一次的fsync就不管會執行多長時間都會進行。這時候由于在fsync時檔案描述符會被阻塞,是以目前的寫操作就會阻塞。
當設定appendfsync為always時,每一次寫操作都會調用一次fsync,這時資料是最安全的,當然,由于每次都會執行fsync,是以其性能也會受到影響
建議采用 appendfsync everysec(預設方式)
注:aof和rdb兩種同時配置時,如果啟動的時候aof可用,則使用aof存儲政策,對于選擇來說,aof追求高可靠性,而rdb模式追求高性能。
即優先級:aof > rdb
aof不能有異常,服務啟動異常