Redis學習(二) AOF持久化

2021-10-17 20:50:31 字數 781 閱讀 9372

1、aof檔案通過儲存修改資料庫的寫命令請求來記錄伺服器的資料庫狀態

3、伺服器在載入aof檔案時,是通過重新執行其中的請求命令進行還原資料庫的狀態

4、aof重寫會產生乙個新的aof檔案,只不過相比之下,體積更小

隨著時間的流逝和業務不斷的擴充套件,會使得資料庫中資料的不斷膨脹,redis伺服器執行的寫入命令也會不斷地累積,對於伺服器來說,將所有的寫入命令儲存下來,寫入到aof檔案中,冒失不是非常合理,這也不符合開發邏輯,所以,在aof重寫產生新的aof檔案時,伺服器會先讀取資料庫中的值,而是用一條寫入命令來表示當前資料庫的狀態,這樣,aof檔案的提及會變得小很多,同時,在載入過程中,也會減輕伺服器的壓力。

5、在執行bgrewriteaof命令時,redis伺服器會維護乙個aof重寫快取區,該快取區的作用就是,在子程序建立新的aof檔案時,記錄伺服器執行的所有的寫命令。
因為redis伺服器使用單執行緒來處理命令請求,當伺服器呼叫aof)_rewrite函式,建立新的aof檔案過程中,伺服器將無法處理客戶端發來的命令請求。所以,為了提高redis伺服器的高效使用,我們將aof重寫操作放到子程序裡來完成。

而上面這種方法會引發乙個問題,既然要還原資料庫的狀態,肯定要確保資料的一致性,也就是不能漏掉任何乙個資料庫寫入命令。redis伺服器通過維護乙個aof重寫快取區來進行追加aof檔案重寫過程中伺服器執行的命令請求操作。在子程序aof檔案重寫結束後,伺服器程序會將aof重寫快取區的命令追加到新的aof檔案的末尾。 這也是aof後台重寫的原理,就簡單介紹到這裡。

redis持久化 AOF持久化

1.aof持久化原理 aof持久化會將被執行的寫命令寫到aof檔案的末尾。在恢復的時候,redis只要從頭到尾重新執行一次aof檔案包含的所有寫命令 2.配置選項 固態硬碟禁用always選項,在某些情況頻繁讀寫會大大降低固態硬碟的壽命 4.aof檔案的重寫和壓縮 aof檔案裡面記錄了所有的命令而不...

Redis的AOF持久化(二)

always 伺服器每寫入乙個命令,就呼叫一次fdatasync,將緩衝區裡面的命令寫入到硬碟裡面,在這種模式下,伺服器即使遭遇到意外停機,也不會丟失任何自己已經成功執行的命令資料。ererysec 伺服器每一秒鐘呼叫一次fdatasync,將緩衝區裡面的命令寫入到硬碟裡面,在這種模式下,伺服器即使...

redis持久化之AOF持久化

aof與rdb持久化通過儲存資料庫中的鍵值對來記錄資料庫狀態不同,aof持久化是通過儲存redis伺服器所執行的寫命令來記錄資料庫狀態的。被寫入aof檔案的所有命令都是以redis的命令請求協議格式儲存的。當aof持久化功能處於開啟狀態,伺服器在執行完乙個寫命令之後,會以協議格式將被執行的寫命令追加...