【趣話Redis第二彈】Redis數據持久化AOF和RDB原理一次搞懂!

勵志當最強課代表的我來給大家總結總結??????
Redis數據持久化AOF和RDB原理一次搞懂!
視頻內容:
1??Redis 介紹??
2??方案 RDB??
3?? LF 備份???
4??指令合并??
視頻內容:
1??Redis 介紹??
Redis 是antirez創(chuàng)建的

2??方案 RDB??
定義了一個二進制的格式,把數據一條碼在一起,生成了一個 RDB 文件提供一個配置參數,既可以支持周期性備份,也可以避免做無用功。就像這樣多個條件可以組合使用
創(chuàng)建一個子進程去做這件事,不能浪費時間。有了備份文件,只要備份文件還在,就能在啟動的時候讀取,快速恢復之前的狀態(tài)了

3?? LF 備份???
執(zhí)行的所有寫入命令都記錄下來,專門寫入了一個文件,并給這種持久化方式也取了一個名字 LF 不過我遇到了 RD B 方案同樣的問題,
不能每執(zhí)行一條寫入命令就記錄到文件中,那會嚴重拖垮我的性能。準備一個緩沖區(qū),然后把要記錄的命令先臨時保存在這里,然后再擇機寫入文件。把這個臨時緩沖區(qū)叫做 a of boss 這一次我不像之前那么沖動,
寫的這個 LF 備份文件越來越大,不僅非常占硬盤空間,復制移動加載分析都非常的麻煩。
把這個過程叫做 AOF 重寫。這工作量實在太大了,分析起來也頗為麻煩,浪費很多精力跟時間。

4??指令合并??
三條指令可以合并成一條搞定 AOF 文件重寫的思路是有了,不過這件事干起來還是很耗時間。
決定和 RD B 方式一樣, fork 出一個子進程來做這件事情謹慎。準備了一個緩沖區(qū) AOF 重寫緩沖區(qū)。從創(chuàng)建重寫子進程開始的那一刻起,把后面來的寫入命令也 copy 一份寫到這個重寫緩沖區(qū)中。
等到子進程重寫文件結束之后,再把這個緩沖區(qū)中的命令寫入到新的 L F 文件中,最后再重命名新的文件,替換掉原來的那個臃腫不堪的大文件,終于大功告成。
