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

REDIS持久性-AOF / RDB详细信息(阅读大量工厂报价后)

时间:2023-03-05 23:29:18 网络应用技术

  Redis非常快。大部分原因是REDIS的数据存储在内存中。由于在内存中,当服务器关闭或关闭电源时,数据将丢失,因此REDIS提供了两种机制,以确保保证它不会因故障而丢失。这种机制称为redis的持久性机制。

  Redis的持久性机制有两种类型:

  RDB(REDIS数据库)是指在指定的时间间隔中磁盘中内存中数据集的短期照片。RDB是内存快照的方式(内存数据的二进制序列化)。为数据快照的完整尺寸备份。

  优势:

  缺点:

  AOF(仅附加文件)是记录所有指令(写入操作),以通过独立日志文件修改内存,并在重新启动时通过在AOF文件中执行REDIS命令来恢复数据。AOF可以解决耐用的真实时间问题,这是重新持续机制中的主流持久解决方案(遵循-up谈论4.0之后的混合和持久性)。

  优势:

  缺点:

  官方网站地址

  http://www.redis.io

  当RDB持久性方案备份时,REDIS将形成一个单独的持久过程过程。数据将写入临时文件中,并在持久完成后替换旧的RDB文件。遵循持久过程,主过程(向客户端提供服务的过程)不参与IO操作。这可以确保REDIS服务的高性能。RDB持久性机制适合使用数据完整性,但不高,而是追求有效的恢复。

  以下显示了RDB的持久性:

  上面提到的是,在RDB的持续存在期间,主要过程将是对RDB备份负责的分叉。这是叉子的简要介绍

  在Redis中,RDB的持久性是充分利用这项技术。当Redis调用持久性期间子过程的GLIBC函数时,它对持续工作完全负责,以便父母的过程可以继续向客户提供服务。与父过程相同的内存(REDIS的主要过程);当持久性过程时,客户端的请求会修改内存中的数据。目前,数据段页面将通过牛机制分开,也就是说,复制一块内存以修改主过程。

  RDB触发器的规则分为两类,即手动触发和自动触发器:

  自动触发器:

  手动触发器:

  以下内容在RDB的REDIS持续机制中的自动触发机制中引入了配置触发规则,以触发RDB,其中涉及RDB规则的配置,文件存储路径配置,文件名称配置,文件压缩配置和文件完整性验证配置。

  2.3.1配置规则触发

  配置规则如下说明。

  保存3600 1->在3600秒内,修改了1个键,触发RDB保存300 100-> 300秒,该键已修改100键,触发RDB

  在60秒内保存60 10000->,修改了10,000个密钥,触发了RDB

  我们可以在REDIS的安装目录中看到dump.rdb文件。如果看不到,请连接到客户端执行一次关闭,这是背面

  关闭自动触发规则,遵循-up将来会描述

  REDIS将使用LZF算法来压缩REDIS的RDB文件,该文件将消耗某些CPU计算资源,但它将带来节省空间

  REDIS默认使用CRC64算法来验证RDB文件的完整性以确保RDB文件的完整性

  2.3.2关闭触发器关闭以触发Redis的RDB持久机制非常简单。我们可以在客户端上执行关闭。

  2.3.3冲洗器触发以触发它。首先,您必须在这里特别注意。Flushall是一个库运行。它是一个dump.rdb文件。不要阅读博客作者的文章。否则,当重新启动重新启动时,在最后一次备份备份时,数据将返回到数据,而Flushall执行的执行指令的执行指令指令说明冲突是冲突。

  为了证明此文件不保留数据,我专门编写了一个脚本来测试:

  用批处理编写脚本文件

  文件授权

  此时,请检查dump.rdb

  执行Flushall,然后再次检查,RBD文件为空

  手动触发RDB持久性可以使用Save命令和BGSAVE命令。两个命令之间的区别如下。

  保存:执行保存指令,阻止REDIS的其他操作,将导致Redis不响应客户的请求,因此不建议进行。

  BGSAVE:执行BGSAVE指令,在后台重新定位到快照保护操作。目前,Redis仍然可以响应客户的请求。

  在实际的生产环境中,我们通常不使用主节点主来进行持久备份。我们将从REDIS服务器上的服务器中进行长时间的RDB备份。在某种情况下,网络分区或某些节点下降甚至是硬件损坏。

  作为操作和维护或建筑师,李Ziyi认为他应该定期通过脚本转换Redis文件以备份备份。这种双重保险更可靠。在紧急情况下,它也是一种多人的解决方案。

  当REDIS配置文件打开时,当AOF持久性方案备份时,客户端请求的所有请求将添加到AOF buffer.in aof文件中,当AOF文件达到重写策略的阈值配置时,REDIS将重写AOF日志文件并将重量减为AOF日志文件。重新启动时,通过加载AOF日志文件来恢复数据。

  3.2.1基本配置AOF默认为默认值,默认值是附录否,您需要将其修改为apendonly是

  AOF配置文件的名称默认

  配置文件的地址可以通过在Redis客户端执行config get dir获得,并且其保存路径与RDB一致

  3.2.2同步频率配置AOF log以文件的形式存在。实际上,当程序写入AOF日志文件时,实际上将内容写入内核分布的存储缓冲区作为文件描述。内核将是异步的。将缓冲区中的数据删除到磁盘上。如果缓冲区中的数据无法刷回磁盘,则服务器已关闭,并且这些数据将丢失。

  因此,REDIS提供的Fsync(INT FID)通过调用Linux操作系统glibc将指定文件的内容迫使内核缓冲区恢复到磁盘,以确保丢失缓冲区中的数据。一个IO操作,比Redis的性能慢,因此不能经常执行。

  Redis配置文件中有三种刷新缓冲区配置的类型:

  appendfsync总是

  每当Redis写操作时,都会写入AOF日志中。从理论上讲,Linux操作系统无法携带此配置,因为REDIS的并发远远超过了Linux操作系统提供的最大刷新频率。即使Redis写作操作相对较小,此配置也非常消耗,因为它涉及IO操作,因此基本上不使用此配置。

  appendfsync aurysec

  将缓冲区中的数据刷新到AOF文件。REDIS配置文件中的默认策略与性能和数据完整性的折扣解决方案兼容。这种配置,理论上丢失的数据约为一秒钟。

  Appendfsync No

  REDIS流程不会主动刷新缓冲区中的数据到AOF文件,而是直接移交给操作系统进行判断。不建议进行此操作,并且数据丢失的可能性很高。

  请注意将缓冲区的数据刷到磁盘以配置以下内容,配置为否,不是是

  3.2.3 AOF修复函数AOF持续机制与RDB持久机制的恢复相同。您只需要将备份文件放置在REDIS工作目录中,并且在启动时,REDIS会自动加载。AOF持久机制在AOF文件异常时提供了恢复的功能。此功能通常在AOF文件损坏的场景中使用。

  测试,REDIS服务中的清晰数据

  数据输入

  AOF日志文件将每秒刷新一次。目前,数据已写入附录。

  打开我们可以清楚地读取AOF文件内容的文件,请参阅REDIS的指令序列

  此时,人工数据破坏

  重新开始,发现它无法启动(我配置的其他名称)

  执行redis-check- aof-fix https://www.shouxicto.com/appendonly.aof修复AOF日志文件

  在维修过程中将丢失一些数据

  连接客户以查看数据

  3.2.4当AOF重写前面提到的缺点时,据说AOF属于存储REDIS写作说明的其他日志形式。关键是编写了10,000次,但最终被删除。这种情况不仅占据了内存,而且在恢复时也会导致非常缓慢。因此,Redis提供了一种重写机制来解决此问题。重写Redis的AOF持久性机制后,仅保存用于还原数据的最小指令集。如果我们想手动触发它,我们可以使用以下说明:

  REDIS 4.0后的重写使用RDB快照和AOF指令缝线的方法。AOF文件的头是RDB快照的二进制形式,而尾巴是生成快照后写作操作的指示。

  重写AOF文件时,它将对REDIS的性能产生一定的影响,因此不能自动重写。REDIS提供了两个配置指示器来自动重写AOF。只有这两个指标同时同时相遇。当它重写时:

  自动 - AOF-REWRITE-Stentage 100:它是指文件内存的两倍到达原始内存

  自动AOF-REWRITE-MIN大小64MB:指文件写的最小内存大小

  AOF重写过程如下:

  REDIS 4.0的大多数使用方案都不会使用RDB或AOF来制作持久机制,而是要考虑两者的优势。原因是,尽管RDB很快,但它将丢失更多数据并且无法保证数据数据正直;尽管AOF可以尽可能确保数据完整性,但绩效确实是一种批评,例如替换恢复数据。

  它的日志文件结构如下:

  混合持久性通过aof-use-rdb-preamble是肯定的,REDIS 4.0或更高版本默认打开

  测试,让我们先插入一些钥匙,然后执行bgrewriteaof以触发AOF持久性,然后插入一些密钥

  目前将看到以下效果,该效果验证了混合持久性的方法

  最后,总结这两个更好?

  介绍了Redis的官方网站:

  如果您不明白,请查看Redis中文网站的引入:

  引入了Redis官方网站关于持久性的网站

  https://redis.io/topics/persistence

  REDIS中国网站的持续介绍

  http://redis.cn/topics/persistence.html