如何为高级 Azure Redis 缓存配置数据暂留

Azure Redis 缓存具有不同的缓存产品(包括群集、持久性和虚拟网络支持等高级层功能),使缓存大小和功能的选择更加灵活。 本文介绍如何配置高级 Azure Redis 缓存实例中的暂留。

有关其他高级缓存功能的信息,请参阅 Azure Redis 缓存高级层简介

什么是数据暂留?

Redis 暂留可让你保留存储在 Redis 中的数据。 还可以获取快照并备份数据,以便在出现硬件故障时进行加载。 这相对于基本层或标准层是一项巨大优势,因为基本层或标准层将所有数据存储在内存中,在出现故障的情况下,如果缓存节点停机,则可能导致数据丢失。

Azure Redis 缓存使用以下模型提供 Redis 暂留:

  • RDB 暂留 - 配置 RDB(Redis 数据库)暂留以后,Azure Redis 缓存会按照可配置的备份频率,将 Redis 缓存的快照以 Redis 二进制格式保留在磁盘上。 如果发生了灾难性事件,导致主缓存和副缓存都无法使用,则会使用最新快照重新构造缓存。 详细了解 RDB 暂留的优点缺点
  • AOF 暂留 - 配置 AOF(仅追加文件)暂留后,Azure Redis 缓存将每个写入操作保存到日志,此日志每秒至少保存到 Microsoft Azure 存储帐户一次。 如果发生了灾难性事件,导致主缓存和副缓存都无法使用,则会使用存储的写入操作重新构造缓存。 详细了解 AOF 暂留的优点缺点

可在缓存创建过程中通过“新建 Redis 缓存”边栏选项卡或者在现有高级缓存的“资源”菜单上配置暂留。

若要创建高级缓存,请登录到 Azure 门户,并单击“创建资源” > “数据库” > “Redis 缓存”。

创建缓存

Note

除了在 Azure 门户中创建缓存以外,也可以使用 Resource Manager 模板、PowerShell 或 Azure CLI 创建。 有关创建 Azure Redis 缓存的详细信息,请参阅创建缓存

若要配置高级功能,请先在“定价层”下拉列表中选择一个高级定价层。 若要详细了解每个定价层,请单击“查看全部定价详细信息”,并从“选择你的定价层”边栏选项卡中选择一个定价层。

选择定价层

选中某个高级定价层后,请单击“Redis 暂留”。

Redis 暂留

下一部分中的步骤介绍如何在新的高级缓存上配置 Redis 暂留。 配置 Redis 暂留后,单击“创建”以创建具有 Redis 暂留的新高级版缓存。

启用 Redis 暂留

通过选择“RDB”或“AOF”暂留可在“Redis 数据暂留”边栏选项卡上启用 Redis 暂留。 对于新缓存,可以按前一部分中所述,在创建缓存过程中访问此边栏选项卡。 对于现有缓存,可从缓存的“资源菜单”访问“Redis 数据暂留”边栏选项卡。

Redis 设置

配置 RDB 暂留

若要启用 RDB 暂留,请单击“RDB”。 若要在以前启用的高级缓存上禁用 RDB 暂留,请单击“禁用”。

Redis RDB 暂留

若要配置备份间隔,请从下拉列表选择“备份频率”。 选项包括“15 分钟”、“30 分钟”、“60 分钟”、“6 小时”、“12 小时”和“24 小时”。 在上一个备份操作成功完成以后,此时间间隔就会开始倒计时,同时会启动新的备份。

单击“存储帐户”以选择要使用的存储帐户,并从“存储密钥”下拉列表中选择要使用的“主密钥”或“辅助密钥”。 必须选择与缓存处于相同区域的存储帐户,建议选择“高级存储”帐户,因为高级存储的吞吐量较高。

Important

如果重新生成了暂留帐户的存储密钥,必须从“存储密钥”下拉列表中重新配置所需密钥。

单击“确定”可保存暂留配置。

一旦备份频率间隔时间已过,则会启动下一次备份(或新缓存的首次备份)。

配置 AOF 暂留

若要启用 AOF 暂留,请单击“AOF”。 若要在以前启用的高级缓存上禁用 AOF 暂留,请单击“禁用”。

Redis AOF 暂留

若要配置 AOF 暂留,请指定“第一个存储帐户”。 此存储帐户必须与缓存处于相同区域,建议选择“高级存储”帐户,因为高级存储的吞吐量较高。 也可配置名为“第二个存储帐户”的其他存储帐户。 如果配置第二个存储帐户,写入副本缓存操作会写入到第二个存储帐户。 对于每个配置的存储帐户,请从“存储密钥”下拉列表选择要使用的“主密钥”或“辅助密钥”。

Important

如果重新生成了暂留帐户的存储密钥,必须从“存储密钥”下拉列表中重新配置所需密钥。

启用 AOF 暂留后,写入缓存操作会保存到指定的存储帐户(如果配置了第二个存储帐户,还可指定该帐户)。 如果灾难性故障导致主缓存和副本缓存均无法使用,则使用存储的 AOF 日志重新生成缓存。

暂留常见问题

以下列表包含有关 Azure Redis 缓存暂留常见问题的解答。

RDB 暂留

AOF 暂留

能否在此前已创建的缓存的基础上启用保留?

是的,可以在创建缓存时或者在现有高级缓存上配置 Redis 暂留。

是否可以同时启用 AOF 暂留和 RDB 暂留?

不可以,只能分别启用 RDB 或 AOF,不能同时启用二者。

应该选择哪个暂留模型?

AOF 暂留将每个写入保存到日志,与 RDB 暂留相比,这对吞吐量有一些影响,因为 RDB 暂留基于配置的备份间隔保存备份,对性能产生的影响非常小。 如果主要目标是最大程度减少数据损失,并且可应付缓存吞吐量下降,请选择 AOF 暂留。 如果希望在缓存上保持最优吞吐量,但仍希望使用一种数据恢复机制,请选择 RDB 暂留。

有关使用 AOF 暂留时的性能详细信息,请参阅 AOF 暂留是否影响缓存吞吐量、延迟或性能?

如果我缩放到不同大小并还原了缩放操作之前生成的备份,会发生什么情况?

对于 RDB 暂留和 AOF 暂留:

创建缓存后是否可更改 RDB 备份频率?

可以,可在“Redis 数据暂留”边栏选项卡上更改 RDB 暂留的备份频率。 有关说明,请参阅配置 Redis 暂留

为何我的 RDB 备份频率为 60 分钟,而两次备份的间隔却超过 60 分钟?

RDB 暂留备份频率间隔在先前备份过程已成功完成后才会开始。 如果备份频率为 60 分钟,而备份过程需要 15 分钟才能成功完成,则在上一次备份开始以后,要再过 75 分钟才会开始下一次备份。

进行新备份以后,旧的 RDB 备份会发生什么情况?

除最新备份外的所有 RDB 暂留备份会被自动删除。 这种删除可能不会即刻发生,但旧备份是不会无限期保留下去的。

是否应使用第二个存储帐户?

如果认为缓存上的设置操作高于预期,则应将第二个存储帐户用于 AOF 暂留。 设置辅助存储帐户有助于确保缓存不会达到存储带宽限制。

AOF 暂留是否影响缓存吞吐量、延迟或性能?

缓存低于最大负载(CPU 和服务器负载皆低于 90%)时,AOF 暂留对吞吐量产生约 15% - 20% 的影响。 缓存处于这些限制以内时不存在延迟问题。 但是,启用 AOF 时缓存将更快达到这些限制。

如何删除第二个存储帐户?

可通过将第二个存储帐户设置为与第一个存储帐户相同的方式来删除 AOF 暂留辅助存储帐户。 有关说明,请参阅配置 AOF 暂留

什么是重写?重写对缓存有何影响?

在 AOF 文件足够大时,重写会自动处于缓存上的队列中。 重写使用创建当前数据集所需的最小操作集来重设 AOF 文件大小。 重写期间会很快达到性能限制,尤其是在处理大型数据集时。 AOF 文件越大,重写发生频率越低,但是如果发生则会需要较长时间。

缩放启用 AOF 的缓存时会出现什么情况?

如果缩放时的 AOF 文件非常大,则缩放操作所花时间应长于预期,因为在缩放结束后才重载文件。

有关缩放的详细信息,请参阅如果我缩放到不同大小并还原了缩放操作之前生成的备份,会发生什么情况?

AOF 数据如何在存储中进行整理?

AOF 文件中存储的数据在每个节点分为多个页 Blob,以便提升将数据保存至存储的性能。 下表介绍每个定价层使用的页 Blob 数量:

高级层 Blob
P1 4 个/分片
P2 8 个/分片
P3 16 个/分片
P4 20 个/分片

启用群集时,缓存中的每个分片具有自己的页 Blob 集,如上表所示。 例如,具有 3 个分片的 P2 缓存在 24 个页 Blob 之间(每个分片 8 个页 Blob,共 3 个分片)分配其 AOF 文件。

重写后,存储中存在 2 个 AOF 文件集。 重写在后台进行,并附加到第一个文件集,而重写期间发送至缓存的设置操作会附加到第二个文件集。 重写期间会暂时存储备份以防发生故障,但是备份在重写结束后会立即删除。

后续步骤

了解如何使用更多的高级缓存功能。