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

相关推荐

  1. Redis底层原理】之数据结构与持久机制

    2024-06-13 09:58:04       47 阅读
  2. Redis持久——深入探究底层原理

    2024-06-13 09:58:04       41 阅读
  3. redis持久机制

    2024-06-13 09:58:04       54 阅读
  4. Redis持久机制

    2024-06-13 09:58:04       58 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-13 09:58:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-13 09:58:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-13 09:58:04       82 阅读
  4. Python语言-面向对象

    2024-06-13 09:58:04       91 阅读

热门阅读

  1. 算法笔记 图论和优先级队列的笔记

    2024-06-13 09:58:04       29 阅读
  2. linux开发常用命令

    2024-06-13 09:58:04       24 阅读
  3. 代码整洁之道学习笔记

    2024-06-13 09:58:04       24 阅读
  4. 使用foreach和stream遍历并修改List列表

    2024-06-13 09:58:04       25 阅读
  5. Elasticsearch介绍,要点和难点以及优缺点

    2024-06-13 09:58:04       24 阅读
  6. 智能数据抓取:自动化时代的资讯收割机

    2024-06-13 09:58:04       31 阅读
  7. 用python把docx批量转为pdf

    2024-06-13 09:58:04       38 阅读
  8. flutter 设置缓存的方法

    2024-06-13 09:58:04       25 阅读
  9. OpenSSL新手教程:加密与安全通信基础

    2024-06-13 09:58:04       32 阅读
  10. web前端需要的知识点:深度解析与技能进阶之路

    2024-06-13 09:58:04       32 阅读