Redis持久化

一、持久化的作用

redis所有的數(shù)據(jù)都存在內存中,對數(shù)據(jù)的更新將異步地保存到磁盤上。
1.什么是持久化?
數(shù)據(jù)從內存保存到磁盤的過程叫做持久化。
2.持久化的方式

  • 快照 MySQL Dump、Redis RDB
  • 寫日志 MySQL Binlog、Redis AOF

二、RDB

是Redis內存到硬盤的快照,用于持久化


RDB

RDB觸發(fā)機制
1.save命令
client執(zhí)行save命令,redis就會生成一個RDB文件默認叫dump.rdb(以舊換新的策略)。是一個同步命令,會阻塞客戶端命令
2.bgsave命令
client執(zhí)行bgsave命令,會交給后臺子進程執(zhí)行(fork),不會阻塞Redis但是fork新進程

save與bgsave的比較

3.自動生成RDB

4.其他方式

  • 全量復制
  • debug reload
  • shutdown

RDB存在的問題
1.O(n):耗時
2.fork():消耗內存,copy-on-write策略(寫的時候先把文件拷貝一份,往拷貝的文件里寫,然后再引用這個副本)
3.DiskI/O:IO消耗
4.當出現(xiàn)宕機的情況導致文件沒有寫完

三、AOF

運行原理

AOF運行原理-創(chuàng)建

當發(fā)生宕機之后,通過AOF文件進行完整的恢復

AOF的三種策略
Redis寫文件首先是將內容寫到緩沖區(qū)中,然后根據(jù)不同的策略刷新至磁盤中。
1.always:每一條命令刷新一次
2.everysc:每一秒刷新一次
3.no:操作系統(tǒng)決定

四、RDB和AOF的抉擇

image.png
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 從這篇文章開始,將依次介紹Redis高可用相關的知識——持久化、復制(及讀寫分離)、哨兵、以及集群。 本文將先說明...
    不變甄心閱讀 737評論 0 4
  • 一、Redis高可用概述 在介紹Redis高可用之前,先說明一下在Redis的語境中高可用的含義。 我們知道,在w...
    Java架構_師閱讀 476評論 0 2
  • 前言 在上一篇文章中,介紹了Redis內存模型,從這篇文章開始,將依次介紹Redis高可用相關的知識——持久化、復...
    Java架構閱讀 2,503評論 3 21
  • 一、Redis高可用概述 在介紹Redis高可用之前,先說明一下在Redis的語境中高可用的含義。 我們知道,在w...
    空語閱讀 1,679評論 0 2
  • 戳戳戳這里,謝謝大家 大家好,我是北京服裝學院時尚傳媒的大四學生,我的畢業(yè)設計希望做一本針對青年人的有思想雜志日記...
    休一一一一閱讀 205評論 0 1

友情鏈接更多精彩內容