

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

# 引擎版本
<a name="engine-versions"></a>

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

**Topics**
+ [MemoryDB 版本 7.3](#engine-version-7.3)
+ [MemoryDB 版本 7.2.6](#valkey-version-7.2.6)
+ [MemoryDB 版本 7.1（加强版）](#engine-version-7.1)
+ [MemoryDB 版本 7.0（加强版）](#engine-version-7.0)
+ [MemoryDB 和 Redis OSS 版本 6.2（加强版）](#engine-version-6-x)
+ [升级引擎版本](#versionmanagement)

## MemoryDB 版本 7.3
<a name="engine-version-7.3"></a>

2024 年 12 月 1 日，MemoryDB 7.3 发布。MemoryDB 版本 7.3 支持多区域集群，使您能够构建具有高达 99.999% 可用性和极低延迟的多区域应用程序。MemoryDB 多区域当前在以下 AWS 区域受支持：美国东部（弗吉尼亚州北部和俄亥俄州）、美国西部（俄勒冈州、加利福尼亚州北部）、欧洲地区（爱尔兰、法兰克福和伦敦）以及亚太地区（东京、悉尼、孟买、首尔和新加坡）。有关更多信息，请参阅 [MemoryDB 多区域](multi-region.md)。

## MemoryDB 版本 7.2.6
<a name="valkey-version-7.2.6"></a>

2024 年 10 月 8 日，Valkey 7.2.6 发布。Valkey 7.2.6 与之前版本的 Redis OSS 7.2.5 有相似的兼容性差异。以下是 Valkey 和 Redis OSS 7.0 和 7.1 之间的主要差异：
+ ZRANK 和 ZREVRANK 命令有新的 WITHSCORE 选项
+ CLIENT NO-TOUCH 让客户端可以在不影响键的 LRU/LFU 的情况下运行命令。
+ 新命令 CLUSTER MYSHARDID 返回节点的分片 ID，以便根据复制在集群模式下对节点进行逻辑分组。
+ 针对各种数据类型的性能和内存优化。

以下是 Valkey 7.2 和 Redis OSS 7.1（或 7.0）之间可能发生的重大行为变化：
+ 使用同样订阅了同一频道的 RESP3 客户端调用 PUBLISH 时，顺序会更改，并在发布消息之前发送回复。
+ 脚本的客户端跟踪现在可以跟踪脚本读取的键值，而不是由 EVAL/FCALL 调用方声明的键。
+ 冻结时间采样在命令执行期间和在脚本中进行。
+ 解除阻止的命令后，会重新评估 ACL、OOM 等检查。
+ ACL 故障错误消息文本和错误代码是统一的。
+ 当对应的键不再存在时，阻塞的流命令在解除阻塞时会返回不同的错误代码（返回 -NOGROUP 或 -WRONGTYPE，而不是返回 -UNBLOCKED）。
+ 仅当实际执行命令时才会更新阻塞命令的命令统计信息。
+ ACL 用户的内部存储不再删除多余的命令和类别规则。这可能会改变这些规则在 ACL SAVE、ACL GETUSER 和 ACL LIST 中的显示方式。
+ 如果可能，为基于 TLS 的复制创建的任何客户端连接都使用 SNI。
+ XINFO STREAM：seen-time 响应字段现在表示上次尝试的交互，而不是最后一次成功的交互。现在，新的 active-time 响应字段表示最后一次成功的交互。
+ 无论是否能够执行某些读取/声明，XREADGROUP 和 X[AUTO]CLAIM 都会创建使用者。
+ ACL 默认新创建的用户在 ACL LIST/GETUSER 中设置了 sanitize-payload 标志。
+ 除非成功执行，否则 HELLO 命令不会影响客户端状态。
+ NAN 回复被标准化为单个 nan 类型，类似于 inf 的当前行为。

有关 Valkey 的更多信息，请参阅 [Valkey](https://valkey.io/)

有关 Valkey 7.2 版本的更多信息，请参阅 GitHub 上有关 Valkey 的 [Redis OSS 7.2.4 发布说明](https://github.com/valkey-io/valkey/blob/d2c8a4b91e8c0e6aefd1f5bc0bf582cddbe046b7/00-RELEASENOTES)（Valkey 7.2 包括从 Redis OSS 到 7.2.4 版本的所有更改）和 [Valkey 7.2 发布说明](https://github.com/valkey-io/valkey/blob/7.2/00-RELEASENOTES)。

## MemoryDB 版本 7.1（加强版）
<a name="engine-version-7.1"></a>

MemoryDB 版本 7.1 增加了对所有区域的向量搜索功能的支持，还增加了关键错误修复和性能增强。
+ **[向量搜索特征：](vector-search.md)**向量搜索可以与现有的 MemoryDB 功能结合使用。不使用向量搜索的应用程序不会受到其存在的影响。在 MemoryDB 7.1 及更高版本中，所有地区均提供向量搜索功能。如需了解更多信息，请参阅[此处](vector-search.md)的文档。

**注意**  
MemoryDB 7.1 与 Redis OSS 7.0 兼容。有关 Redis OSS 7.0 的更多信息，请参阅 GitHub 上有关 Redis OSS 的 [Redis OSS 7.0 发布说明](https://raw.githubusercontent.com/antirez/redis/7.0/00-RELEASENOTES)。

## MemoryDB 版本 7.0（加强版）
<a name="engine-version-7.0"></a>

MemoryDB 7.0 增加了多项改进和对新功能的支持：
+ [Functions](https://valkey.io/docs/topics/functions-intro/)：MemoryDB 7 增加了对 Functions 的支持，并提供了托管体验，使开发人员能够使用存储在 MemoryDB 集群上的应用程序逻辑执行 [LUA 脚本](https://valkey.io/docs/manual/programmability/eval-intro/)，而无需客户端在每次连接时都将脚本重新发送到服务器。
+ [ACL 改进](https://valkey.io/topics/acl/)：MemoryDB 7 增加了对下一版本的访问控制列表（ACL）的支持。借助 MemoryDB OSS Valkey 7 或 Redis OSS 7，客户端现在可为特定键或键空间指定多组权限。
+ [分片发布/订阅](https://valkey.io/topics/pubsub/)：MemoryDB 7 增加了对在启用集群模式（CME）下运行 MemoryDB 时以分片方式运行发布/订阅功能的支持。发布/订阅功能使发布者能够向频道中任意数量的订阅用户发布消息。借助 Amazon MemoryDB Valkey 7 和 Redis OSS 7，频道可绑定到 MemoryDB 集群中的分片，无需在分片之间传播频道信息。这会提高可扩展性。
+ 增强型 I/O 多路复用：MemoryDB Valkey 7 和 Redis OSS 版本 7 引入了增强型 I/O 多路复用，此功能为与 MemoryDB 集群有着许多并发客户端连接的高吞吐量工作负载提供了更高的吞吐量和更短的延迟。例如，与 MemoryDB 版本 6 相比，当使用由 r6g.4xlarge 节点组成的集群并运行 5200 个并发客户端时，吞吐量（每秒读写操作数）可以提高多达 46%，P99 延迟可减少多达 21%。

有关 Valkey 的更多信息，请参阅 [Valkey](https://valkey.io/)

有关 Valkey 7.2 版本的更多信息，请参阅 GitHub 上有关 Valkey 的 [Redis OSS 7.2.4 发布说明](https://github.com/valkey-io/valkey/blob/d2c8a4b91e8c0e6aefd1f5bc0bf582cddbe046b7/00-RELEASENOTES)（Valkey 7.2 包括从 Redis OSS 到 7.2.4 版本的所有更改）和 [Valkey 7.2 发布说明](https://github.com/valkey-io/valkey/blob/7.2/00-RELEASENOTES)。

## MemoryDB 和 Redis OSS 版本 6.2（加强版）
<a name="engine-version-6-x"></a>

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

Redis 引擎版本 6.2.6 还引入了对原生 JavaScript 对象表示法（JSON）格式的支持，这是在 Redis OSS 集群中对复杂数据集进行编码的一种简单的无 Schema 方法。借助 JSON 支持，您可以帮助基于 JSON 运行的应用程序利用性能和 Redis OSS API。有关更多信息，请参阅 [开始使用 JSON](json-gs.md)。还包括与 JSON 相关的指标 `JsonBasedCmds`，它被合并到 CloudWatch 中以监控此数据类型的使用情况。有关更多信息，请参阅 [MemoryDB 的指标](metrics.memorydb.md)。

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

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

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

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

有关 Redis OSS 6.2 版本的更多信息，请参阅 GitHub 上有关 Redis OSS 的 [Redis 6.2 发布说明](https://raw.githubusercontent.com/redis/redis/6.2/00-RELEASENOTES)。

## 升级引擎版本
<a name="versionmanagement"></a>

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

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

您也可以从带有 Redis OSS 引擎的现有 MemoryDB 升级到 Valkey 引擎。

您可以通过以下方式对您的集群启动引擎版本升级：
+ 通过更新并指定新的引擎版本。有关更多信息，请参阅 [修改 MemoryDB 集群](clusters.modify.md)。
+ 为相应的引擎版本应用服务更新。有关更多信息，请参阅 [MemoryDB 中的服务更新](service-updates.md)。

请注意以下几点：
+ 您可以升级到较新的引擎版本，但不能降级到较早的引擎版本。要使用较早的引擎版本，必须删除现有的集群，并使用较早的引擎版本重新创建。
+ 我们建议定期升级到最新的主要版本，因为大多数主要改进都不会向后移植到旧版本。随着 MemoryDB 将可用性扩展到新的 AWS 区域，MemoryDB 支持将当时最新的两个 `MAJOR.MINOR` 版本用于此新区域。例如，如果一个新 AWS 区域推出，并且最新的 `MAJOR.MINOR` MemoryDB 版本为 7.0 和 6.2，则 MemoryDB 将在新的 AWS 区域中支持版本 7.0 和 6.2。随着 MemoryDB 更新的 `MAJOR.MINOR` 版本发布，MemoryDB 将继续加大对新发布的 MemoryDB 版本的支持。要详细了解如何为 MemoryDB 选择区域，请参阅 [支持的区域和端点](regionsandazs.md#supportedregions)。
+ 引擎版本管理的设计使您可以尽可能多地控制修补的发生方式。但是，如果发生系统或软件中存在严重安全漏洞这种不太可能发生的情况，MemoryDB 保留代表您修补集群的权利。
+ MemoryDB 将为每个 Valkey 或 Redis OSS 次要版本提供单一版本，而不提供多个补丁版本。其支持旨在最大限度减少不得不从多个版本中选择时所产生的混淆和歧义。MemoryDB 还将自动管理处于运行状态下集群的次要版本和补丁版本，确保提高性能和增强安全性。这将通过服务更新活动借助标准客户通知渠道进行处理。有关更多信息，请参阅 [MemoryDB 中的服务更新](service-updates.md)。
+ 您可以在最短的停机时间内升级集群版本。集群在整个升级过程中可供读取，并在大部分升级持续时间内可供写入，但在只持续几秒钟的故障转移操作期间则例外。
+ 我们建议您在传入的写流量较低期间安排引擎升级。

  将处理和修补带多个分片的集群，如下所示：
  + 在任何时候，仅在每个分片上执行一次升级操作。
  + 在每个分片中，在处理主副本之前，会先处理所有其他副本。如果一个分片中的副本较少，则可能会在处理完其他分片中的副本之前处理该分片中的主副本。
  + 在所有分片中，主节点都是按顺序处理的。一次只升级一个主节点。

**Topics**
+ [如何升级引擎版本](#versionmanagement.howto)
+ [解决被阻止的 Redis OSS 引擎升级](#resolving-blocked-engine-upgrades)

### 如何升级引擎版本
<a name="versionmanagement.howto"></a>

通过使用 MemoryDB 控制台、AWS CLI 或 MemoryDB API 修改集群并指定较新的引擎版本，启动集群的版本升级。有关更多信息，请参阅以下主题。
+ [使用 AWS 管理控制台](clusters.modify.md#clusters.modifyclusters.viewdetails)
+ [使用 AWS CLI](clusters.modify.md#clusters.modify.cli)
+ [使用 MemoryDB API](clusters.modify.md#clusters.modify.api)

### 解决被阻止的 Redis OSS 引擎升级
<a name="resolving-blocked-engine-upgrades"></a>

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


****  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/memorydb/latest/devguide/engine-versions.html)