Redis 引擎版本 - 适用于 Redis 的 Amazon MemoryDB
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Redis 引擎版本

本部分介绍支持的 Redis 引擎版本。

适用于 Redis 的 MemoryDB 版本 7.1(增强版)

适用于 Redis 的 MemoryDB 7.1 版本增加了对特定区域预览版的矢量搜索功能的支持,还增加了关键错误修复和性能增强。

  • 矢量搜索功能:矢量搜索可以与现有的 MemoryDB 功能一起使用。不使用矢量搜索的应用程序不会受到其存在的影响。Redis 7.1 及以上版本的 MemoryDB 中提供矢量搜索预览,适用于以下区域:美国东部(弗吉尼亚北部和俄亥俄州)、美国西部(俄勒冈)、欧洲(爱尔兰)和亚太地区(东京)。有关如何启用矢量搜索预览和相关功能的信息,请参阅此处的文档。

注意

适用于 Redis 的 MemoryDB 版本 7.1 与 OSS Redis v7.0 兼容。有关 Redis 7.0 版本的更多信息,请参阅 Redis 上的 Redis 7.0 发行说明。 GitHub

MemoryDB for Redis 版本 7.0(加强版)

MemoryDB for Redis 7.0 增加了多项改进和对新功能的支持:

  • Redis Functions:MemoryDB for Redis 7 增加了对 Redis Functions 的支持,并提供了托管体验,使开发人员能够使用存储在 MemoryDB 集群上的应用程序逻辑执行 LUA 脚本,而无需客户端在每次连接时都将脚本重新发送到服务器。

  • ACL 改进:MemoryDB for Redis 7 增加了对下一版本的 Redis 访问控制列表(ACL)的支持。借助 MemoryDB for Redis 7,客户端现在可以为 Redis 中的特定键或键空间指定多组权限。

  • 分片发布/订阅:MemoryDB for Redis 7 增加了对在启用集群模式(CME)下运行 MemoryDB 时以分片方式运行 Redis 发布/订阅功能的支持。Redis 发布/订阅功能使发布者能够向频道上任意数量的订阅者发布消息。借助适用于 Redis 的 Amazon MemoryDB 7,通道可绑定到 MemoryDB 集群中的分片,无需在分片之间传播通道信息。这会提高可扩展性。

  • 增强型 I/O 多路复用:MemoryDB for Redis 版本 7 引入了增强型 I/O 多路复用,此功能为与 MemoryDB 集群有着许多并发客户端连接的高吞吐量工作负载提供了更高的吞吐量和更短的延迟。例如,与 MemoryDB for Redis 版本 6 相比,当使用由 r6g.4xlarge 节点组成的集群并运行 5200 个并发客户端时,吞吐量(每秒读写操作数)可以提高多达 46%,P99 延迟可减少多达 21%。

有关 Redis 7.0 版本的更多信息,请参阅 Redis 上的 Redis 7.0 发行说明。 GitHub

MemoryDB for Redis 版本 6.2(加强版)

MemoryDB 推出了新版本的 Redis 引擎,其中包括 使用访问控制列表(ACL)对用户进行身份验证、自动版本升级支持、客户端缓存和重要的操作改进。

Redis 引擎版本 6.2.6 还引入了对原生 JavaScript 对象表示法 (JSON) 格式的支持,这是一种在 Redis 集群中对复杂数据集进行编码的简单、无架构的方法。借助 JSON 支持,您可以帮助基于 JSON 运行的应用程序利用性能和 Redis API。有关更多信息,请参阅 开始使用 JSON。还包括与 JSON 相关的指标JsonBasedCmds,该指标 CloudWatch 用于监控此数据类型的使用情况。有关更多信息,请参阅 MemoryDB 的指标

从 Redis 6 开始,MemoryDB 将为每个 Redis OSS 次要版本提供单一版本,而不提供多个补丁版本。其旨在最大限度减少不得不从多个次要版本中选择时所产生的混淆和歧义。MemoryDB 还将自动管理处于运行状态下集群的次要版本和补丁版本,确保提高性能和增强安全性。这将通过服务更新活动借助标准客户通知渠道进行处理。有关更多信息,请参阅 MemoryDB for Redis 中的服务更新

如果您在创建过程中未指定引擎版本,则 MemoryDB 将自动为您选择首选 Redis 版本。另一方面,如果您使用 6.2 指定引擎版本,则 MemoryDB 将自动调用可用的 Redis 6.2 首选补丁版本。

例如,当您创建集群时,可以将 --engine-version 参数设置为 6.2。则在创建时,系统将会使用当前可用的首选补丁版本启动集群。任何包含全文引擎版本值的请求都将被拒绝,同时引发异常且进程会失败。

当调用 DescribeEngineVersions API 时,EngineVersion 参数值将设置为 6.2,实际全文引擎版本会返回在 EnginePatchVersion 字段中。

有关 Redis 6.2 版本的更多信息,请参阅 Redis 上的 Redis 6.2 发行说明。 GitHub

升级引擎版本

默认情况下,MemoryDB 自动管理正在运行状态中的集群的补丁版本。此外,如果您将集群的 AutoMinorVersionUpgrade 属性设为 false,则可以选择退出自动次要版本升级。但是,您不能选择退出自动补丁版本更新。

您可以控制为集群提供支持的符合协议标准的软件是否及何时升级到自动升级启动之前的 MemoryDB 所支持的新版本。此级别的控制使您能够与特定版本保持兼容、在生产中部署进行之前使用应用程序测试新版本以及根据自己的条件和时间表执行版本升级。

您可以通过以下方式对您的集群启动引擎版本升级:

请注意以下几点:

  • 您可以升级到较新的引擎版本,但不能降级到较早的引擎版本。要使用较早的引擎版本,必须删除现有的集群,并使用较早的引擎版本重新创建。

  • 我们建议定期升级到最新的主要版本,因为大多数主要改进都不会向后移植到旧版本。随着 MemoryDB 将可用性扩展到新 Amazon 区域,MemoryDB 支持新区域当时的两个最新MAJOR.MINOR版本。例如,如果启动了一个新 Amazon 区域,并且最新的 Redis 版 M MAJOR.MINOR emoryDB 版本为 7.0 和 6.2,那么适用于 Redis 的 MemoryDB 将在新区域中支持 7.0 和 6.2 版本。 Amazon 随着 MemoryDB for Redis 的更新 MAJOR.MINOR 版本的发布,MemoryDB 将继续加大对新发布的 MemoryDB for Redis 版本的支持。要详细了解如何为 MemoryDB 选择区域,请参阅 支持的区域和端点

  • 引擎版本管理的设计使您可以尽可能多地控制修补的发生方式。但是,如果发生系统或软件中存在严重安全漏洞这种不太可能发生的情况,MemoryDB 保留代表您修补集群的权利。

  • MemoryDB 将为每个 Redis OSS 次要版本提供单一版本,而不提供多个补丁版本。其支持旨在最大限度减少不得不从多个版本中选择时所产生的混淆和歧义。MemoryDB 还将自动管理处于运行状态下集群的次要版本和补丁版本,确保提高性能和增强安全性。这将通过服务更新活动借助标准客户通知渠道进行处理。有关更多信息,请参阅 MemoryDB for Redis 中的服务更新

  • 您可以在最短的停机时间内升级集群版本。集群在整个升级过程中可供读取,并在大部分升级持续时间内可供写入,但在只持续几秒钟的故障转移操作期间则例外。

  • 我们建议您在传入的写流量较低期间安排引擎升级。

    将处理和修补带多个分片的集群,如下所示:

    • 在任何时候,仅在每个分片上执行一次升级操作。

    • 在每个分片中,在处理主副本之前,会先处理所有其他副本。如果一个分片中的副本较少,则可能会在处理完其他分片中的副本之前处理该分片中的主副本。

    • 在所有分片中,主节点都是按顺序处理的。一次只升级一个主节点。

如何升级引擎版本

您可以使用 MemoryDB 控制台、或 MemoryDB API 修改集群并指定更新的引擎版本 Amazon CLI,从而启动集群的版本升级。有关更多信息,请参阅以下主题。

解决被阻止的 Redis 引擎升级

如下表所示,如果您有待处理的纵向扩展操作,则会阻止 Redis 引擎升级操作。

待处理的操作 阻止的操作
纵向扩展 立即引擎升级
引擎升级 立即纵向扩展
纵向扩展和引擎升级 立即纵向扩展
立即引擎升级