RDB
RDB(Redis DataBase):在指定时间间隔内,将内存中的数据集快照写入磁盘,也就是Snapshot快照,它恢复时是将快照文件直接读到内存中来达到恢复数据的。

AOF
以日志的形式记录Redis每一个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件不可以改写文件,redis启动之后会读取appendonly.aof文件来实现重新恢复数据工作。默认不开启,需要将redis.conf中的appendonly no改为yes。

Rewrite
Redis中的数据是有一定限制的,不可能说redis内存中的数据无限增长,进而导致AOF无限增长。
内存大小是一定的,到一定时间,redis就会用缓存淘汰算法(LRU/LFU),自动将一部分数据从内存中清除。
AOF,存放每条写命令,如果AOF 文件一直被追加,这就可能导致AOF文件过于庞大,当大到一定时,AOF会做rewrite操作。
AOF Rewrite操作就会基于当时Redis内存中的数据,来重新构造一个更小的AOF文件,然后将旧的文件删除。
rewrite原理:AOF文件持续增长过大时,会fork出一条新进程来将文件重写(也是临时文件最后再rename),遍历新进程的内存中的数据,每条记录都会有一条set语句,重写aof文件的操作,并没有读取旧的aof文件,而是将整个内存中的数据库内容用命令的方式重写了一个新的aof文件,有点类似于快照。
触发机制:Redis会记录上一次重写时的AOF大小,默认配置是当AOF文件大小是上一次的一倍并且大于64m时,会触发从写机制。
2万+

被折叠的 条评论
为什么被折叠?



