Redis指南【5】图解深入 RDB 与 AOF

Redis第十三讲 COW写时复制机制在Redis中的应用 阅读详情

前言

Redis 它是一个键值对的内存数据库,读写数据都是基于内存的,所以它的性能非常高,但同时如果服务器一旦宕机,那么内存的数据是不可恢复的,所以,redis 想到了持久化,如何把内存中的数据优雅的同步到磁盘中,以便 redis 在重启时能够恢复原有的数据,这就是持久化。

Redis 的持久化有三种方式:

  • RDB 快照 :将数据库的某个状态的内存数据,以二进制的方式写入磁盘中。
  • AOF 文件追加(Append Only File):记录所有的操作命令,并以文本的形式追加到文件中
  • 混合持久化方式:这是 Redis4.0 之后的功能,结合了 RDB 和 AOF 的优点。用AOF来保证数据不丢失,作为数据恢复的第一选择;用RDB来做不同程度的冷备,在AOF文件都丢失或损坏不可用的时候,还可以使用RDB来进行快速的数据恢复

这三种使用方式看具体的应用场景,而用到的 RDB 和 AOF 这两种持久化模式是我们需要掌握的,这篇文章将对 RDB 与 AOF 将进行详细解读。

一、RDB 概述

RDB 是 Redis DataBase 的简称,它是将某个时刻的内存快照(Snapshot),以二进制的方式写入到磁盘中。那么如何将数据写入到磁盘中呢,如何触发 RDB 的持久化呢,这里是分为手动保存和自动保存两种模式。

1.1 手动保存

执行 RDB 持久化的操作命令有两个,save 和 bgsave。

  • SAVE 命令会直接阻塞服务器进程,直到 RDB 文件创建完毕,在此期间,服务器不能处理任何命令请求!!
  • bgsave 命令会派生处一个子进程,然后子进程去创建 RDB 文件,服务器进程继续处理命令请求,

SAVE 演示:

首先查看 dump.rdb 文件的时间为 7月份,这是,我们使用 save 命令,发现 RDB 文件已经更新,说明此时 save 命令成功触发了 redis 的持久化。save 命令执行的时候会阻塞 Redis 服务器,所以这种命令还是非常危险的。

image-20210824155336856

BGSAVE 演示:

image-20210824160302863

BGSAVE 命令的执行如图所示。它的保存工作是由子进程执行的,所以子进程在保存的同时,Redis 服务器仍然可以处理客户端的命令请求,同时,BGSAVE 命令在执行期间,save 命令和 bgsave 命令 都不能同时执行。

image-20210824160831808

1.2 自动保存

刚才我们说完了 手动保存的两个命令,两个命令的主要区别就是 :

  • save 命令是由服务器进程执行保存工作的,会阻塞服务器
  • bgsave 命令是由子进程执行保存工作的,不会阻塞服务求。

因此,我们默认用的就是 bgsave 命令,在redis 的配置中 有个 save 选项,可以实现自动间隔保存,此外,在执行 flushall、主从同步的时候也会促发自动保存。

1.2.1 save

Redis 的配置中有个 save 命令,注意的是,可能有些读者会认为这 save 与前面的 save 是一个命令,但它实际上执行的是 bgsave。是要创建子进程去保存 RDB 文件的。

触发的条件如下,注意的是 Redis 的快照是全量快照,每一次触发的时候要把当前的内存数据都记录到磁盘中,如果在数据量很大的时候频繁执行是会对 Redis 的性能产生影响的。

save 900 1:表示900 秒内如果至少有 1 个 key 的值变化,则保存
save 300 10:表示300 秒内如果至少有 10 个 key 的值变化,则保存
save 60 10000:表示60 秒内如果至少有 10000 个 key 的值变化,则保存

这个命令用来清空数据库,如果执行了,会生成 dump.rdb 文件

image-20210824162915339

1.2.3 退出触发

退出 redis 的时候也会触发持久化,生成 dump.rdb 文件

1.2.4 主从同步触发

在 Redis 主从复制中,当从节点执行全量复制操作时,主节点会执行 bgsave 命令,并将 RDB 文件发送给从节点,该过程会自动触发 Redis 持久化。

1.3 数据恢复

Redis 载入内存数据的工作是在启动的时候执行的,只要 Redis 服务器在启动时候检测到启动目录时有 RDB 文件存在,就会自动载入 RDB 文件。如果启动根目录没有 dump.rdb 文件,请先将 dump.rdb 文件移动到 Redis 的根目录。 验证 RDB 文件是否被加载 Redis 在启动时有日志信息,会显示是否加载了 RDB 文件,

1.4 COW 机制

要理解 RDB,就不得不提 操作系统的 COW 机制。这里提出一个问题,RDB 文件是由子进程去负责写入数据的,加入这个时候 RDB准备去持久化 数据 A的值为 1 ,但在这之前,主线程的请求把 数据 A 的值改成 2了,这时持久化 A 的时候写入 RDB 文件的是 1还是 2 呢?结论就是数据能被修改,但是写入 RDB 的数据是 1 ,是修改之前的数据。

下面我们来分析下这个过程:

执行 fork 创建子进程的时候,此时 子进程和父进程是共享一片内存数据的,子进程通过负责父进程的页表,引用的物理内存和父进程一样。那么这时候如果父类修改页表的数据,那么子进程读取的数据不就发生变化了吗?

image-20210824182459705

其实并不是这样的,这里我们就需要讲下 COW 了。 Redis 使用操作系统的多进程 COW (copy on write)机制来实现快照持久化。这个有什么好处呢?

所谓 COW 机制,指的是修改共享资源时,首先将共享资源 copy 一份,加锁后修改,再将原容器的引用指向新的容器,这样每个进程之间操作的内存就不是同一个,不会产生数据问题了。此时的指向如下:

image-20210824182815748

所以 子进程是可以保存原来的数据的,而此时的内存中 A 已经是2了,这值只能由下次的 RDB 触发的时候写入了。

以上就是 COW 的图形展示,缺点也有,COW 它会将内存 copy 一份,如果所有都改变的化,那所有的内存就需要 copy 一份,相当于内存减半,需要足够的内存才可以实现 COW。因此,快照,我们可以再做个定义,Redis 在 进程 RDB 触发的那一时刻,保存的就是那一时刻的数据,尽管那些数据在之后可能会改变,但是我保存的是 快照,时间定格在那一刻的数据,这就是快照的理解。

COW 机制总结:

fork一个子进程,只有在父进程发生写操作修改内存数据时,才会真正去分配内存空间,并复制内存数据,而且也只是复制被修改的内存页中的数据,并不是全部内存数据.

1.5 优缺点

优点:

  1. RDB非常适合做冷备,占用内存小,对容灾恢复比较有用。
  2. RDB对redis对外提供的读写服务,影响非常小,可以让redis保持高性能,因为redis主进程只需要fork一个子进程,让子进程执行磁盘IO操作来进行RDB持久化即可
  3. 相对于AOF持久化机制来说,直接基于RDB数据文件来重启和恢复redis进程,更加快速

缺点:

  1. RDB 容易丢失数据,一旦宕机,最近几分钟的数据都没了
  2. RDB 在fork 子进程生成大文件数据的时候,可能会导致redis 性能下降,造成服务器短暂暂停提供服务,一般为几毫米。

二、AOF 概述

除了 RDB 持久化功能之外,Redis 还提供了 AOF持久化功能。与 RDB 快照不同,它不是保存那一时刻的数据,而是把所有的命令追加到 AOF 文件中,服务器在启动的时候可以通过载入和执行 AOF 文件中保存的命令来还原服务器关闭之前的数据库状态。

image-20210825152356651

Redis 默认不开启 AOF 持久化方式,可通过配置文件更改。

image-20210825153137107

但此时还不能生效,还需要把 RDB 的save 命令注释掉,设置 save 为 “” ,然后重启 redis 测试即可

image-20210825155342788

随便输入几个命令 ,打开 appendonly 文件,AOF 文件保存的就是我们操作redis 的命令。

image-20210825162637920

2.1 持久化实现

AOF 的持久化实现可以分为命令追加(append)、文件写入(write)、文件同步(sync) 三个步骤。

2.1.1 命令追加

当 redis 使用 AOF 持久化的时候,服务器在执行完一个写命令之后,会以协议格式将执行的写命令追加到服务器状态的 aof_buf 缓冲区的末尾。

2.1.2 文件的写入和同步

为了提高文件的写入效率,在现代操作系统中,当用户调用 write 函数,将一些操作写入文件的时候,操作系统通常会将写入数据暂时保存在一个内存缓冲区里面,等到缓冲区的空间被填满,或者超过指定的时限之后,才真正的将缓冲区的数据写入到磁盘里面,例如下面这个流程图:

image-20210825161307734

加入缓冲区提高了写入的效率,但是也为写入数据带来了安全问题,因为如果计算机发生停机,那么保存在内存缓冲区里面的数据将会丢失,因此,操作系统提供了 fsync 和 fdatasync 两个同步函数,它们可以强制让操作系统立即将缓冲区中的数据写入到硬盘,从而保证安全。

对应正常情况下的同步数据是由 redis.conf 的 appendfsync 的设置策略来的,它决定了 AOF 持久化功能的效率和安全。

2.2 载入 AOF 文件(load)

前面也看了 AOF 的文件内容,它记录着重建数据库状态所需的所有写命令,所以服务器只要读入 AOF 文件把里面的命令重新执行一边就可以还原数据库的状态了。

Redis 载入 AOF 文件并还原数据库状态的详细步骤如下:

image-20210825163214315

1、创建一个不带网络连接的伪客户端:因为 Redis 的命令只能在客户端执行,所以创建了个不带网络连接的伪客户端执行本地的命令请求写入 AOF 文件到内存

2、从 AOF 文件中分析并读取出一条写命令

3、使用伪客户端执行被读出的写命令

4、重复执行,知道 AFO 的所有写命令都执行结束

2.3 AOF 重写(rewrite)

Redis 是先执行写命令然后把这个命令写入 AOF 缓冲区的。但在 Redis 长期运行的过程中,AOF 的日志会越来越长。如果宕机重启之后,重写载入 AOF

文件的写命令操作将会非常耗时,导致 Redis 在长时间无法对外提供服务,所以需要对 AOF 日志进行瘦身。所谓瘦身就是对命令的重写整理,让它变的别那么臃肿。

2.3.1 AOF 文件重写的实现

为了解决 AOF 文件变的臃肿的问题,Redis 可以创建一个新的 AOF 文件来替换现有的 AOF 文件这个过程叫做 AOF 文件重写。

但是,AOF 文件重写并不需要对现有的 AOF 文件进行读取、分析和写入操作,而是根据当前数据库状态来实现的。

例如,原先的 AOF 文件命令可以能是这样的,需要把这十条命令都保存下来。

image-20210825165227162

新的 AOF 文件不管老的 AOF 文件,它只需去当前数据库中读取到 当前的键的状态,例如当前的 list 键下有五个元素,它就可以写成一句:

rpush list a b c d e

而对五条 set 命令,只需获取到当前 k1 的值为 v5,即把这条命令复制到 新的 AOF 中,前面的废弃命令就不用管了。

这就是 AOF 重写瘦身是实现,它是针对当前数据库状态,对命令瘦身来的。

2.3.2 AOF 后台重写

前面的 RDB 写入数据的时候 通过 bgsave 来实现后台重写,而 AOF 也是需要进行后台重写的。

同样 Redis 在重写程序的时候会将它放入到子进程中执行,这样子进程进行 AOF 重写期间,Redis 进程可以继续处理客户端命令请求。但是一样也会遇到数据不一致问题,子进程在重写的过程中,数据发生了改变,造成数据库当前状态和重写的 AOF 文件中的状态不一致怎么办?

为了解决这个问题,Redis 服务器设置了一个 AOF 重写缓冲区,这个缓冲区在服务器创建子进程之后开始使用,当 Redis 服务器执行完一个写命令之后,它会同时将这个写命令发送给 AOF 缓冲区和 AOF 重写缓冲区。

image-20210825171612816

为什么要分开呢?因为 AOF 缓冲区记录的是所有命令,而 AOF 重写缓冲区是创建子进程后服务器执行的写命令,内容还是不一样的。

在子进程完成 AOF 文件重写之后,它会向父进程发送一个信号,父进程在接收到该信号之后,会调用一个信号处理函数,并执行以下工作:

  • 1、将 AOF 重写缓冲区中的所有内容写入新的 AOF 文件中,保证新 AOF 文件保存的数据库状态和服务器当前状态一致。
  • 2、对新的 AOF 文件进行改名,覆盖原有的 AOF 文件,完成替换
  • 3、继续处理客户端请求命令。

怎么说呢,重写的前提是为了保证数据库当前状态和 AOF 文件的数据一致,所以这里在创建子进程进行重写之后,会把后续的命令放入缓冲区中,尽管这些命令可能会重复,例如 set k1 v1 ;set k1 v2;但是为了保证一致性,在 新的 AOF 文件重写之后,需要把这些命令追加到文件的末尾,尽管它不符合精简的要求,但是数据一致性第一。

这就是 AOF 的后台重写,还是比较有意思的吧。

2.4 优缺点

优点:

AOF 只是追加日志文件,因此对服务器性能影响较小,速度比 RDB 要快,消耗的内存较少

缺点:

  • 1、AOF 方式生成的日志文件太大,即时通过 AFO 重写,文件的体积仍然很大
  • 2、重启载入恢复数据比 RDB 慢。

三、如何选择

重启 Redis 时,我们很少使用 RDB 来恢复内存状态,因为会丢失大量数据。我们通常 使用 AOF 日志载入,但是载入 AOF 日志的过程相对 RDB 要慢很多,那么我们应该怎么选择呢?

官网的建议是:

  • 如果你只做缓存的话,就可以不适用持久化
  • 如果能承受数分钟内的数据丢失,那可以只是用 RDB 持久化
  • Redis 重启会优先载入 AOF 文件来恢复,因为 RDB 更适合做备份数据库,快速重启,没有 AOF 潜在的 bug。

但是感觉说了等于没说,它并没有解决我们之前的问题,但是 Redis4.0 之后提供了一个新的持久化选项---混合持久化,它将 RDB 文件的内容和增量的 AOF 日志文件存放在一起。这里的 AOF 日志不再是 全量的日志,而是 自持久化开始到持久化结束的这段时间发生的增量 AOF 日志,通常这部分日志很小。

因此,采用这种模式就与官方的建议不一样了,它对它进行了优化。在 Redis 重启的时候,先加载之前的 RDB 文件的内容,然后再重放增量的 AOF 日志,就可以优化前面的 AOF 全量载入了,重启的效率大大的提升。

混合持久化配置如下:

aof-use-rdb-preamble yes  # yes:开启,no:关闭

【redis】redis AOF 持久化、COW (Copy On Write )机制来实现快照持久化 摘录自:《Redis深度历险 核心原理与应用实践》_钱文品.pdfRe dis 的数据全部在内存里,如果突然看机,数据就会全部丢失,因此必须有-种机制来保证 Redis 的数据不会因为故障而丢失,这种机制就是 Redis 的持久化机制如图 2-3 所示, Redis 的持久化机制有两种,第一种是快照,第二种是 AOF 日志。快照是一次全量备份, AOF 日志是连续的增量备份。快照是内存数据的二进制序列化形式,在存储上非常紧凑,而 AOF 日志记录的是内存数据修改的指令记录文本。 阅读详情

相关推荐

深入学习 Redis - 谈谈你对 Redis 的 RDB、AOF、混合持久化的了解吧?

bgsave 操作流程是通过 fork 创建子进程,让子进程来完成持久化操作~ 持久化就会把要生成的快照数据先保存到一个临时文件中,当这个快照生成完后,再删除之前的 rdb 文件,把新生成临时 rdb 文件名字改成刚才的删除的 rdb 文件的名字,然后使用新的文件替换旧的文件(rdb 对于 fork 之后的新数据,就置之不理了,这里要对比着 aof 来看).Ps:这后台处理是怎么做到的?并非如此,实际上这是一个 并发编程 的场景,此处 redis 使用的是 “多进程” 的方式来完成并发编程。

CYK_byte的博客 2148

【Redis7】Redis持久化机制之RDB

Redis持久化机制中的RDB(Redis Database)是一种将Redis在某个时间点的数据以快照形式保存到磁盘上的方法。原理:RDB通过创建一个包含Redis数据库所有键值对的快照文件(通常以.rdb作为文件后缀)来实现持久化。这个过程将内存中的数据以二进制格式转储到磁盘上,形成一个紧凑的文件,便于备份和迁移。三种触发方式配置触发,手动触发和后台触发手动触发:通过执行SAVE命令可以立即执行一次快照生成,但需要注意,该命令会阻塞Redis服务器,直到RDB文件创建完毕,

云泽野の编程日记 4495

图解Redis,谈谈Redis的持久化,RDB快照与AOF日志

Redis实战系列,打造精品专栏。

学Java,找哪吒 7379

Redis持久化之RDB

Redis提供了2个不同形式的持久化策略: RDB (redis database) AOF (append of file) 这篇文章则记录一下我学习RDB过程中的一些笔记,分享给大家。 RDB 模式 rdb是redis默认的持久化策略,在RDB模式下,可以将redis在内存中的数据库状态保存到磁盘里面(以内存快照的形式),避免数据意外丢失。 RDB持久化功能既可以手动执行,也可以通过配置文件定期执行。 RDB通过生成一个经过压缩的二进制文件,保存数据库状态,可以通过该文件进行还原。

不完美的红烧肉的博客 4845

第四篇:关于python程序打包的问题-找不到fsspec

这个问题困扰了我将近两天的时间一直找不到什么好的办法,甚至打算放弃。主要原因是身边没有可以述说的人,也没有可以请教的人。正在想要放弃的时候找到了解决办法。 打包后运行程序是这样的, 大概意思是找不见fsspec这个依赖,刚接触python说实话对于这些第三方库理解不是很到位,我的理解就是:类似于java程序中的jar包,程序找不见了。可怎么让他找见了,刚开始以为我自己没有安装fsspec,在cmd中进行了安装,结果如下图所示 很明显,已经安装并且安装目录都有,跟着网上的一些解决办法,在打包的时候把这.

weixin_47861710的博客 5865

【Qt串口调试助手】1.1 - Qt5编写串口调试助手,Qt串口编程

这章来学习串口数据流操作。仿照成品制作一个自己用Qt编写的串口助手。 1. 布局UI界面 创建QWidget工程,布局UI界面:拖入2个 Plain Text Edit,作为串口数据的接收显示和发送框。 拖入几个 Combo Box 、Label 和 Push Button,使用两个Widget进行布局。如下所示。 将接收区的 Plain Text Edit,属性勾选上 readOnly,使其运行时不会被人为的输入操作影响。 加入一些弹簧,使布局美观。(有必要可以加设置不能调整..

Mark_md的博客 9274

简明的图解Redis RDB持久化、AOF持久化

关注我,可以获取最新知识、经典面试题以及微服务技术分享 1.持久化 1.1 持久化简介 持久化(Persistence),持久化是将程序数据在持久状态和瞬时状态间转换的机制,即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。 1.2 redis持久化 redis为内存数据库,为了防止服务器宕机以及服务器进程退出后,服务器数据丢失,Redis提供了持久化功能,即将Redis中内存数...

Ccww_的博客 1467

DFT实训教程笔记2(bibili版本)- Scan synthesis practice

文章目录Scan synthesis practice 本博文是博主记录DFT实训教程的笔记版本,此笔记并没有对所有的知识进行记录,仅仅以自身的认知水平,来记录了一些部分笔记并加上了自己的理解。 Scan synthesis practice How to design scan clock structure? 假设一块chip里面有好几十个clock domain,如果每一个clock domain都用一个scan clock虽然会非常清晰,但是IO数目肯定不够用。 clock group: 1、no

ciscomonkey的博客 9082

Redis持久化机制RDB与AOF

参考:蚂蚁课堂 Redis因为某种原因的情况下宕机之后,数据是不会丢失的。原理就是持久化。EHCACHE(一级缓存,JVM中的)也会有持久化机制。缓存框架一般情况下都有基本的淘汰策略,持久化机制。 Redis持久化机制AOF,RDB(默认)。 1.RDB RDB他的本质上是全量同步。下面我们看一下RDB同步方案的图解 在redis中一共有两个进程一个是主进程它是专门监听我们redis请求的,另一个是fork子进程专门处理RDB数据同步的,它采用的方式是定时执行,在一段时间内他会将写入Redis文件的数据保

weixin_46120888的博客 1295

博途WinCC多语言项目配置指南

在博途(TIA Portal)中为WinCC项目配置多语言功能,需通过系统化步骤实现界面文本的动态切换。

dhaimo的博客 2472

活用QueryWrapper与@Select注解,构建MybatisPlus动态多表查询方案

本文深入探讨了如何结合MybatisPlus的QueryWrapper与@Select注解,构建高效灵活的动态多表关联查询方案。通过解析${ew.customSqlSegment}占位符机制,并设计通用的Service层封装,解决了复杂条件下多表查询的SQL拼接难题,显著提升了后台管理系统列表查询的开发效率与可维护性。

weixin_29291069的博客 271

Redis持久化深度解析:RDB与AOF双剑合璧

Redis作为高性能内存数据库,持久化机制是其核心能力之一。本文将深入剖析Redis的两种持久化方案——RDB与AOF,通过原理图解、配置实战和对比分析,助你构建高可靠缓存系统。

hangbingbihai的博客 941

31、Labview如何搭建程序框架?--状态机到数据采集等常用框架

本文废话不多,直接列举几种框架搭建方式,为了尽量向大家提供干货,本文直接从简介和手把手教搭建框架两方面来讲解,本文提到五种经典框架模式,学会这五种就很够了,分别是:状态机框架(State Machine)、生产者-消费者框架(Producer-Consumer)、主-从框架(Master-Slave)、事件驱动框架(Event-Driven)、分层架构(Layered Architecturep)。这个框架是基于状态机结构的。顾名思义“状态机”就是个“切换程序状态的机器”。本质是一个。

关注我,更多技术问题欢迎私聊~ 3103

图解 Redis丨这就是 RDB 快照,能记录实际数据的

摘要:所谓的快照,就是记录某一个瞬间东西,比如当我们给风景拍照时,那一个瞬间的画面和信息就记录到了一张照片。RDB 快照就是记录某一个瞬间的内存数据,记录的是实际数据。

华为云官方博客 2384

基于simulink的软开关技术的三相逆变器仿真

三相逆变器中的软开关技术(Soft Switching Techniques)旨在减少开关损耗,提高效率,并降低电磁干扰(EMI)。实现软开关通常涉及使用谐振电路或准谐振电路来确保开关器件在零电压(Zero Voltage Switching, ZVS)或零电流(Zero Current Switching, ZCS)条件下进行切换。下面将详细介绍如何在Simulink中进行基于软开关技术的三相逆变器仿真设计。

xiaoheshang_123的博客 162

SAP-ABAP:FI财务会计模块常用BAPI及核心用途实例说明

SAP FI模块的BAPI覆盖了从主数据管理、凭证过账到财务关账的全流程操作,是系统集成与自动化的重要工具。实际应用中需结合业务场景选择合适的BAPI,并严格遵循事务控制与校验规则。如需扩展功能,可通过BAdI或用户出口增强标准逻辑。

baidu_35680696的博客 1601

redis rdb aof区别_简明的图解Redis持久化:RDB和AOF

1.持久化1.1 持久化简介持久化(Persistence),持久化是将程序数据在持久状态和瞬时状态间转换的机制,即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。1.2 redis持久化redis为内存数据库,为了防止服务器宕机以及服务器进程退出后,服务器数据丢失,Redis提供了持久化功能,即将Redis中内存数据持久化到磁盘中。Redis 提供了不同级别的持久化方式:RDB持...

weixin_39604280的博客 100

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

图解Redis RDB持久化、AOF持久化

1.持久化 1.1 持久化简介 持久化(Persistence),持久化是将程序数据在持久状态和瞬时状态间转换的机制,即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。 1.2 redis持久化 redis为内存数据库,为了防止服务器宕机以及服务器进程退出后,服务器数据丢失,Redis提供了持久化功能,即将Redis中内存数据持久化到磁盘中。Redis 提供了不同...

芒果不是程序猿v: 的博客 399

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

redis aof 备份和恢复_图解redis的RDB和AOF持久化工作原理

我们已经知道对于一个企业级的redis架构来说,持久化是不可减少的企业级redis集群架构:海量数据、高并发、高可用持久化主要是做灾难恢复,数据恢复,也可以归类到高可用的一个环节里面去比如你redis整个挂了,然后redis就不可用了,你要做的事情是让redis变得可用,尽快变得可用重启redis,尽快让它对外提供服务,但是就像上一讲说,如果你没做数据备份,这个时候redis启动了,也不...

weixin_39942995的博客 117

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

REDIS的RDB持久化机制和AOF持久化机制的原理及知识梳理【一篇文章,深入浅出,so easy】

1.为什么redis需要使用持久化机制? · 这个一句话带过即可,redis做缓存,贼快,基于内存操作,假设现在redis中有1000w条缓存数据,一旦redis出现宕机,那么此时缓存中的数据就会基于内存全部消失,所有的请求直接打入MySQL,此时的MySQL在高并发的情况下,宕机的可能性几乎4个9; redis持久化机制恢复故障的意义如图: 2.redis中的持久化机制有哪几种?分别有什么好处?这两个持久化机制应该如何选择呢? · RDB持久化机制 1.RDB本身redis默认就是开启的,可以进入r

weixin_46950473的博客 1883

vuex状态持久化_简明的图解Redis RDB持久化、AOF持久化

关注我,可以获取最新知识、经典面试题以及微服务技术分享1.持久化1.1 持久化简介持久化(Persistence),持久化是将程序数据在持久状态和瞬时状态间转换的机制,即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。1.2 redis持久化redis为内存数据库,为了防止服务器宕机以及服务器进程退出后,服务器数据丢失,Redis提供了持久化功能,即将Redis中内存数据持久化到磁...

weixin_39798031的博客 151

《面试官之你说我听》:简明的图解Redis RDB持久化、AOF持久化

《提升能力,涨薪可待篇》 《面试知识,工作可待篇》 《实战演练,拒绝996篇》 如果此文对你有帮助、喜欢的话,那就点个赞呗,点个关注呗! 1.持久化 1.1 持久化简介 持久化(Persistence),持久化是将程序数据在持久状态和瞬时状态间转换的机制,即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。 1.2 redis持久化 redis为...

微赚开发者技术分享博客 182

Redis之持久化(RDB和AOF)

Redis 是内存数据库,即数据存储在内存。如果不将内存中的数据保存到磁盘,一旦服务器进程退出,服务器中的数据也会消失。这样会造成巨大的损失,所以 Redis 提供了持久化功能。RDB,即 Redis DataBase在指定的时间间隔内将内存中的数据集快照写入磁盘。也就是 Snapshot 快照,恢复时是将快照文件直接读到内存里。Redis会单独创建(fork)一个子进程来进行持久化。Fork 的作用是复制一个与当前进程一样的进程。

浩泽学编程的博客 433
上一篇: Redis指南【4】 详解 redis 配置
下一篇: Redis指南【6】一文搞定主从复制
加班不秃顶
博客等级 码龄7年 1822粉丝 599原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值