Redis 底层原理:持久化机制

持久化

虽然 Redis 是一个内存数据库,但它支持 RDB 和 AOF 两种持久化机制,将数据写入磁盘。这可以有效避免进程退出造成的数据丢失问题,并在重启时利用之前持久化的文件实现数据恢复。

RDB

RDB 持久化是将当前进程数据生成快照并保存到硬盘的过程。所谓内存快照,就是指内存中数据在某一时刻的状态记录。这类似于拍照,一张照片可以完整记录朋友某一瞬间的形象。RDB 就是 Redis DataBase 的缩写。

给哪些内存数据做快照?

Redis 的数据都在内存中,为了保证所有数据的可靠性,它执行的是全量快照,即将内存中的所有数据都记录到磁盘中。然而,RDB 文件越大,写入磁盘的数据量越大,时间开销也越大。

RDB 文件的生成是否会阻塞主线程

Redis 提供了两个手动命令来生成 RDB 文件,分别是 savebgsave

  • save:在主线程中执行,会导致阻塞;对于内存较大的实例会造成长时间阻塞,线上环境不建议使用。
  • bgsave:创建一个子进程,专门用于写入 RDB 文件,避免了主线程的阻塞,这也是 Redis RDB 文件生成的默认配置。

RDB手动触发

save阻塞

bgsave

bgsave后

除了手动触发,Redis 还存在自动触发 RDB 的持久化机制,例如以下场景:

  1. 使用 save 相关配置,如 “save m n”。表示 m 秒内数据集存在 n 次修改时,自动触发 bgsave

在这里插入图片描述

  1. 如果从节点执行全量复制操作,主节点自动执行 bgsave 生成 RDB 文件并发送给从节点。
  2. 执行 debug reload 命令重新加载 Redis 时,也会自动触发 save 操作。

debug reload

  1. 默认情况下执行 shutdown 命令时,如果没有开启 AOF 持久化功能则自动执行 bgsave

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搬砖的小熊猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值