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慢