redis持久化RDB和AOF原理以及优缺点

- 1 min

redis持久化RDB和AOF原理以及优缺点

来源

首先要先说下redis持久化的意义: redis持久化的意义主要在于故障恢复,比如你部署一个redis,作为缓存有可能里边有一些比较重要的数据,如果没有持久化的时候,redis遇到灾难性故障的时候就会丢失所有的数据。 多以持久化是必不可少的。

1.RDB和AOF两种持久化机制的介绍 RDB持久化机制对redis中的数据执行周期性的持久化。 AOF持久化机制对每条写入命令作为日志,以append-only模式写入一个日志文件中,在redis重启的时候,可以通过AOF写入的指令来重新构建整个数据集。 通过RDB和AOF都可以将redis内存中的数据持久化到硬盘上,然后可以将数据备份到云服务器上。 如果redis挂了可以从云服务器上的备份文件copy到指定位置然后重启redis,redis就会自动持久化文件中的数据,去恢复内存中的数据。 如果同时使用RDB和AOF两种持久化机制,那么redis重启的时候,会使用AOF来构建数据,因为AOF的数据更加完整。

img

当满足条件时,redis需要执行RDB的时候服务器会执行以下操作:

redis在进行快照的过程中不会对RDB文件进行修改,只有快照结束后才会将旧快照替换成新快照,也就是说任何时候RDB都是完整的

RDB优点:

RDB缺点

img

redis中的数据是有一定限量的,不可能说redis中的数据无限增长,进而导致AOF文件无限增长。 内存大小是一定的,等到了一定大小redis 会采用淘汰策略lru,自动将内存中的数据清除掉 AOF是存放每条写命令的,所以会不断的增大,当大到一定程度时,AOF会做rewrite操作,rewrite操作就是基于当时redis的数据重新构造一个小的AOF文件,然后将大的AOF文件删除。

AOF的优点:

AOF的缺点

RDB和AOF到底如何选择

rss facebook twitter github gitlab youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora