JAVA面试总结-Redis篇章(五)——持久化

Java面试总结-Redis篇章(五)——持久化

  • 1.RDB
    • RDB全称Redis Database Backup file (Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据
  • RDB的执行原理
        • 在Linux系统中,所有的进程都不能直接操作物理内存,由操作系统给每个进程分配一个虚拟内存,虚拟内存和物理内存之间的映射关系表称为页表,进程通过操作页表来查找物理内存。
        • 子进程通过拷贝页表,把映射关系拷贝给子进程,从而可以操作(读取)相同区域的物理内存,读取到数据之后,更新RDB文件,替换久的RDB文件,写入磁盘。
        • 子进程在写入磁盘的时候,主进程也可能会进行写操作,这时候会出现脏数据,怎么解决这个问题呢,Fork底层采用Copy-on-write技术,这时候主进程会把数据完整的拷贝一份出来,当新的数据写入之后,读操作也会去读取最新的数据,页表也会指向新的物理内存。
  • 2.AOF
      • AOF全称为Append Only File (追加文件)。Redis处理的每一个写命令都会记录在AOF文件,可以看做是命令日志文件。

JAVA面试总结-Redis篇章(五)——持久化_第1张图片

1.RDB

RDB全称Redis Database Backup file (Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据

JAVA面试总结-Redis篇章(五)——持久化_第2张图片

RDB的执行原理

JAVA面试总结-Redis篇章(五)——持久化_第3张图片

在Linux系统中,所有的进程都不能直接操作物理内存,由操作系统给每个进程分配一个虚拟内存,虚拟内存和物理内存之间的映射关系表称为页表,进程通过操作页表来查找物理内存。

子进程通过拷贝页表,把映射关系拷贝给子进程,从而可以操作(读取)相同区域的物理内存,读取到数据之后,更新RDB文件,替换久的RDB文件,写入磁盘。

JAVA面试总结-Redis篇章(五)——持久化_第4张图片

子进程在写入磁盘的时候,主进程也可能会进行写操作,这时候会出现脏数据,怎么解决这个问题呢,Fork底层采用Copy-on-write技术,这时候主进程会把数据完整的拷贝一份出来,当新的数据写入之后,读操作也会去读取最新的数据,页表也会指向新的物理内存。

2.AOF

AOF全称为Append Only File (追加文件)。Redis处理的每一个写命令都会记录在AOF文件,可以看做是命令日志文件。

JAVA面试总结-Redis篇章(五)——持久化_第5张图片
JAVA面试总结-Redis篇章(五)——持久化_第6张图片
JAVA面试总结-Redis篇章(五)——持久化_第7张图片
JAVA面试总结-Redis篇章(五)——持久化_第8张图片
JAVA面试总结-Redis篇章(五)——持久化_第9张图片

你可能感兴趣的:(技术,面试,Redis,java,面试,redis)