redis之持久化

持久化

RDB(redis database)

在指定的时间间隔内将内存的数据集快照写入到磁盘,也就是行话讲的snapshot快找,它恢复时是将快照文件读到内存中。
1.redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,代持久化过程都结束了。
2.再用这个临时文件替换上次持久化好的文件。
3.整个过程是不进行任何IO操作的。这就保证了极高的性能。
4.如果需要进行大规模数据的恢复,且对于数据的完整性不是特别敏感,那么RDB的方式要比AOF更加高效。

优点:

1.适合大规模的数据恢复!dump.rdb
2.对数据完整性不高

缺点:

1.需要一定的时间进行保存,RDB的缺点就是最后一次持久化的数据可能丢失。我们默认的就是RDB,一般情况下不需要修改这个配置。
2.fork进程的时候,会占用一定的空间

rdb保存的文件是dump.rdb,都是在配置文件中快照中进行配置的。

修改配置文件,60秒有5次改动,就会进行一次快照

触发机制:

1.save的规则满足的情况下,会自动触发rdb规则
2.执行flushall命令,会自动触发rdb规则
3.退出redis,会自动触发rdb规则
备份时就会生成一个dump.rdb文件

如何恢复rdb文件

1.只需要讲rdb文件放在我们redis启动目录就可以,redis启动的时候就会自动检查dump.rdb恢复其中的数据!
2.查看需要存在的位置

config get dir 

AOF持久化(append only file)

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

以日志的形式记录每一个操作,将Redis执行过的所有指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该摁键重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作

默认不开启,需要手动进行配置

如果aof有错位的话,这个时候redis是启动不起来的,需要修复这个aof文件
redis有一个工具进行修复

Redis-check-aof --fix


如果文件正常,重启就可以直接回复了。

优点

1.每一次修改都会同步,完整性更好
2.每秒同步一次,可能会丢失一秒的数据
3.从不同步,效率最高

缺点

1.相对于数据文件来说,aof远远大于rdb,修复的速度远远小于rdb
2.aof运行效率也要比rdb慢,默认使用的rdb持久化。

posted @ 2023-01-04 01:39  King-DA  阅读(26)  评论(0)    收藏  举报