Redis持久化
Redis是内存数据库 如果不讲内存中的数据库状态保存到磁盘中 那么一旦服务器进程退出
服务器状态也会随之消失 所以Redis提供了持久化功能
RDB(Redis database)
在指定的时间间隔内将内存中的数据集快照写入磁盘中,他恢复时是将快照文件直接读到内存中
Redis 会独立创建一个子进程进程持久化 会先将数据写入到一个临时文件中 待持久化过程结束了 再用这个临时文件替换上次持久化好的文件,整个过程中主进程不进行任何的io操作,这就确保了极高的性能。如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效,RDB缺点是最后一次持久化后的数据可能丢失。
RDB文件产生规则:
1.save的规则满足条件 会触发
2.执行flushALL
3.退出Redis
备份就自动生成一个dump.rdb
如何恢复rdb文件
只需要将rdb文件放到我们Redis启动目录就行,Redis会自动检查恢复文件
优点:
1.适合大规模的数据恢复
2.对数据的完整性要求不高
缺点:
1、需要一定的时间间隔进行进程操作!如果Redis意外宕机,那么最后一次修改数据就没有了
2.fork进程的时候,会消耗一定的内存空间
AOF
以日志的形式来记录每个写操作 将Redis执行过的所有指令记录下来(读操作不记录)
只追加文件但不可以改写文件,Redis启动之初会读取该文件重新构建数据,换言之,Redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作
aof保存的是appendonly.aof文件
但是默认的aof功能是不开启的,我们需要手动进行配置,我们只需要将配置文件中的appendonly 改为yes就可以了 然后重启Redis
当你的aof出错的时候 你的Redis是无法启动的,我们需要修复文件
Redis给我提供了一个修复的工具 ‘Redis-check-aof --fix’
优点:
1.每一次修改都同步,文件完整性好
2.每一秒同步一次 可能会丢失一秒的数据
3.从不同步,效率最高
缺点:
1.相对于数据文件来说 aof远远大于rdb 修复比rdb慢
2.aof运行运行效率比rdb慢所以我们Redis默认的配置就是rdb持久化