Redis持久化之RDB和AOF操作

举报
哥的时代 发表于 2023/12/24 22:55:42 2023/12/24
【摘要】 前言无论是面试还是工作,持久化都是重点!Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失。所以Redis提供了持久化功能!——RDB(Redis DataBase)和AOF(Append Only File) 一、什么是RDB?接下来请看一张便于理解的剖析图图片解读:在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话...

前言

无论是面试还是工作,持久化都是重点!

Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失。所以Redis提供了持久化功能!——RDB(Redis DataBase)和AOF(Append Only File)


一、什么是RDB?

接下来请看一张便于理解的剖析图
image.png

图片解读:

  • 在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里
  • Redis会单独创建( fork )一个子进程来进行持久化 【Fork 的作用是复制一个与当前进程一样的进程。新进程的所有数据(变量,环境变量,程序计数器等)数值都和原进程一致。这是一个全新的进程,并作为原进程的子进程。】
  • 然后会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。
  • 整个过程中,主进程是不进行任何IO操作的。这就确保了极高的性能。
  • 如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。
  • RDB的缺点是最后一次持久化后的数据可能丢失
  • 在Redis中默认的就是RDB,一般情况下不需要修改这个配置!
  • ==rdb保存的文件是dump.rdb== 都是在我们的配置文件中快照中进行配置的!

有时候在生产环境我们会将这个文件进行备份!

image.png

1.与持久化相关的一些配置

在我的上一篇博客中就提到了关于Redis.config配置文件中关于持久化的一些配置,详细请看博客Redis.config详解
image.png

image.png

2.触发机制

  • 1、save的规则满足的情况下,会自动触发rdb规则
  • 2、执行flushall命令,也会触发我们的rdb规则!
  • 3、退出redis,也会产生rdb文件!

备份就自动生成一个dump.rdb

3.如何恢复rdb文件

  • 1、只需要将rdb文件放在我们redis启动目录就可以,redis启动的时候会自动检查dump.rdb恢复其中的数据!

  • 2、查看需要存在的位置

image.png

4.优点

1、适合大规模的数据恢复!

2、对数据的完整性要不高!

5.缺点

1、需要一定的时间间隔进程操作!如果redis意外宕机了,这个最后一次修改数据就没有的了!

2、fork进程的时候,会占用一定的内容空间!!

二、什么是AOF?

接下来也请看一张便于理解的剖析图
image.png

图片解读:

  • 以日志的形式来记录每个写操作,
  • 将Redis执行过的所有指令记录下来(读操作不记录),
  • 只许追加文件但不可以改写文件,
  • redis启动之初会读取该文件重新构建数据,
  • 换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作

==Aof保存的是appendonly.aof 文件==

append

image.png

默认是不开启的,我们需要手动进行配置! 我们只需要将appendorly改为yes就开启了aof !

重启,redis就可以生效了!

如果这个aof文件有错位,这时候redis是启动不起来的吗,我们需要修复这个aof文件

redis给我们提供了一个工具==redis-check-aof --fix==

image.png

如果文件正常,重启就可以直接恢复了!

image.png

1.重写规则说明

image.png

如果aof文件大于64m,太大了! fork一个新的进程来将我们的文件进行重写!

2.优点

image.png

优点:

  • 1、每一次修改都同步,文件的完整会更加好!

  • 2、每秒同步一次,可能会丢失一秒的数据

  • 3、从不同步,效率最高的!

3.缺点

缺点:

  • 1、相对于数据文件来说,aof远远大于rdb,修复的速度也比 rdb慢!

  • 2、Aof运行效率也要比 rdb 慢,所以我们redis默认的配置就是rdb持久化! |


总结

以上就是Redis持久化之RDB和AOF操作,希望对你有所帮助。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。