{eval=Array;=+count(Array);}

国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

問答專欄Q & A COLUMN

Redis 中怎樣做持久化?

社區管理員社區管理員 回答1 收藏3
收藏問題
溫馨提示
該問題目前已經被作者或者管理員關閉, 無法添加新回復

1條回答

社區管理員

社區管理員

回答于2022-10-19 11:53

(1)在 Redis 實現持久化有兩種方式:AOF 日志 和 RDB 快照;
(2)AOF 日志
   ◆ 命令執行成功后,才記錄日志;
   ◆ 命令執行后進行日志記錄,不會堵塞當前的寫操作。
   ◆ 命令執行完,日志記錄前宕機,數據會丟失;
   ◆ AOF 日志在主線程中執行,有 IO 瓶頸時會對后面的操作有堵塞風險;
   ◆ 數據量比較大的時候,恢復很慢。
   ◆ 配置項(appendfsync)
            ◆ Always,同步寫回磁盤:每個寫命令執行完,立即同步將日志寫回磁盤;
            ◆ Everysec,每秒寫回磁盤:每個寫命令執行完,只是先把日志寫到 AOF 文件的內存緩沖區,每隔一秒把緩沖區中的內容寫入磁盤;
            ◆ No,操作系統控制的寫回磁盤:每個寫命令執行完,只是先把日志寫到 AOF 文件的內存緩沖區,由操作系統決定何時將緩沖區內容寫回磁盤。
(3)RDB 快照
   ◆ 和 AOF 相比較,RDB 快照記錄的是某一個時刻的數據,數據恢復是直接將 RDB 文件讀入內存,速度很快;
   ◆ 生成 RDB 文件的兩種方式:
            ◆ save:在主線程中執行,會導致阻塞;
            ◆ bgsave:創建一個子進程,專門用于寫入 RDB 文件,避免了主線程的阻塞,這也是 Redis RDB 文件生成的默認配置。子進程是由主線程 fork 生成的,可以共享主線程的所有內存數據。
   ◆ RDB 快照的間隔時間不宜設置過短,因為頻繁進行 Redis 的全量快照,會帶來性能問題:
            ◆ 前一個快照還沒做完,后面一個開始了,會給磁盤帶來壓力;
            ◆ bgsave 的子進程雖然不會阻塞主線程,但創建的過程會阻塞,頻繁創建也會帶來性能問題。
   ◆ 解決上面問題的一種辦法就是使用增量快照;
   ◆ 在 Redis 4.0 中提出了一種混合 AOF 日志和 RDB 快照的方式:
            ◆ RDB 快照的間隔時間可以設置比較大,就不會影響到主線程的操作;
            ◆ 在快照的間隔期間可以使用 AOF 日志記錄所有的操作,當下一次做全量 RDB 快照的時候,清空 AOF 日志;
            ◆ 通過 aof-use-rdb-preamble yes 來進行設置。


評論0 贊同0
  •  加載中...

社區管理員

|打造一個專業,規范,活躍的社區

TA的文章

閱讀更多

最新活動

您已邀請0人回答 查看邀請

我的邀請列表

  • 擅長該話題
  • 回答過該話題
  • 我關注的人
向幫助了您的網友說句感謝的話吧!
付費偷看金額在0.1-10元之間
<