当前位置: 首页 > 网络应用技术

新来了,您是否说Redis的耐用机制可以解决我们遇到的业务问题?

时间:2023-03-06 16:41:12 网络应用技术

  今天,我将与您交谈,Redis的耐用机制,在实际业务中,我们应该如何选择一种更合理的方法来更好地解决我们的问题

  持久性:REDIS是一个内存数据库。数据存储在内存中。为了避免流程的退出,数据将永久丢失,并且REDIS中的数据应以某种形式(数据或命令)从内存到硬盘保存;下一次重新启动时,使用数据恢复来实现耐用的文件。此外,为了执行灾难备份,您可以将耐用的文件复制到远程位置

  由于Redis的数据可以保存在磁盘上,因此这是什么过程?

  必须有以下五个过程:

  (1)将写操作发送到服务器(客户端内存中的数据)。

  (2)数据库服务器接收所请求的数据(内存侧内存中的数据)。

  (3)服务器调用系统调用写入并将数据写入磁盘(数据位于系统内存的缓冲区中)。

  (4)操作系统将缓冲区中的数据传输到磁盘控制器(数据缓存在磁盘中)。

  (5)磁盘控制器将数据写入磁盘的物理介质(数据确实落在磁盘上)。

  这五个过程是在理想条件下的正常存储过程,但是在大多数情况下,我们的机器等将有各种故障。这里有两种情况。

  (1)REDIS数据库失败。只要执行第三步,就可以将其保存很长时间。其余的两个步骤由操作系统为我们完成。

  (2)操作系统失败,上述5个步骤必须完成。

  为了应对上述5个步骤,REDIS提供了两种不同的持久方法:RDB(REDIS数据库)和AOF(仅APEND文件)

  1.2.1概念RDB持久性是将数据保存在当前过程中,以将快照保存到硬盘上(因此也称为快照持久性),并且保留的文件后缀为RDB;重新启动REDIS时,您可以读取Express文件以还原数据。

  1.2.2 REDIS中RDB的触发器和原理分为两种类型:指令手动触发和redis.conf配置自动触发器

  该指令手动触发保存命令和BGSAVE命令可以生成RDB文件

  自动触发器

  配置实际上非常简单。在这里,耐用的时间策略意味着什么?

  以下内容类似,那么为什么需要配置这么多规则?因为Redis在每个时间段内的阅读和写作请求绝对不平衡。为了平衡性能和数据安全性,我们可以自由触发备份。因此,这是基于REDIS编写的合理配置。

  1.2.3手动实施BGSAVE方法

  自动触发器

  1.2.4 RDB摘要优势

  1.高执行效率,适用于大规模数据的备份恢复。自动备份不会影响主线程工作。

  2.备份文件占据很小的空间。它的备份是一个数据快照,它比AOF小。

  坏处

  1.可能会造成一些数据丢失。因为它会自动备份,如果修改的数据数量不足以触发自动备份,而诸如电源故障之类的异常功率,因此无法正常关闭REDIS,因此没有触发结束备份。写作操作将丢失。

  2.通过叉进程自动备份备份操作,叉进程将完全完成当前的内存数据,因此该过程占据的空间是原始的两倍,这可能导致内存中的内存不足。

  1.3.1概念(默认不开放)

  AOF功能:

  1.3.2 AOF持续实现

  如上图所示,可以将AOF持久函数的实现分为命令,文件写入(写),文件同步(SYNC),文件重写和重新启动加载(加载)。该过程如下:

  1.3.2打开

  1.3.4添加AOF耐用函数打开时添加的方向,在REDIS执行写作命令后,它将以协议格式(即RESS,即REDIS客户端的通信协议和服务器交互))。将执行。在REDIS服务器维护的AOF缓冲区末端。

  例如,以下格式将SET mykey myValue的命令记录在AOF缓冲区中。

  REDIS协议格式不再在本文中描述。AOF直接使用文本协议格式的原因是,必须添加所有写作命令以添加操作,并且该协议格式直接用于避免辅助处理开销。

  1.3.5文件编写和同步(触发)REDIS每次redis结束一个事件周期时,都会调用该功能以确定是否需要编写和同步到AOF文件中的AOF缓存区域中的内容。

  函数的行为由redis.conf配置中选项的值确定。该选项有三个选项,即::

  1.3.6 AOF DATA会恢复AOF文件中重建REDIS数据所需的所有写作命令,因此,只要REDIS读取并重新执行保存在AOF文件中的写作命令,就可以在REDIS关闭之前还原状态。

  REDIS的详细步骤读取AOF文件并恢复数据库的状态如下:

  上述步骤完成后,将完全恢复由AOF文件保留的数据库状态。

  1.3.7 AOF“重建”问题分析:AOF使用文件附加方法。REDIS运行很长时间会发生什么问题?

  概念:为了解决AOF文件卷扩展的问题,REDIS提供了AOF文件重写(重写)策略

  如上图所示,在重写之前要记录的键状态。AOF文件必须保存使用五个命令,在重写后,您只需要保存一个命令即可。

  AOF文件的重写不需要任何现有AOF文件的读取,分析或写作操作,而是通过读取服务器的当前数据库状态来实现。首先读取数据库中密钥的当前值,然后使用记录键值对的命令,而不是上一个记录值对的多个命令。这是AOF重写函数的原理。

  触发:重写的触发机制主要是:

  stat appendonly.aof查看AOF文件

  1.3.8 AOF重写原则,AOF重写功能将执行很多写作操作。调用该函数的线程将被阻止很长时间,因此REDIS在子过程中执行AOF重写操作。

  在整个AOF背景的重写期间,仅在执行执行时,只有信号处理函数才能阻止REDIS主进程。在其他时候,AOF背景重写不会阻止主过程。

  如果服务器上同时有RDB文件和AOF文件,我应该加载谁?

  通过上述分析,我们都知道RDB的快照和AOF重写需要分叉。这是一个重量级操作,将阻止Redis。因此,为了不影响Redis的主要过程响应,我们需要尽可能减少障碍物。

  在线练习经验

  这是Redis的其他相关内容,欢迎点击

  我的女友问我什么是多级缓存?为什么我会惊呆的!交叉路口

  哦,天哪,事实证明,微博,微信,购物车和绘图程序使用了数据结构!

  原始:https://juejin.cn/post/7098254410723262478