Redis复习之持久化

144 阅读2分钟

RDB:通过生成某一个时间段的快照,对Redis的数据做周期性的持久化。

AOF:周期性记录操作日志,对redis的操作周期性的做持久化操作。

RDB

优点:

1、恢复数据RDB更快,因为存储的数据,直接将数据载入内存即可。

2、对Redis影响小,Redis是Fork一个子进程去执行持久化操作。

3、适合做冷备,存储样式为多个文件,每个文件代表一个时间点的数据,而AOF只有一个文件,想要做冷备需要定时存储某个时间点的快照。

缺点:

1、数据存储粒度比较大,会丢失部分数据。

设置RDB刷新间隔:

300秒内至少有10个变更操作才进行持久化

save 300 10

2、RDB在生成很大的数据快照时,可能会对客户端服务造成短暂的暂停。

AOF 默认关闭

优点:

1、数据更新粒度小,保留的数据最完整

有三个选项可设置:

(1)、每次更新操作都写入磁盘 (2)、每秒将缓冲区的操作写入磁盘一次 (3)、30s一次将缓冲区写入磁盘一次

2、使用append-only模式,写入性能高。

缺点:

1、文件较大,更占用资源

2、恢复速度没有RDB快,因为RDB直接写入数据,而AOF是执行所有记录的命令

TIPS

1、AOF更适合做热备,RDB更适合做冷备

2、两者都启动时,Redis默认使用AOF做恢复策略。因为这样数据更完整。

3、当AOF的文件过大怎么办?

AOF重写: 当AOF文件过大时,会生成新的AOF文件,新的AOF文件会对老AOF文件压缩。

如:

set name a

set name b

变为

set name b

操作顺序是:

1、创建一个子进程,将旧的文件写入新的AOF文件。

2、此期间将指令进行缓存并写入旧的AOF文件。

3、当新文件被写完时,向主进程发送信号。

4、主进程将缓冲区的指令写入新的AOF文件。

5、之后所有的命令将被写入新的AOF文件。