王占宇
王占宇
5月前 · 9 人阅读

Redis的持久化有2种方式 1快照 2是日志

RDB:快照方式,允许你每隔一段时间对内存数据做一次快照然后存储到硬盘中。该方式是Redis默认的持久化方式

AOF:通过将发送到服务器的写操作命令记录下来,形成AOF文件,文件默认名称是appendonly.aof,可以通过appendfilename来指定文件名称。

RDB优点:RDB文件内容紧凑,文件小(比AOF文件小)非常适合于灾难恢复,而且能最大程度的使用Redis性能,因为Redis主程序可以fork一个子进程来单独处理RDB持久化,而Redis主进程毋须参与这个过程,另外相对于AOF的数据恢复,RDB数据恢复比AOF快得多。

RDB缺点:由于RDB是间隔一段时间进行快照持久化,那么有可能就在系统发生故障的时候,你就会丢失这段时间内的数据。另外由于RDB在处理持久化数据的时候,有可能就是在数据量庞大的时候,fork出的子进程会非常耗时,如果系统在这时候发生故障,那么你就会丢失这段时间的数据。

Rdb快照的配置选项

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的放置路径

Aof 的配置

appendonly no # 是否打开 aof日志功能

appendfsync always # 每1个命令,都立即同步到aof. 安全,速度慢

appendfsync everysec # 折衷方案,每秒写1次

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时,重写

注: 在dump rdb过程中,aof如果停止同步,会不会丢失

答: 不会,所有的操作缓存在内存的队列里, dump完成后,统一操作.

注: aof重写是指什么

答: aof重写是指把内存中的数据,逆化成命令,写入到.aof日志里.

以解决 aof日志过大的问题.

问: 如果rdb文件,和aof文件都存在,优先用谁来恢复数据

答: aof

问: 2种是否可以同时用

答: 可以,而且推荐这么做

问: 恢复时rdb和aof哪个恢复的快

答: rdb快,因为其是数据的内存映射,直接载入到内存,而aof是命令,需要逐条执行

相关命令:

BGREWRITEAOF 后台进程重写AOF

BGSAVE后台保存rdb快照

SAVE保存rdb快照

收藏 0
aof rdb 快照 rdb 写入 重写
评论 ( 0 )