Redis的持久化有2种方式:快照rdb 和 日志aof
因为rdb是在某个时间点来备份的,直接备份二进制映像文件,恢复速度快。可是因为是在时间点备份的,在备份以前进程忽然被杀掉就致使上个备份点到这个备份点之间的数据都丢失了;因此要结合Aof日志来一块儿备份,再加上一个主从配置就比较完美了;redis
save 900 1 #900秒内,有1条写入,则产生快照 save 300 1000 #若是300秒内有1000次写入,则产生快照 save 60 10000 #若是60秒内有10000次写入,则产生快照 # 从下往上,一个梯形结构; # 这3个选项都屏蔽,则rdb禁用; stop-writes-on-bgsave-error yes #后台备份进程出错时,主进程停不中止写入?不中止写入的话,有可能数据一致性出现误差 rdbcompression yes #导出的rdb文件是否压缩 Rdbchecksum yes #导入rbd恢复时数据时,要不要检验rdb的完整性 dbfilename dump.rdb #导出来的rdb文件名 dir ./ #rdb的放置路径
appendonly no # 是否打开aof日志功能 appendfsync everysec # 折中方案,每秒写1次 appendfsync always # 每1个命令,都当即同步到aof. 安全,速度慢 appendfsync no # 写入工做交给操做系统,由操做系统判断缓冲区大小,统一写入到aof. 同步频率低,速度快; no-appendfsync-on-rewrite yes # 正在导出rdb快照的过程当中,要不要中止同步aof auto-aof-rewrite-percentage 100 #aof文件大小比起上次重写时的大小,增加率100%时,重写 auto-aof-rewrite-min-size 64mb #aof文件,至少超过64M时,重写
重写: redis内存里的key-value逆化;好比set num 1,incr num 1....到100;把这一百个递增的结果直接逆化成set num 100;而不是再搞一百个命令;
问: 在dump rdb过程当中,aof若是中止同步,会不会丢失?
答: 不会,全部的操做缓存在内存的队列里, dump完成后,统一操做.缓存
问: aof重写是指什么?
答: aof重写是指把内存中的数据,逆化成命令,写入到.aof日志里.以解决aof日志过大的问题.安全
问: 若是rdb文件,和aof文件都存在,优先用谁来恢复数据?
答: aof服务器
问: 2种是否能够同时用?
答: 能够,并且推荐这么作app
问: 恢复时rdb和aof哪一个恢复的快
答: rdb快,由于其是数据的内存映射,直接载入到内存,而aof是命令,须要逐条执行redis 服务器端命令操作系统