RDB

基本概念

RDB持久化是在指定的时间间隔内将内存中的数据集快照写入磁盘,相当于Snapshot快照,它恢复时是将快照文件直接读到内存里。

配置文件

clipboard.png

RDB的配置一般在196行左右开始。

save 900 1           #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。
save 300 10          #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照。
save 60 10000        #在60秒(1分钟)之后,如果至少有10000个key发生变化,则dump内存快照。

视情况启用。

触发机制

save

save命令将阻塞当前Redis服务器,知道RDB过程完成为止。
其配置再配置文件中设置。

> save

生成的dump.rdb(默认文件名)会在启动的当前目录下。
命令已废弃。

bgsave

Redis进程执行fork操作创建子进程,RDB持久化过程由子进程负责,完成后自动结束。

> bgsave

生成的dump.rdb文件同save命令。

恢复

> config get dir # 获取当前目录

然后把要恢复的dump.rdb(默认名称)文件放在目录下重新启动即可。

停止RDB

配置文件停止

把生成RDB文件时间注释掉即可。

$ vim redis-config
# save 900 1           
# save 300 10         
# save 60 10000

手动停止

>  config set save ""

AOF

基本概念

AOF持久化以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中的命令达到恢复数据的目的。

使用AOF

开启AOF功能需要设置配置:appendonly yes。默认不开启。

clipboard.png
也可以在redis-cli中设置:

> config set appendonly yes
> config get appendonly 

clipboard.png

这里开启appendonly,并且把AOF文件保存为appendonly.aof
在Redis的配置文件中存在三种同步方式,它们分别是:

appendfsync always     # 每次有数据修改发生时都会写入AOF文件。
appendfsync everysec   # 每秒钟同步一次,该策略为AOF的缺省策略。
appendfsync no         # 从不同步。高效但是数据不会被持久化。

clipboard.png

no-appendfsync-no-rewrite参数关闭虽然可能会造成主进程阻塞的问题,但是相对安全,不会丢失数据。原因:https://blog.csdn.net/qinjie6...
clipboard.png

AOF的重写

AOF文件的大小随着时间的流逝一定会越来越大。Redis通过重写AOF的机制来缩小AOF文件的体积。
clipboard.png
AOF重写大致就是删除一些无意义的命令。
在Redis-cli中使用:

> bgrewriteaof

clipboard.png

加载AOF文件

在配置文件中参数appendfilename "XX.aof" 即可,Redis会自动加载。


BrownFly
18 声望1 粉丝

信息安全协会成员、Vidar-Team成员