Redis数据的可持续化有两种模式:RDB和AOF
RDB模式 优势: 1. RDB是Redis数据集的基于时间点的紧凑的副本,非常适合于备份场景。比如每个小时对RDB文件做一次小的归档,每天对RDB文件做一次大的归档,每月对RDB文件做一次更大的归档。这样可以在必要的时刻选择不同的备份版本进行数据恢复。 2. RDB方式的开销较低,在该种方式下Redis父进程所要做的仅是开辟一个子进程来做剩下的事情。 3. 与AOF相比RDB在数据集较大时能够以更快的速度恢复。 劣势: 若需在Redis停止工作时(例如意外断电)尽可能保证数据不丢失,那么RDB不是最好的方案。例如,通常会每隔5分钟或者更长的时间来创建一次快照,如若Redis没有被正确的关闭就可能丢失最近几分钟的数据。
AOF优势 1. AOF日志是append only方式产生的日志,因此不存在随机访问问题以及意外断电时造成的损毁问题 2. 更可靠:有三种不同的fsync策略供选择:no fsync at all、fsync every second、 fsync at every query 3. AOF日志的格式易于理解易于解 劣势 同样的数据集AOF文件要比RDB文件大很多
RDB模式的相关配置
#900秒后且至少1个key发生变化时创建快照 save 900 1 #300秒后且至少10个key发生变化时创建快照 save 300 10 #60秒后且至少10000个key发生变化时创建快照 save 60 10000 #可通过注释所有save开头的行来禁用RDB持久化 #创建快照时对数据进行压缩 rdbcompression yes #快照名称 dbfilename dump.rdb #存放快照的目录(AOF文件也会被存放在此目录) dir /var/lib/redis/AOF持久化设置
#关闭AOF appendonly no #打开AOF appendonly yes #默认AOF文件名 appendfilename appendonly.aof #每秒调用一次fsync刷新数据到磁盘 appendfsync everysec #当进程中BGSAVE或BGREWRITEAOF命令正在执行时不阻止主进程中的fsync()调用(默认为no,当存在延迟问题时需调整为yes) no-appendfsync-on-rewrite no #当AOF增长率为100%且达到了64mb时开始自动重写AOF auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb参考:Redis数据持久化
