Redis(二)持久化

Redis持久化,分为RDB方式和AOF方式,它们可以单独使用,也可以混用。Redis默认的是使用RDB方式。

一、RDB方式

1.触发快照的方式

RDB方式是在指定时间间隔内某一时间点的数据集快照。以下几种情况会触发快照。

(1)根据配置规则,进行自动快照。

看配置文件:

86-88行,这三行就是配置文件中默认设置的规则。通过看文档中的注释就可以理解其中含义,在规定时间内,发生一定次数的变化,就会进行快照。三种情况任意一种满足,都会进行快照。

在97行和107行,是快照的保存路径和文件名称,当然,可以也可以自己指定。

(2)执行SAVE,BGSAVE命令

save命令:Redis同步进行快照操作,期间会阻塞所有客户端的请求,当数据库数据较多时,应避免使用这个命令。

bgsave命令:从名字可以猜测到,这个命令是在后台异步进行,并且同时可以处理客户端的请求。

(3)执行复制(replication)

 当设置了主从模式时,在复制初始化时自动进行快照。

2.RDB持久化过程

(1)Redis使用fork()函数,复制一份当前进程的副本;

(2)父进程继续处理客户端的请求,子进程开始将内存中的数据写入硬盘中的临时文件;

(3)当子进程写完所有数据后,用临时文件,替换旧的数据文件,至此,一次快照完成。

注意:fork()函数操作时,那一刻的数据,将会被存储,fork()之后快照完成前,那一时间的数据将会丢失。

二、AOF方式

1.AOF使用

Redis存储非临时的数据时,一般要打开AOF来降低进程终止导致的数据丢失。它可以将每条命令记录下来,写进AOF文件里。

默认AOF是关闭的,将262行的 no变成yes,就可以了。默认的文件名见265行。

2.AOF文件重写

重写意思是,删除文件中无用的行为。比如set name lee 分别将不同的值进行设置,但是前面设置的值肯定被覆盖,只有最后一次设置的值有效。

配置文件中对重写功能的设置:

最后两行的设置。328行,如果新文件大小比原文件大100%时,进行重写。最后一行,文件大小必须达到64mb时,才会重写。

两个关系必须同时满足,才可以重写。

三、RDF与AOF的比较

这里推荐一篇博客了,有兴趣的朋友可以看看。

https://my.oschina.net/davehe/blog/174662

原文地址:https://www.cnblogs.com/lihao007/p/7884438.html