Redis的持久化操作(RDB、AOF)

一、RDB(Redis DataBase)

  1. 是什么:
     RDB是在指定的时间间隔内将内存中的数据集快照写入磁盘,恢复的时候将文件快照直接读取到内存中。
     Redis会在启动目录下生成一个dump.rdb文件。redis.conf配置如下:
    在这里插入图片描述
    也可以指定输出目录:在这里插入图片描述
    默认RDB持久化的三种策略:
    在这里插入图片描述
     在配置好配置文件以后,重启Redis,进行测试,配置在30s内改变10个key就进行持久化操作
    在这里插入图片描述
     在存入12个键值对以后,dump.rdb的文件大小发生了改变,说明持久化成功,需要注意的是,redis只会按照规则持久化30s内的10个key,超过第十个的重新计算时间。也就是说这12个key只持久化了10个。
    持久化操作中的一个配置:在磁盘满了的时候,关闭写操作
    在这里插入图片描述
  2. 怎么进行的持久化
     Redis会单独创建一个子进程(fork进程)来进行持久化,先把数据入到一个临时文件中,等到持久化过程都结束以后,再用这个临时文件替换上次持久化好的dump文件。在整个持久化的过程中,主进程不进行任何IO操作,保证了性能。
    RDB的缺点是最后一次持久化后的数据可能丢失,因此要恢复大量的数据,而且对数据的完整性不是很敏感的话,RDB是要比AOF高效的。
  3. RDB恢复
     刚刚存入了12个数据,在关闭Redis重启后,会自动读取dump中的文件,结果只有10个,因为设置的是30s内有10个key改变就持久化。
    在这里插入图片描述

二、AOF(Append Only File)

  1. 是什么
     以日志的形式来记录每个写操作(增量保存),记录Redis中的写指令,读取操作不做记录,只允许追加文件但是不可以修改文件,redis在启动的时候读取该文件来构建数据,换言之,就是Redis在重启的时候执行了一次日志文件中的内容来恢复数据。

  2. 修改配置启动AOF
    在这里插入图片描述
    AOF文件的默认位置和dump文件在同一个地方
    在这里插入图片描述
    注意:AOF和RDB同时开启,Redis默认使用AOF的持久化方式,因为没有数据的丢失。

  3. 测试
     在执行了写操作后,可以发现AOF文件的大小发生了改变,说明持久化成功。
    在这里插入图片描述
     关闭再启动redis,发现数据还在
    在这里插入图片描述

  4. .aof文件修复
     在aof文件损坏后,redis无法连接,需要修复.aof文件,可以利用自带的命令redis-check-aof --fix 文件名.aof进行修复文件。

    如图,在aof文件中追加Hello
    在这里插入图片描述
    连接redis:出错
    在这里插入图片描述
    修复aof文件:
    在这里插入图片描述
    再次重启连接redis并查看数据:
    在这里插入图片描述

  5. AOF同步频率设置
    在这里插入图片描述

  • always 始终同步,redis每次写入的指令都会立刻记录到日志,性能较差但是数据完整性好
  • everysec 每秒同步,每秒记录日志一次,如果宕机,本秒的日志信息可能丢失。
  • no redis从不主动进行同步,把同步时机交给操作系统
  1. 流程总结
    1. 客户端的请求写命令会被append追加到AOF缓冲区
    2. AOF缓冲区根据AOF策略将操作同步到磁盘的AOF文件中
    3. AOF文件大小超过重写策略或者手动重写的时候,会对AOF进行rewrite重写,压缩AOF文件大小。
    4. Redis重启服务的时候,会重新load加载AOF文件中的写操作达到恢复数据的目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值