Redis学习笔记:持久化 RDB与AOF

前言

   Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,数据库状态也会消失,所以Redis提供了持久化的功能。
   注意:如果同时开启了RDB和AOF,那么Redis会优先使用AOF来载入。

RDB(Redis DataBase):默认的持久化方式

RDB的持久化文件:dump.rdb

   在flushdb, flushall, save,退出Redis时产生dump.rdb)

   在指定的时间间隔内将内存中的数据快照写入磁盘,恢复时将快照文件读入到内存中。
   在redis启动时会检查有无dump.rdb,恢复其中的数据。

过程:

   Redis会创建一个(fork)子进程来进行持久化,先将数据写入到一个临时文件中,等持久化的进程都结束了,再用这个临时文件替换上次持久化好的文件。而这整个过程中,主进程是不进行任何IO操作的,这保证了极高的性能。
在这里插入图片描述

优点:

   如果需要进行大规模数据的恢复,且对恢复的完整性不是很敏感,那么RDB方式比AOF方式更加的高效。

缺点:

   RDB的缺点是最后一次持久化后的数据可能丢失。(宕机)
fork进程会占用一定的内存空间

AOF(Append Only File):默认是不开启的

   如果需要开启,在文件redis.conf中进行配置,添加语句: appendonly yes

AOF的持久化文件:appendonly.aof

   以日志的形式来记录每个写操作,只记录写操作,不记录读操作。
只许追加文件不许改写文件。
   Redis启动之初会读取该文件。从前到后执行写指令,进行重构数据。
   如果appendonly.aof文件被恶意破坏,那么下次重启Redis时会启动失败(连接被拒绝),这是因为appendonly.aof文件无法正常运行。此时我们可以使用redis-check-aof来恢复aof文件-》使用下面的命令:

redis-check-aof --fix appendly-aof

   但是!被破坏的命令会被删除!即解决有问题的人。

   Redis会记录每次aof文件的大小,如果文件大小大于64MB,就会fork一个新进程将aof文件进行重写。

优点:

   每一次修改都会同步到aof文件中,文件的完整性会更好。

缺点:

   每秒同步一次,可能会丢失一秒的数据。
   对于持久化文件来说,aof的大小远远大于rdb,修复数据也比rdb慢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值