RDB、AOF持久化操作的异同

1、RDB文件的创建和读取

  • RDB文件的创建,主要是SAVE命令和BGSAVE

    • SAVE命令服务阻塞,不能处理其他请求
    • BGSAVE通过fork子进程,父进程还可以继续处理请求,所以BGSAVE具有自动间隔性保存RDB文件的的功能(设置指定时间条件,一旦条件满足自动生成rdb文件);
  • RDB文件的读取

    • RDB文件的读取操作是在redis服务器启动的时候自动执行
  • 总结

  • RDB文件是一个经过压缩的二进制文件,按照指定的数据结构保存,对不同类型的键值对进行持久化保存

2、AOF文件的创建和读取

  • AOF持久功能的实现可分为三个步骤:
    • 命令追加:当redis服务器开启AOF持久化功能的时候,服务器在执行完成一个命令之后,都会以指定协议格式将刚刚执行的命令追加到服务器的aof_buf缓冲区的末尾;等待被写入和同步;
    • 文件写入:只是写入到系统的内存缓存中(因为现代操作系统为了提高磁盘文件的写入效率,调用系统函数write将数据写入到文件中时,操作系统通常会将写入的数据暂时保存到内存缓冲区里面,等到内存缓冲区被填满、或者达到指定时间之后,一次性将缓冲区的数据写入到磁盘里面)
    • 文件同步:上面文件写入,虽然提高了处理效率,但是也为写入数据带来了安全问题,试想如果服务器发生断电,那么保存在内存缓冲区里面的写入数据就会丢失,基于这种场景,操作系统提供了相应的解决方案,fsync和fdatasync两个同步函数,可以强制操作系统立即将缓冲区的数据同步到磁盘,从而保证数据不丢失。

AOF持久功能的实现面临数据不丢失和效率两个方面的问题

  • AOF文件的读取(数据还原)
    • 因为AOF里面包含了重建数据库内容的所以操作命令,所以服务器只需要重新执行一遍命令就可以还原到服务器关闭之前的数据状态。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、Redis高可用概述 在介绍Redis高可用之前,先说明一下在Redis的语境中高可用的含义。 我们知道,在w...
    空语阅读 5,529评论 0 2
  • Redis持久化方式有两种:RDB和AOF。 1 RDB持久化 RDB(Redis Database)持久化是把当...
    HRADPX阅读 3,229评论 0 5
  • redis的持久化有两种方式:RDB和AOF。 RDB持久化功能是将某个时间点的数据库状态保存到一个RDB文件上(...
    黑金星阅读 1,495评论 0 1
  •   因为Redis是内存数据库,它将自己的数据库状态存储在内存当中,所以如果不想办法将存储在内存中的数据库状态保存...
    纸中圆阅读 5,341评论 0 0
  • 5月9日 星期二 晴 今天早上,7:00我就起床了,我哥哥6:30就...
    曾博韬阅读 1,805评论 0 3

友情链接更多精彩内容