redis的持久化详解--RDB持久化--AOF持久化

119 阅读2分钟

redis持久化就是把内存中的数据持久化到磁盘中,防止数据丢失。---当redis服务器开启时,会把磁盘中的数据加载到内存中进行计算。

redis提供了两种持久化方式:

RDB和AOF.

RDB持久化

它是每隔一段时间进行快照存储。--它是一个二进制文件,里面的内容打开后无法看懂。

触发机制:

[1]save---手动触发

[2]bgsave--手动触发

[3]通过配置文件--自动触发【redis会自动配置】

(一)save触发

该命令会阻塞当前Redis服务器,执行save命令期间,Redis不能处理其他命令,直到RDB过程完成为止。具体流程如下:

image.png

image.png

执行完成之后如果存在老的RDB文件,就把新的替代掉旧的。我们的客户端可能都是几万或者是几十万,这种方式显然不可取。

bgsave触发:

执行该命令时,Redis会在后台异步进行快照操作,快照同时还可以响应客户端请求。具体流程如下:

image.png

bgsave在执行该命令时会fork出一个新的线程,单独执行rdb持久化操作,而不影响其他客户对redis服务的操作。

自动执行快照

不管使用save还是bgsave都需要手动输入。我们也可以通过配置文件完成自动化rdb操作。

image.png

RDB快照持久化优缺点:

优点: ----数据恢复速度快。

缺点: ----数据完整性差--会丢失最后一段时间的数据。

AOF持久化

日志追加持久化,当我们执行写操作,会触发一个函数write,把会把写操作的命令追加到一个日志文件appendfile中。当服务器启动时会把appendfile中的命令重新执行一遍。默认不开启。

手动在配置文件中开启AOF模式。

image.png

AOF优缺点:

优点: 数据完整性高---突发情况只会丢失最后一条指令或者最后一秒之内的指令

缺点: 数据恢复慢。--因为在开始redis的时候,要再次执行关于写操作的语句

如果rdb和aof都使用,当服务器重启时会加载哪个文件?

先加载AOF的文件【它以数据完整性为主】。

image.png