Redis持久化RDB/AOF

一、Redis持久化之RDB
(一)RDB介绍
RDB是Redis数据库文件,全称Redis DataBase,他时数据持久化方式之一。他的原理是按照指定时间间隔,将内存中的数据集快照写入硬盘,术语叫Snapshot快照。恢复时,将快照文件直接读入内存。

(二)RDB的相关配置参数
1.指定RDB的文件名
dbfilename "dump.rdb" #文件名
save "" #禁用RDB

2.RDB数据从内存保存到硬盘的频率(这些都是默认的设置)
save 900 1     #900秒内且有1次修改
save 300 10    #300秒内且有10次修改
save 60  10000 #60秒内且有10000修改

3.RDB进行手动立刻存盘的命令
save   #阻塞写存盘
bgsave #不阻塞写存盘

4.RDB压缩数据
rdbcompression yes|no

5.RDB在存储快照之后,使用crc16算法做数据校验
rdbchecksum yes|no

6.RDB bgsave出错时停止写入操作
stop-writes-on-bgsave-error yes|no

7.RDB数据备份
备份dump.rdb文件到其他目录下
# cp 数据库目录/dump.rdb 备份目录

8.RDB数据恢复
拷贝备份数据文件到数据库目录,重启redis服务
# cp 备份目录/dump.rdb 数据库目录/
# /etc/redis/redis_端口 start

(三)RDB优点和缺点
1.RDB的优点
能够实现高性能的持久化实现,即创建一个子进程来执行持久化,先将数据写入临时文件,持久化过程结束后,再用这个临时文件替换上次持久化好的文件。过程中主进程不做任何IO操作
适合大量数据恢复,且对数据完整性要求不是非常高。

2.RDB的缺点
意外宕机后,最后一次持久化还没完成,新的持久化文件还没能替换旧的持久化文件,新的持久化文件里的心产生的数据会丢失

二、Redis持久化之AOF
(一)AOF介绍
AOF是只做追加操作的文件,即Append Only File,他会记录redis服务所有写操作,并不断的将新的写操作,追加到文件的末尾,cat命令可以查看这个文件内容。

(二)AOF的相关配置参数
1.指定要最佳写操作的文件名
append filename "appendonly.aof" #指定要追加写操作的文件名
appendonly yes #启用aof,默认值为no

2.AOF文件记录写操作的方式
appendfsync always #有新写操作就立刻记录
appendfsync everysec #每秒记录一次
appendfsync no #永远不记录

3.正常情况下AOF日志文件会随着数据的增多而不断增大,何时触发日志重写?
Redis会记录上次重写覆盖时AOF文件的大小,在默认设置下,当aof文件大于上次rewrite后上次aof文件大小的1倍,并且此时aof文件大于64M时会进行触发
> auto-aof-rewrite-percentage 100
> auto-aof-rewrite-min-size 64mb

4.修复AOF文件
把aof文件恢复到最后一次正确的操作的命令如下
# Redis-check-aof --fix appendonlu.aof

5.AOF备份数据的方法
备份appendonly.aof文件到其他的目录
# cp 数据库目录/applendonly.aof 备份目录

6.AOF恢复数据的方法
拷贝备份文件到数据库目录,重启redis服务
# cp 备份目录/appendonly.aof 数据库目录/
# /etc/redis/redis_端口 start

(三)AOF的优点和缺点
1.AOF的优点
可以灵活设置持久化的方式,既可以设置同步持久化appendfsync always也可以设置异步持久化appendfsync everysec。如果出现意外宕机时,仅会丢失1秒都不到的数据。

2.AOF的缺点
在绝大多数情况,AOF的数据持久化文件体积,会大于RDB方式。fsync策略的持久化效率会比RDB方式慢