Redis学习笔记-持久化

Redis学习笔记-持久化

一、RDB持久化

1. 持久化方式

手动执行、定期执行

2. 持久化执行过程

1) 创建RDB二进制文件
  • SAVE命令: 阻塞Redis服务器进程,直到文件创建完成。
  • BGSAVE命令: 创建一个子进程来创建文件。 用于定期执行RDB持久化

BGSAVE命令执行时,不能同时执行SAVE、BGSAVE、BGREWRITEAOF命令。
其中,不能同时执行BGREWRITEAOF命令是为了性能考虑

2) 载入RDB二进制文件

自动载入。
如果开启了AOF持久化,就载入AOF文件;否则,载入RDB文件

3)记录参数
  • dirty计数器

距离上一次成功执行SAVE或者BGSAVE命令之后,服务器对数据库进行了多少次CRUD操作

  • lastsave属性

记录上一次成功执行SAVE或者BGSAVE命令的时间戳

4)设置保存条件
  • seconds 秒数
  • changes 修改数

当服务器在seconds秒之内,对数据库进行了至少changes此修改时,会对Redis进行RDB持久化
可以设置多个类似条件对Redis持久化

  • 校验条件的定时任务:

默认会有一个100ms执行一次的定时任务,判断保存条件是否满足

  • 校验方法:

通过dirty和lastsave来判断保存条件是否满足。如果满足,执行BGSAVE命令

5) RDB文件存储格式
  • “REDIS” + 版本号 + 多个数据库键值对部分 + EOF结束符 + 校验和
  • 对于不同的类型的键值对,RDB文件会用不同的方式保存它们

二、AOF持久化

1. AOF与RDB持久化区别

RDB持久化:保存数据库中的键值对
AOF持久化:保存Redis服务器所执行的写命令

2. 持久化执行过程

1)命令追加

服务器在执行命令后,会将协议内容追加到aof_buf缓冲区的末尾

2) AOF文件的写入与同步

写入:服务器每次结束一个事件循环之前,都会判断是否将aof_buf缓冲区的数据写入到AOF文件中
同步:由于write函数将数据写入到文件时,会暂时将数据保存到缓冲区中,当缓冲区满了或者超过时限时,才会真正将数据写入到磁盘中。
所以,需要同步操作强制让操作系统立即将缓冲区中的数据写入到硬盘中

3.数据还原过程

创建一个不带网络连接的伪客户端,从AOF文件读取命令,并逐条执行

4. AOF重写

随着服务器运行时间的增加,AOF的文件越来越多,通过重写AOF文件,达到精简执行命令的目的

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值