MST

星途 面试题库

面试题:Redis缓存与MySQL数据一致性中,常见的持久化方案有哪些及原理

请阐述在保证Redis缓存与MySQL数据一致性场景下,Redis常见的持久化方案(如RDB和AOF)的工作原理,以及它们对数据一致性的影响。
17.9万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试

RDB工作原理

  1. 快照生成:RDB持久化是将Redis在某一时刻的内存数据以快照的形式保存到磁盘。在指定的时间间隔内,Redis会自动触发或手动执行SAVEBGSAVE命令来生成RDB文件。
    • SAVE命令:会阻塞Redis服务器进程,直到RDB文件创建完毕。在这个过程中,服务器不能处理任何客户端请求。
    • BGSAVE命令:Redis会fork出一个子进程,由子进程负责创建RDB文件,主进程继续处理客户端请求。
  2. 文件结构:RDB文件是一个紧凑的二进制文件,它保存了Redis在某一时刻的所有数据库键值对数据。

AOF工作原理

  1. 日志记录:AOF(Append - Only - File)持久化是将Redis执行的写命令以日志的形式追加到AOF文件的末尾。每当有写操作发生时,Redis就会将该操作的命令追加到AOF文件中。
  2. 重写机制:随着写操作的不断进行,AOF文件会越来越大。为了解决这个问题,Redis提供了AOF重写机制。重写时,Redis会创建一个新的AOF文件,将内存中的数据以简洁的命令重新写入新文件,然后用新文件替换旧文件。重写过程也有手动(BGREWRITEAOF)和自动触发两种方式,自动触发基于AOF文件大小的增长比例等条件。

对数据一致性的影响

  1. RDB对数据一致性的影响
    • 优点:RDB文件是某一时刻的完整快照,恢复数据时速度相对较快,适合用于大规模数据恢复场景。
    • 缺点:由于是按时间间隔生成快照,可能会丢失上次快照之后到发生故障期间的数据,无法保证数据的强一致性。例如,如果每5分钟生成一次RDB快照,在4分59秒时发生故障,那么这近5分钟内的数据变化就会丢失。
  2. AOF对数据一致性的影响
    • 优点:AOF记录的是每一个写操作,只要AOF文件没有损坏,就能最大程度地恢复数据,数据丢失风险相对较小,能提供更高的数据一致性保证。
    • 缺点:虽然有重写机制,但AOF文件通常会比RDB文件大,占用更多磁盘空间。并且在恢复数据时,需要重放AOF文件中的所有命令,相对RDB恢复速度可能较慢。同时,如果AOF文件在写入过程中发生损坏(例如突然断电导致写入不完整),可能需要通过工具修复文件后才能恢复数据,影响数据一致性的恢复。