目錄
- AOF寫入策略
- AOF重寫
- 阻塞
- 解決阻塞
AOF寫入策略
由appendfsync引數控制:
| 可配置的值 | 說明 |
|---|---|
| always | 命令寫入buf后呼叫系統呼叫fsync同步AOF檔案,fsync完成后執行緒回傳, |
| no | 命令寫入buf后呼叫系統呼叫write操作,后續fsync同步操作由作業系統來完成,一般為30秒一次, |
| everysec | 命令寫入buf后呼叫系統呼叫write操作,后續fsync同步操作專門執行緒每一秒呼叫一次, |
everysec是always和no的折中,是性能和安全性的這種,是redis默認的配置,也是比較推薦的配置,
當使用everysec配置時,redis會使用后臺子執行緒完成完成fsync同步,
AOF重寫
AOF重寫是由后臺子執行緒完成,但是AOF會有大量的IO操作,最侄訓和AOF的fsync進行磁盤的競爭,
阻塞
雖然在everysec配置下aof的fsync是由子執行緒進行操作的,但是主執行緒會監控fsync的執行進度,
主執行緒在執行時候如果發現上一次的fsync操作還沒有回傳,那么主執行緒就會阻塞,
解決阻塞
-
減少IO競爭
redis有一個配置:
no-appendfsync-on-rewrite yes/no- 配置就是設定為yes時候,在aof重寫期間會停止aof的fsync操作(io競爭沒有了),這種配置有一個潛在的風險:如果在aof重寫期間redis宕機了,那么aof的資料便會丟失,可靠性下降,
- 配置就是設定為no時候,aof重寫期間還是會執行fsync,這個時候就會產生IO競爭,有可能阻塞主執行緒,
-
使用ssd
如果既需要性能,有需要可靠性,
- 將配置設為no
- 硬碟采用高速固態硬碟SSD
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/255112.html
標籤:NoSQL
上一篇:Redis學習筆記:命令
