redis持久化机制有哪些

发布时间 2023-05-31 15:35:28作者: 未知用户9521
Redis提供了RDB和AOF两种持久化机制。
  • RDB
  RDB,就是把内存数据以快照的形式保存到磁盘上。
  什么是快照?可以这样理解,给当前时刻的数据,拍一张照片,然后保存下来。RDB持久化,是指在指定的时间间隔内,执行指定次数的写操作,将内存中的数据集快照写入磁盘中,它是Redis默认的持久化方式。执行完操作后,在指定目录下会生成一个 dump.rdb 文件,Redis 重启的时候,通过加载 dump.rdb 文件来恢复数据。RDB触发机制主要有以下几种:
  1、shutdown(正常关闭)时,如果没有开启aof,会触发;kill -9 意外宕机不会触发rdb持久化;

  2、redis.conf 默认配置(此配置是针对bgsave):

    save 900 1 #900s检查一次,增量的数据变更命令超过1,就触发;
    save 300 10 #300s检查一次 更改10次
    sava 60 10000 #60s检查一次 更改命令1w条,就触发;

  根据这个默认配置,会丢数据;意外宕机的情况下,丢失最后一次持久化后的数据

  3、执行命令save或者bgsave

  4、执行flushall命令

  RDB的优点
    适合大规模的数据恢复场景,如备份,全量复制等
  RDB缺点
    没办法做到实时持久化/秒级持久化,遇到故障会丢失最后一次修改。
 
  • AOF

  AOF 持久化功能则提供了一种更为可靠的持久化方式。 每当 Redis 接受到会修改数据集的命令时,就会把命令追加到 AOF 文件里,当你重启 Redis 时,AOF 文件里的命令会被重新执行一次,重建数据。

  AOF的优点
    数据的一致性和完整性更高
  AOF的缺点
    OF记录的内容越多,文件越大,数据恢复变慢。