【Redis】Redis 持久化(RDB和AOF)

概述

Redis 是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么服务器一旦进程退出,服务器中的数据库状态也会消失。所以 Redis 提供了持久化功能,Redis 提供了两中持久化的方式,一个是 RDB,另一个是 AOF。
Redis 默认是使用 RDB 进行持久化存储,如果需要使用 AOF 的话需要去开启。


RDB

在指定的时间间隔内将内存中的数据集快照写入磁盘。
rdb 保存的文件是 dump.rdb,都在配置文件中能够看到的

触发机制

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

如何恢复 rdb 文件?

只需要在那个 rdb 文件放到我们 redis 启动目录就可以,redis 启动的时候会自动检查 dump.rdb 恢复其中的数据。
如果想要查看 rdb 文件存放的位置就使用 config get dir
在这里插入图片描述
/var/lib/redis 目录下就存在 dump.rdb 文件,启动就会自动恢复其中的数据;

RDB 优点:

1、适合大规模的数据恢复;
2、对数据的完整性要求不高;

RDB 缺点:

1、需要一定的时间间隔进程操作,如果 redis 宕机了,这个最后一次修改数据就没有了;
2、fork 进程的时候,会占用一定的内存空间;


AOF

aof 保存的文件是 appendonly.aof,aof 默认的就是文件的无限追加,文件就会越来越大,它将我们的所有命令都记录下来,恢复的时候就把这个文件全部执行一遍;
redis 会记录上一次的文件大小,来判断是否是上一次的文件。如果 aof 文件大于 64MB,会 fork 一个新的进程来将我们的文件进行重写;
aof 是默认不开启的,如果需要开启的话就去 redis 的配置文件中开启

在这里插入图片描述
appendonly no 的意思是 是否开启 aof
appendonlyfilename "appendonly.aof" 是持久化的文件的名字
appendfsync everysec 是每秒执行一次sync ,可能会丢失这 1s 的数据
appendfsync always 是每次修改都会 sync ,消耗性能
appendfsync no 是不执行 sync ,这个时候操作系统自己同步数据,速度最快

AOF 优点

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

AOF 缺点

1、相对于数据文件来说,aof 文件远远大于 rdb ,修复的速度也比 rdb 慢;
2、aof 运行效率也要比 rdb 慢,所以我们redis默认的配置是rdb;





End


猜你喜欢

转载自blog.csdn.net/weixin_43657300/article/details/128315437