redis学习笔记(四)--RDB持久化和AOF持久化
RDB
基本概念
RDB持久化是在指定的时间间隔内将内存中的数据集快照写入磁盘,相当于Snapshot快照,它恢复时是将快照文件直接读到内存里。
配置文件
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
。默认不开启。
也可以在redis-cli中设置:
> config set appendonly yes > config get appendonly
这里开启appendonly
,并且把AOF文件保存为appendonly.aof
。
在Redis的配置文件中存在三种同步方式,它们分别是:
appendfsync always # 每次有数据修改发生时都会写入AOF文件。 appendfsync everysec # 每秒钟同步一次,该策略为AOF的缺省策略。 appendfsync no # 从不同步。高效但是数据不会被持久化。
no-appendfsync-no-rewrite
参数关闭虽然可能会造成主进程阻塞的问题,但是相对安全,不会丢失数据。原因:https://blog.csdn.net/qinjie6...。
AOF的重写
AOF文件的大小随着时间的流逝一定会越来越大。Redis通过重写AOF的机制来缩小AOF文件的体积。
AOF重写大致就是删除一些无意义的命令。
在Redis-cli中使用:
> bgrewriteaof
加载AOF文件
在配置文件中参数appendfilename "XX.aof"
即可,Redis会自动加载。