Redis持久化实现的简单过程[亲测有效]

Redis持久化实现的简单过程[亲测有效]Redis有3种实现持久化的方式:AOF日志、RDB快照、混合持久化 Redis写入AOF日志的过程 Redis执行完写操作命令后,将命令追加到server.aof_buf缓冲区 通过write()系

Redis持久化实现的简单过程

Redis有3种实现持久化的方式:AOF日志、RDB快照、混合持久化

Redis写入AOF日志的过程

  • Redis执行完写操作命令后,将命令追加到server.aof_buf缓冲区
  • 通过write()系统调用,将aof_buf缓冲区的数据写入到AOF文件
  • 数据被拷贝到了内核缓冲区page cache
  • 由内核决定何时将数据写入硬盘

Redis实现RDB快照

生成 RDB 文件的两个命令:savebgsave

执行save命令会在主线程生成RDB文件,执行bgsave命令会创建一个子进程来生成RDB文件

执行bgsave命令时,会通过fork()创建子进程,子进程和父进程共享同一片内存数据。因为创建子进程的时候,子进程复制父进程的页表,但页表指向的物理内存还是一个。如果主线程执行读操作,则主线程和 bgsave 进程互不影响;如果主线程执行写操作,则被修改的数据会复制一份副本,然后 bgsave 子进程会把该副本数据写入 RDB 文件,在这个过程中,主线程仍然可以直接修改原来的数据

混合持久化

在AOF日志重写过程,当开启了混合持久化时,在AOF重写日志时,fork出来的重写子进程会先将与主线程共享的内存数据以RDB方式写到AOF文件,然后主线程处理的操作命令会被记录在重写缓冲区,重写缓冲区里的增量命令会以AOF方式写入到AOF文件,写入完成后通知主进程将含有的RDB格式和AOF格式的AOF文件替换旧版。


本文根据小林coding整理。旨在理解混合持久化实现过程。

原文地址:https://www.cnblogs.com/Salinger/archive/2022/10/12/16784267.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/4660.html

(0)
上一篇 2023-06-10 12:30
下一篇 2023-06-10

相关推荐

  • 最新Mysql大厂面试必会的34问题[通俗易懂]

    最新Mysql大厂面试必会的34问题[通俗易懂]1、mysql的隔离级别
    2、MYSQL性能优化
    常用5种方式
    3、索引详解
    1、何为索引,有什么用?
    2、索引的优缺点
    4、什么情况下需要建索引?
    5、什么情况下不建索引?
    6、索引的底层数据结构

    2023-05-13
    130
  • 使用Anaconda升级Python环境

    使用Anaconda升级Python环境Python是一种强大的解释型语言,拥有着丰富的库和工具,在数据分析、科学计算和机器学习等领域得到广泛应用。然而,由于Python的不断更新和演进,我们需要经常升级Python环境以保证我们的代码可以正常运行。本文将介绍使用Anaconda升级Python环境的方法。

    2024-08-19
    24
  • mysql 数据库用户_mysql创建数据库表

    mysql 数据库用户_mysql创建数据库表修改用户名(用户重命名) 在MySQL中,我们可以使用RENAME USER语句修改一个或多个已经存在的用户账号。 语法:RENAME USER <旧用户> TO&#1

    2023-04-10
    155
  • 使用conda更新包的方法

    使用conda更新包的方法在进行数据分析、机器学习等相关工作时,我们经常需要使用各种开源的第三方Python库。这些库的开发者和维护者会定期更新其代码,以修复bug、增加新特性或增强性能等。这时候,我们就需要对我们本地的库进行更新,以使用最新的代码。而这篇文章主要讲解如何使用conda进行更新。

    2024-08-04
    19
  • Python文件操作:从基本读写到高级操作

    Python文件操作:从基本读写到高级操作Python是一种功能强大的编程语言,它可以用在各种应用场景中。其中,文件操作是Python编程中重要的一部分。在Python中,我们可以读取、写入、修改各种文件,包括文本文件、二进制文件和CSV文件等。如果你准备开始学习Python文件操作,那么本文将对你有所帮助。

    2024-02-01
    110
  • 用Python实现自动化数据分析和处理

    用Python实现自动化数据分析和处理自动化数据分析和处理是数据科学家、数据分析师和业务人员最常面临的问题之一。在Python生态系统中,我们可以使用各种库和工具来自动化执行这些任务。本文将介绍如何使用Python自动化数据分析和处理,包括数据清洗、转换、可视化和机器学习模型的创建。我们将使用一些最受欢迎的Python库,如Pandas、Matplotlib、Seaborn和Scikit-learn。

    2023-12-07
    100
  • 思维进阶 分组拼接 找出推荐所有人[通俗易懂]

    思维进阶 分组拼接 找出推荐所有人[通俗易懂]select a.users,b.u_name from ( select GROUP_CONCAT(u_name) as users,p_id from webusers GROUP BY p_i…

    2023-03-09
    144
  • 04、MySql表的操纵(上)「终于解决」

    04、MySql表的操纵(上)「终于解决」表是数据库存储数据的基本单位,由若干个字段组成,主要用来存储数据记录。 对表的操纵有创建表、查看表、修改表、删除表、向表中插入数据、修改表中的数据 1、创建表 CREATE TABLE table_n

    2023-02-08
    150

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注