Redis13Redis持久化的RDB和AOF


redis是基于内存的数据库的,必须持久化到磁盘,因为内存断电即失

RDB(Redis Database)rdb在指定的时间内将内存中的数据集快照写入磁盘,也就是snapshot快照,它恢复时是将快照文件直接读到内存中

如果需要对大规模的数据进行恢复,且对数据的完整性不是非常敏感,那么RDB方式比AOF方式更加高效,RDB的缺点是最后一次持久化的数据可能丢失。我们默认是rdb,一般情况下不需要修改这个配置。

rdb保存的文件是dump.rdb

rdb持久化触发机制 

1、save的规则满足的情况下,也就是在多少秒之内修改多少次。会自动触发rdb规则

2、执行flushall命令

3、退出redis,也会产生rdb文件

AOF (Append Only File)默认就是文件的无限追加

将我们所有命令记录下来,history,恢复的时候就把这个文件全部执行一遍

以日志的形式记录每一个写的操作,不记录读的操作,只许追加文件但不改写文件,redis在下次启动的时候会读取该文件重新构建数据(大数据的情况下效率很低)

aof保存的文件是appendonly.aof

aof默认是不开启的,如果要开启,修改redis.config文件的 appendonly no改为  yes

重启redis即可生效

如果这个aof文件有错误,这时候redis是启动不起来的,我们先不要修复这个aof文件

redis给我们提供了一个工具   redis-check-aof --fix

  输入redis-check-aof --fix appendonly.aof 命令修复,输入y 修复成功

aof优点:(三种设置)

1、每一次修改都同步,文件的完整性更加好

2、每秒同步一次,可能会丢失一秒的数据

3、从不同步,效率最高

缺点:

1、相对于数据文件来说,aof远远大于rdb,修复速度比rdb慢

2、aof运行效率比rdb慢