主要版本行为和兼容性差异 - 亚马逊 ElastiCache (Redis OSS)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

主要版本行为和兼容性差异

重要

以下页面的结构设计为指出版本之间的所有不兼容性差异,并告知您在升级到较新版本时应考虑的任何注意事项。此列表包含升级时可能遇到的任何版本不兼容问题。

您可以直接从当前的 Redis OSS 版本升级到可用的最新 Redis OSS 版本,而无需进行连续升级。例如,您可以直接从 Redis OSS 版本 3.0 升级到 7.0 版本。

Redis OSS 版本以语义版本标识,语义版本包括主要、次要和补丁组件。例如,在 Redis OSS 4.0.10 中,主版本为 4,次要版本为 0,补丁版本为 10。这些值通常根据以下约定递增:

  • MAJOR 版本针对 API 不兼容的更改

  • MINOR 版本针对以向后兼容的方式添加的新功能

  • PATCH 版本针对向后兼容的错误修复和非功能性更改

我们建议始终使用给定 MAJOR.MINOR 版本中的最新补丁版本,以获得最新的性能和稳定性改进。从 Redis OSS 6.0 开始, ElastiCache (Redis OSS)将为每个 Redis OSS 次要版本提供一个版本,而不是提供多个补丁版本。 ElastiCache (Redis OSS) 将自动管理正在运行的缓存集群的补丁版本,从而确保提高性能和增强安全性

我们还建议定期升级到最新的主要版本,因为大多数主要改进都不会向后移植到旧版本。随着新 Amazon 区域的可用性 ElastiCache 扩展, ElastiCache (Redis OSS) 支持新区域当时最新的两个MAJOR.MINOR版本。例如,如果启动了一个新 Amazon 区域并且最新的 MAJOR.MINOR ElastiCache (Redis OSS) 版本为 7.0 和 6.2,则 ElastiCache (Redis OSS) 将在新区域中支持 7.0 和 6.2 版本。 Amazon 随着较新 MAJOR.MINOR 版本 ElastiCache (Redis OSS)的发布, ElastiCache 将继续增加对新发布的 ElastiCache (Redis OSS)版本的支持。要了解有关为其选择区域的更多信息 ElastiCache,请参阅选择区域和可用区

在进行跨主版本或次要版本的升级时,请考虑以下列表,其中包括 Redis OSS 随时间推移发布的行为和向后不兼容的更改。

Redis OSS 7.0 的行为和向后不兼容的更改

有关变更的完整列表,请参阅 Redis OSS 7.0 发行说明

  • SCRIPT LOADSCRIPT FLUSH 不再传播到副本。如果您需要为脚本提供一定的耐久性,我们建议您考虑使用 Redis OSS 函数

  • 现在,对于新的 ACL 用户,发布订阅通道默认处于屏蔽状态。

  • STRALGO 命令已替换为 LCS 命令。

  • ACL GETUSER 的格式已更改,因此所有字段都显示标准访问字符串模式。如果您使用 ACL GETUSER 实现了自动化,则应验证它是否可以处理任何一种格式。

  • SELECTWAITROLELASTSAVEREADONLYREADWRITEASKING 的 ACL 类别已更改。

  • INFO 命令现在显示每个子命令的命令统计信息,而不是在顶级容器命令中显示命令统计信息。

  • 在某些边缘情况下,LPOPRPOPZPOPMINZPOPMAX 命令的返回值已更改。如果您使用这些命令,则应查看发布说明并评估是否受到影响。

  • SORTSORT_RO 命令现在需要访问整个键空间才能使用 GETBY 参数。

Redis OSS 6.2 的行为和向后不兼容的更改

有关变更的完整列表,请参阅 Redis OSS 6.2 版本说明

  • TIMEECHOROLELASTSAVE 命令的 ACL 标志已更改。这可能会导致先前允许的命令被拒绝,反之亦然。

    注意

    这些命令不会修改或授予对数据的访问权限。

  • 从 Redis OSS 6.0 升级时,从 lua 脚本的映射响应返回的键/值对的顺序会发生变化。如果您的脚本使用redis.setresp()或返回地图(Redis OSS 6.0 中的新功能),请考虑脚本在升级时可能会中断的影响。

Redis OSS 6.0 的行为和向后不兼容的更改

有关变更的完整列表,请参阅 Redis OSS 6.0 发行说明

  • 允许的最大数据库数量已从 120 万减少到 1 万个。默认值为 16,我们不鼓励使用比这大许多的值,因为我们发现这样会带来性能和内存问题。

  • AutoMinorVersionUpgrade参数设置为 “是”,然后 ElastiCache (Redis OSS) 将通过自助更新管理次要版本升级。这将通过自助服务更新活动借助标准客户通知渠道进行处理。有关更多信息,请参阅中的自助服务更新 ElastiCache

Redis OSS 5.0 的行为和向后不兼容的更改

有关变更的完整列表,请参阅 Redis OSS 5.0 发行说明

  • 脚本由效果复制,而不是在副本上重新执行脚本。这通常可以提高性能,但可能会增加主副本和副本之间复制的数据量。有一个选项可以恢复到之前的行为,该选项仅在 ElastiCache (Redis OSS) 5.0 中可用。

  • 如果您从 Redis OSS 4.0 升级,LUA 脚本中的某些命令将按与早期版本不同的顺序返回参数。在 Redis OSS 4.0 中,Redis OSS 会按字典顺序对一些响应进行排序,以使响应具有确定性,当按效果复制脚本时,这种排序不适用。

  • 在 Redis OSS 5.0.3 及更高版本中, ElastiCache (Redis OSS)会将一些 IO 工作卸载到具有 4 个 vCPU 以上的实例类型的后台内核。这可能会改变 Redis OSS 的性能特征并更改某些指标的值。有关更多信息,请参阅 应监控哪些指标?,以了解您是否需要更改要关注的指标。

Redis OSS 4.0 的行为和向后不兼容的更改

有关变更的完整列表,请参阅 Redis OSS 4.0 版本说明

  • 慢日志现在记录两个额外参数,即客户端名称和地址。除非您明确依赖包含 3 个值的每个慢日志条目,否则此更改应向后兼容。

  • CLUSTER NODES 命令现在返回的格式略有不同,不向后兼容。我们建议客户端不要使用此命令来了解集群中存在的节点,而应使用 CLUSTER SLOTS

已经终止生命周期

Redis OSS 3.2 的行为和向后不兼容的更改

有关变更的完整列表,请参阅 Redis OSS 3.2 发行说明

  • 此版本没有兼容性更改需要调用。

有关更多信息,请参阅 Redis OSS 版本生命周期终止时间表

Redis OSS 2.8 的行为和向后不兼容的更改

有关变更的完整列表,请参阅 Redis OSS 2.8 发行说明

  • 从 Redis OSS 2.8.22 开始,(Redis OSS)中 ElastiCache 不再支持 Redis OSS AOF。当数据需要持久保存时,我们建议使用 MemoryDB。

  • 从 Redis OSS 2.8.22 开始, ElastiCache (Redis OSS) 不再支持将副本附加到其中托管的主服务器。 ElastiCache升级时,外部副本将断开连接,且无法重新连接。我们建议使用 Redis OSS 6.0 中提供的客户端缓存作为外部副本的替代方案。

  • 如果键不存在,TTLPTTL 命令现在返回 -2;如果键存在但没有关联的过期时间,则返回 -1。对于这两个条件,Redis OSS 2.6 和之前的版本过去都返回 -1。

  • 如果未使用任何 STORE 选项,SORTALPHA 现在将根据本地排序规则语言环境进行排序。

有关更多信息,请参阅 Redis OSS 版本生命周期终止时间表