2024最新Java笔试题目,想找工作的你还不看这份资料就晚了

本文详细介绍了Redis的持久化机制,包括RDB(快照)和AOF(仅追加文件)两种方式。RDB通过快照在特定时间点保存数据,而AOF则记录所有修改操作来保证数据完整。文章还讨论了COW(Copy On Write)机制在RDB持久化中的应用,以及AOF的重写策略。最后,提到了Redis 4.0引入的混合持久化,结合了RDB的高效启动和AOF的数据安全性。
摘要由CSDN通过智能技术生成

什么是Redis的持久化

我们知道Redis的数据都存储在内存中,如果服务器突然宕机,那么内存数据将会全部消失,为了防止这种情况出现,利用一套机制来保证数据不会因为故障而丢失,我们将这种机制称之为Redis的持久化机制,该机制主要目的是将内存数据存入到硬盘

Redis 提供两种持久化机制RDB(Redis DataBase)和AOF(Append-Only File)机制。

RDB-快照

快照是最简单的Redis持久化模式,也就是生成某个时间点的数据集,生成RDB文件,可以看到RDB文件中的数据是非常紧凑的,所以在恢复数据的时候读取也是非常快的

RDB文件

触发RDB快照的方式有两种

手动触发

通过手动执行bgsave/save,显示触发生成快照

  • save命令:阻塞当前Redis服务器,直到RDB过程完成为止,对于内存 比较大的实例会造成长时间阻塞,线上环境不建议使用

  • bgsave命令:Redis进程执行fork操作创建子进程,RDB持久化过程由子 进程负责,完成后自动结束。阻塞只发生在fork阶段,一般时间很短

配置参数自动触发

自动触发有以下几种情况:

  • 使用save相关配置,命令save m n。表示m秒内数据集存在n次修改时,自动触发bgsave
  • 从节点执行全量复制操作,主节点自动执行bgsave生成RDB文件发送给从节点
  • 执行debug reload命令重新加载Redis时,自动触发save命令
  • 执行shutdown命令时,如果没有开启AOF持久化功能自动执行bgsave

注意:在RDB持久化的过程中有两个问题需要考虑

  1. RDB快照过程中Redis是否会停止对外提供服务
  2. 如果没有停止服务,如何处理新的请求

针对上述问题我们先看一下RDB的持久化执行流程

RDB持久化过程

根据上图我们可以看到主线程主要是fork一个子线程来进行持久化操作,同时父子线程会共享一个数据区域,而且该区域设置为read-only方式,该方式下读的时候没有问题,但是写的时候会触发copyonwrite机制来进行,接下来我们看看什么是 COW(Copy On Write) 机制 。

COW(Copy On Write) 机制

COW(Copy O

  • 18
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值