Redis的持久化策略

57 阅读1分钟

Redis的持久化策略有两者:AOF和RDB

AOF日志

AOF是以追加的形式进行存储,也就是文件中存储的是一条条命令

AOF中有三种将AOF文件写入磁盘的策略:

  1. Always:每次加入一条命令就写入磁盘
  2. Everysec:每秒写入磁盘
  3. No:Redis不不主动写入磁盘,由操作系统决定何时写入

RDB快照

RDB是在某一时刻,将Redis中的数据写入磁盘

RDB中有两个命令生成RDB文件,分别为save和bgsave,他们的主要区别就是是否在主线程中执行

  1. save:直接在主线程中生成RDB文件,由于是在主线程,所以如果生成时间过长,就容易阻塞主线程

  2. bgsave:会创建一个子线程生成RDB文件,防止主线程阻塞

补充:bgsave的执行时机由时间/变更次数决定,也就说规定时间内有多少数据发生了变化就执行

优缺点:

AOF:由于存储的是一条条命令,文件会比较大,而且在执行文件时也会造成更大的性能开销,但是他的数据会更加安全,即使Redis宕机,也是丢失最后一次写入前的数据

RDB:由于存储的就是数据本身,所以文件大小更小,数据恢复时更快,但是Redis宕机时,在两次快照直接的数据都会丢失