Redis-持久化

leard 发布于 2025-06-09 2 次阅读


分类:

  • RDB
  • AOF
  • RDB与AOF混合

RDB(Redis Database)

通过创建快照来获取某个时间点上的副本,文件未dump.rdb。x秒至少y个key发生变化,就会触发命令进行持久化。

快照文件是二进制文件,可以快速加载,持久化在Redis主线程外,不会对主线程产生太大影响,但是由于是间隔保存,可能会丢失一部分数据。

命令:

  • save 在主线程生成RDB文件,生成期间,主线程无法读写
  • bgsave fork得到子线程,不会阻塞主线程,默认使用

AOF(Append Only File)

将Redis的写操作以追加的方式写入磁盘里的AOF文件。AOF比RDB更可靠,但是AOF的文件更大,数据恢复时间更久

混合持久化

生成当前时间的RDB文件,将其写入到AOF文件头部位置。在这期间写操作会记录在缓冲区(aof-rewrite-buf),RDB写入完成后,会将缓冲区的数据追加到AOF文件中,然后用新的AOF文件代替旧的AOF文件,这样数据恢复时,会先加载RDB文件,然后执行AOF里的增量数据。

混合持久化只能在AOF重写时触发。

AOF重写

对同一个key的多条操作进行重写,只记录最新的操作。生成新的AOF文件替换之前的AOF文件。