今天,我将与您交谈,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