日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Redis實現持久化的方式匯總_Redis

作者:Lincee ? 更新時間: 2022-11-24 編程語言

Redis有3種實現持久化的方式:AOF日志、RDB快照、混合持久化

Redis寫入AOF日志的過程

Redis執行完寫操作命令后,將命令追加到server.aof_buf緩沖區
通過write()系統調用,將aof_buf緩沖區的數據寫入到AOF文件
數據被拷貝到了內核緩沖區page cache
由內核決定何時將數據寫入硬盤

Redis實現RDB快照

生成 RDB 文件的兩個命令:save 和 bgsave

執行save命令會在主線程生成RDB文件,執行bgsave命令會創建一個子進程來生成RDB文件

執行bgsave命令時,會通過fork()創建子進程,子進程和父進程共享同一片內存數據。因為創建子進程的時候,子進程復制父進程的頁表,但頁表指向的物理內存還是一個。如果主線程執行讀操作,則主線程和 bgsave 進程互不影響;如果主線程執行寫操作,則被修改的數據會復制一份副本,然后 bgsave 子進程會把該副本數據寫入 RDB 文件,在這個過程中,主線程仍然可以直接修改原來的數據

混合持久化

在AOF日志重寫過程,當開啟了混合持久化時,在AOF重寫日志時,fork出來的重寫子進程會先將與主線程共享的內存數據以RDB方式寫到AOF文件,然后主線程處理的操作命令會被記錄在重寫緩沖區,重寫緩沖區里的增量命令會以AOF方式寫入到AOF文件,寫入完成后通知主進程將含有的RDB格式和AOF格式的AOF文件替換舊版。

原文鏈接:https://www.cnblogs.com/Salinger/archive/2022/10/12/16784267.html

欄目分類
最近更新