第十章 RDB持久化

将Redis中的非空数据库和其中保存的键值对称为数据库状态。RDB持久化即将内存中保存的数据库状态写入到RDB文件中,保存在磁盘上。

10.1 RDB文件的创建与载入

  1. RDB文件的创建
    1. SAVE命令:阻塞服务器进程,期间不再处理请求,直到RDB文件创建完毕
    2. BGSAVE命令:派生一个子进程(fork)负责RDB文件的创建,服务器继续处理请求
  2. RDB文件的载入

    在服务器启动时自动载入,因为AOF文件更新频率更高,所以优先载入AOF文件,只有在AOF持久化功能处于关闭的状态,才会使用RDB文件还原数据库状态,在RDB文件载入期间,会一直处于阻塞状态知直到工作完成。

  在服务器执行BGSAVE命令期间,

  • 遇到SAVE命令,防止父子进程同时调用rdbSave调用,产生竞争条件,所以会直接拒绝;同样的,也会拒绝BGSAVE命令。
  • 遇到BGREWRITERAOF命令(重写AOF),出于性能的考虑,两者不能同时执行,会被延迟到EGSAVE执行完毕才开始执行。

10.2 自动间隔性保存

  通过配置服务器的save选项设置自动保存,譬如

  save 900 1 //在900秒内,对数据库进行了至少1次修改,即执行BGSAVE命令。

 

后记:

1.触发RDB快照的时机

  1. 符合自动保存设置
  2. 执行save或者bgsave命令
  3. 执行主从复制操作
  4. 执行flushall

  

  

 

  

posted @ 2021-02-25 21:00  walker993  阅读(38)  评论(0编辑  收藏  举报