redis 宕機了如何恢復 AOF

2022-07-02 15:36:14 字數 888 閱讀 5223

aof

記錄日誌是在處理完請求時,好處是記錄的都是成功的請求,不會阻塞寫操作 但是會阻塞後續的操作,因為這一步也是主線程執行的

寫入磁碟是影響效能的,redis給我們提供了三種同步時機

1.  always 

2.  everysec

4.  no 先寫入aof檔案的記憶體緩衝區 由系統決定何時存入磁碟

當aof檔案過大的時候可以aof重寫,不是去讀就的aof日誌而是父子執行緒同時指向相同的記憶體位址,

新的aof日誌當重寫期間有新的資料操作會把資料寫入重寫緩衝區,等重寫完再追加緩衝區中的命令

父程序採用寫時複製,在有操作乙個資料的時候才會複製對應的記憶體頁,對映到新的實體地址並寫入,一讀一寫會造成讀寫放大,並且更高的記憶體頁大小

會放大讀寫的效率,對redis效能產生影響

注意: 重寫是不阻塞的會起乙個後台執行緒執行

那麼在aof重寫的時候會產生阻塞嗎?

主線程fork子執行緒去重寫的時候會產生阻塞,fork子執行緒時需要拷貝必要的資料到子執行緒工作記憶體,其中一項就是拷貝記憶體頁表這個拷貝過程會消耗大量的cpu時間

這個記憶體頁表就是虛擬記憶體與物理記憶體的對映索引表,拷貝的時間消耗取決於例項的大小

在主線程修改存在的資料時 才會去複製對應的記憶體頁資料,需要開闢新的記憶體空間

所以 如果主線程申請的是乙個bigkey就需要開闢很大的記憶體空間耗時過長造成主記憶體堵塞

如果作業系統開啟了huge page會加劇主記憶體的拷貝效率 因為記憶體頁變大 主記憶體拷貝的資料量就響應的變大記憶體的讀取單位是記憶體頁

重寫aof為什麼不跟主線程用同乙個aof日誌呢?

可能會產生重寫失敗的情況,使得原先的aof日誌被汙染

重寫執行緒和主線程產生競爭影響主線程效率

redis的aof恢復實驗

1 aof持久化的配置 2 aof持久化的資料恢復實驗 3 aof rewrite 4 aof破損檔案的修復 5 aof和rdb同時工作 1 aof持久化的配置 aof持久化,預設是關閉的,預設是開啟rdb持久化 開啟aof持久化機制之後,redis每次接收到一條寫命令,就會寫入日誌檔案中,當然是先...

Redis如何保證系統宕機資料不會丟失

我們都知道 redis 的資料全部在記憶體裡,如果突然宕機,資料就會全部丟失,因此必須有一種機制來保證 redis 的資料不會因為故障而丟失,這種機制就是 redis 的持久化機制。如圖1.1所示,redis 的持久化機制有兩種,第一種是快照,第二種是 aof 日誌。快照是一次全量備份,aof 日誌...

Redis如何避免宕機時資料丟失

redis 用於避免資料丟失的 aof 方法。這個方法通過逐一記錄操作命令,在恢復時再逐一執行命令的方式,保證了資料的可靠性。這個方法看似 簡單 但也是充分考慮了對 redis 效能的影響。總結來說,它提供了 aof 日誌的三種寫回策略,分別是 always everysec 和 no,這三種策略在...