本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
引擎版本
本节介绍支持的 Valkey 和 Redis OSS 引擎版本。
MemoryDB 版本 7.2.6
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选项
CLIENTN TOUCH O-让客户端在不影响密钥LRU/LFU的情况下运行命令。
新命令返回节点的分片 ID CLUSTERMYSHARDID,以便在集群模式下基于复制对节点进行逻辑分组。
针对各种数据类型进行性能和内存优化。
以下是 Valkey 7.2 和 Redis 7. OSS 1(或 7.0)之间可能发生的重大行为变化:
当PUBLISH与同样订阅了同一频道的RESP3客户通话时,顺序会更改,回复将在发布的消息之前发送。
现在,脚本的客户端跟踪会跟踪脚本读取的密钥,而不是 EVAL /的调用者声明的密钥FCALL。
冻结时间采样发生在命令执行期间和脚本中。
解除阻止的命令后,将重新评估诸如ACLOOM、和其他检查项。
ACL失败错误消息文本和错误代码是统一的。
当密钥不再存在时发布的阻塞流命令带有不同的错误代码(-NOGROUP 或-WRONGTYPE 代替-UNBLOCKED)。
只有在命令实际执行时,才会更新被阻止命令的命令统计信息。
ACL用户的内部存储不再删除多余的命令和类别规则。这可能会改变这些规则作为ACLSAVE、ACLGETUSER和的一部分显示的方式ACLLIST。
SNI如果可能,为TLS基于复制创建的任何客户端连接均可使用。
XINFOSTREAM: seen-time 响应字段现在表示上次尝试的互动,而不是最后一次成功的互动。现在,新的活动时间响应字段表示最后一次成功的互动。
XREADGROUP而且 X [AUTO] CLAIM 创建消费者,无论它是否能够进行一些读取/声明。[TBD-这里的 “它” 是什么?]
ACL默认新创建的用户在/中设置 sanitize-payload 标志。ACL LIST GETUSER
除非成功,否则该HELLO命令不会影响客户端状态。
NAN回复被标准化为单个 nan 类型,类似于 inf 的当前行为。
有关 Valkey 7.2 版本的更多信息,请参阅 Valkey on 上的 Redis OSS 7.2.4 发行说明
MemoryDB 7.1 版(增强版)
MemoryDB 版本 7.1 增加了对所有区域的矢量搜索功能的支持,还增加了关键错误修复和性能增强。
注意
MemoryDB 版本 7.1 与 Redis OSS v7.0 兼容。有关 Redis OSS 7.0 版本的更多信息,请参阅 Redis 上的 Redis OSS 7.0 发行说明
MemoryDB 版本 7.0(增强版)
MemoryDB 7.0 增加了许多改进和对新功能的支持:
-
函数
:MemoryDB 7 增加了对函数的支持,并提供了托管体验,使开发人员能够使用存储在 MemoryDB 集群上的应用程序逻辑执行LUA脚本 ,而无需客户端在每次连接时都将脚本重新发送到服务器。 -
ACL改进
:MemoryDB 7 增加了对下一版本访问控制列表 () ACLs 的支持。使用 MemoryDB OSS Valkey 7 或 Redis OSS 7,客户端现在可以为特定的密钥或密钥空间指定多组权限。 -
Sharded Pub/Sub
:MemoryDB 7 增加了对运行Pub/Sub functionality in a sharded way when running MemoryDB in Cluster Mode Enabled (CME). Pub/Sub功能的支持,使发布者能够向频道上任意数量的订阅者发布消息。使用 Amazon MemoryDB,Valkey OSS 7 和 Redis 7 通道绑定到 MemoryDB 集群中的分片,因此无需在分片之间传播频道信息。这会提高可扩展性。 -
增强的 I/O 多路复用:MemoryDB Valkey 7 和 Redis OSS 版本 7 引入了增强的 I/O 多路复用,它可以提高吞吐量并减少延迟,这些工作负载具有许多并发客户端连接到 MemoryDB 集群。例如,与 MemoryDB 版本 6 相比,使用由 r6g.4xlarge 节点组成的集群并运行 5200 个并发客户端时,吞吐量(每秒读取和写入操作数)最多可提高 46%,P99 延迟最多可减少 21%。
有关 Valkey 7.2 版本的更多信息,请参阅 Valkey on 上的 Redis OSS 7.2.4 发行说明
带有 Redis OSS 版本 6.2 的 MemoryDB(增强版)
MemoryDB 推出了下一版本的 Redis OSS 引擎,其中包括自动版本升级支持使用访问控制列表对用户进行身份验证 () ACLs、客户端缓存和显著的操作改进。
Redis 引擎版本 6.2.6 还引入了对原生 JavaScript 对象表示法 (JSON) 格式的支持,这是一种在 Redis 集群中对复杂数据集进行编码的简单、无模式的方法。OSS有了JSON支持,您可以利用性能和 Redi OSS APIs s 来JSON运行应用程序。有关更多信息,请参阅 入门 JSON。还包括JSON相关指标JsonBasedCmds
,该指标 CloudWatch 用于监控此数据类型的使用情况。有关更多信息,请参阅 MemoryDB 的指标。
在 Redis OSS 6 中,MemoryDB 将为每个 Redis OSS 次要版本提供一个版本,而不是提供多个补丁版本。其旨在最大限度减少不得不从多个次要版本中选择时所产生的混淆和歧义。MemoryDB 还将自动管理处于运行状态下集群的次要版本和补丁版本,确保提高性能和增强安全性。这将通过服务更新活动借助标准客户通知渠道进行处理。有关更多信息,请参阅 MemoryDB 中的服务更新。
如果您在创建过程中未指定引擎版本,MemoryDB 将自动为您选择首选的 Redis OSS 版本。另一方面,如果您使用指定引擎版本6.2
,MemoryDB 将自动调用可用的 Redis OSS 6.2 的首选补丁版本。
例如,当您创建集群时,可以将 --engine-version
参数设置为 6.2
。则在创建时,系统将会使用当前可用的首选补丁版本启动集群。任何包含全文引擎版本值的请求都将被拒绝,同时引发异常且进程会失败。
调用时 DescribeEngineVersions
API,EngineVersion
参数值将设置为 6.2,EnginePatchVersion
字段中将返回实际的完整引擎版本。
有关 Redis OSS 6.2 版本的更多信息,请参阅 Redis 上的 Redis 6.2 发行说明
升级引擎版本
默认情况下,MemoryDB 自动管理正在运行状态中的集群的补丁版本。此外,如果您将集群的 AutoMinorVersionUpgrade
属性设为 false,则可以选择退出自动次要版本升级。但是,您不能选择退出自动补丁版本更新。
您可以控制为集群提供支持的符合协议标准的软件是否及何时升级到自动升级启动之前的 MemoryDB 所支持的新版本。此级别的控制使您能够与特定版本保持兼容、在生产中部署进行之前使用应用程序测试新版本以及根据自己的条件和时间表执行版本升级。
你也可以从带有 Redis 引擎的现有 MemoryDB 升级到 Valkey OSS 引擎。
您可以通过以下方式对您的集群启动引擎版本升级:
通过更新并指定新的引擎版本。有关更多信息,请参阅 修改 MemoryDB 集群。
为相应的引擎版本应用服务更新。有关更多信息,请参阅 MemoryDB 中的服务更新。
请注意以下几点:
您可以升级到较新的引擎版本,但不能降级到较早的引擎版本。要使用较早的引擎版本,必须删除现有的集群,并使用较早的引擎版本重新创建。
我们建议定期升级到最新的主要版本,因为大多数主要改进都不会向后移植到旧版本。随着 MemoryDB 将可用性扩展到新 AWS 区域,MemoryDB 支持新区域当时的两个最新
MAJOR.MINOR
版本。例如,如果启动了一个新 AWS 区域并且最新的 MMAJOR.MINOR
emoryDB 版本为 7.0 和 6.2,则 MemoryDB 将在新区域中支持 7.0 和 6.2 版本。 AWS 随着新MAJOR.MINOR
版本的 MemoryDB 发布,MemoryDB 将继续增加对新发布的 MemoryDB 版本的支持。要详细了解如何为 MemoryDB 选择区域,请参阅 支持的区域和端点。引擎版本管理的设计使您可以尽可能多地控制修补的发生方式。但是,如果发生系统或软件中存在严重安全漏洞这种不太可能发生的情况,MemoryDB 保留代表您修补集群的权利。
MemoryDB 将为每个 Valkey 或 Redis OSS 次要版本提供一个版本,而不是提供多个补丁版本。其支持旨在最大限度减少不得不从多个版本中选择时所产生的混淆和歧义。MemoryDB 还将自动管理处于运行状态下集群的次要版本和补丁版本,确保提高性能和增强安全性。这将通过服务更新活动借助标准客户通知渠道进行处理。有关更多信息,请参阅 MemoryDB 中的服务更新。
您可以在最短的停机时间内升级集群版本。集群在整个升级过程中可供读取,并在大部分升级持续时间内可供写入,但在只持续几秒钟的故障转移操作期间则例外。
-
我们建议您在传入的写流量较低期间安排引擎升级。
将处理和修补带多个分片的集群,如下所示:
-
在任何时候,仅在每个分片上执行一次升级操作。
-
在每个分片中,在处理主副本之前,会先处理所有其他副本。如果一个分片中的副本较少,则可能会在处理完其他分片中的副本之前处理该分片中的主副本。
-
在所有分片中,主节点都是按顺序处理的。一次只升级一个主节点。
-
如何升级引擎版本
您可以使用 MemoryDB 控制台、或 MemoryDB 修改集群API并指定更新的引擎版本 AWS CLI,从而启动集群的版本升级。有关更多信息,请参阅以下主题。
解决阻塞的 Redis OSS 引擎升级问题
如下表所示,如果您有待执行的扩展操作,则会阻止 Redis OSS 引擎升级操作。
待处理的操作 | 阻止的操作 |
---|---|
纵向扩展 | 立即引擎升级 |
引擎升级 | 立即纵向扩展 |
纵向扩展和引擎升级 | 立即纵向扩展 |
立即引擎升级 |