

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

# 比较 Valkey、Memcached 和 Redis OSS 基于节点的集群
<a name="SelectEngine"></a>

亚马逊 ElastiCache 支持 Valkey、Memcached 和 Redis OSS 缓存引擎。每种引擎都有自己的优点。使用本主题中的信息有助于您选择出最能满足您的要求的引擎和版本。

**重要**  
创建基于节点的缓存群集或复制组后，您可以升级到较新的引擎版本，但不能降级到较旧的引擎版本。如果您要使用较旧的引擎版本，必须删除现有的基于节点的缓存群集或复制组，并使用较旧的引擎版本重新创建。

从表面上看，这两个引擎十分类似。其中的每个引擎都是一个内存中键/值存储。不过，这两者实际上有很大差异。

**如果您存在以下情况，请选择 Memcached：**
+ 您需要使模型尽可能简单。
+ 您需要运行具有多个核心或线程的大型节点。
+ 您需要具备缩放能力，随着系统需求的增加和减少来添加和移除节点。
+ 您需要缓存对象。

**ElastiCache 如果符合以下条件，请选择 Valkey 或 Redis OSS：**
+ **ElastiCache 适用于 Valkey 的 7.2 版或 Redis OSS 的 7.0 版（增强版）**

  您想使用[函数](https://valkey.io/topics/functions-intro/)、[分片发布/订阅](https://valkey.io/topics/pubsub/)或 [ACL 改进](https://valkey.io/topics/acl/)。有关更多信息，请参阅 [Redis OSS 版本 7.0（加强版）](engine-versions.md#redis-version-7.0)。
+ **ElastiCache 适用于 Redis OSS 的 6.2 版（增强版）**

  您希望能够使用 r6gd 节点类型在内存和 SSD 之间进行数据分层。有关更多信息，请参阅[数据分层](data-tiering.md)。
+ **ElastiCache 适用于 Redis OSS 的 6.0 版（增强版）**

  您希望使用基于角色的访问控制对用户进行身份验证。

  有关更多信息，请参阅 [Redis OSS 版本 6.0（加强版）](engine-versions.md#redis-version-6.0)。
+ **ElastiCache 适用于 Redis OSS 的 5.0.0 版（增强版）**

  您需要使用 [Redis OSS 流](https://redis.io/topics/streams-intro)，它是一个日志数据结构，允许生成者实时附加新项，并允许使用者以阻塞或非阻塞方式使用消息。

  有关更多信息，请参阅 [Redis OSS 版本 5.0.0（加强版）](engine-versions.md#redis-version-5-0)。
+ **ElastiCache 适用于 Redis OSS 的 4.0.10（增强版）**

  支持加密以及从您的 Valkey 或 Redis OSS（已启用集群模式）集群动态添加或移除分片。

  有关更多信息，请参阅 [Redis OSS 版本 4.0.10（加强版）](engine-versions.md#redis-version-4-0-10)。

以下版本已弃用、已达到使用寿命或即将达到使用寿命。
+ **ElastiCache 适用于 Redis OSS 的 3.2.10 版（增强版）**

  支持从您的 Valkey 或 Redis OSS（已启用集群模式）集群动态添加或移除分片的功能。
**重要**  
目前，适用于 Redis OSS 的 ElastiCache 3.2.10 不支持加密。

  有关更多信息，请参阅下列内容：
  + [Redis OSS 3.2.10 版（加强版）](engine-versions.md#redis-version-3-2-10)
  + Redis OSS 的在线重新分片最佳实践，有关更多信息，请参阅：
    + [最佳实践：在线重新分片](best-practices-online-resharding.md)
    + [Valkey 或 Redis OSS（已启用集群模式）的在线重新分片和分片重新平衡](scaling-redis-cluster-mode-enabled.md#redis-cluster-resharding-online)
  + 有关扩展 Redis OSS 集群的更多信息，请参阅[扩展](Scaling.md)。

    
+ **ElastiCache 适用于 Redis OSS 的 3.2.6 版（增强版）**

  如果您需要较旧 Redis OSS 版本的功能外加以下功能，请选择 3.2.6：
  + 传输中加密。有关更多信息，请参阅 [Amazon f ElastiCache or Redis OSS 传输中](in-transit-encryption.md)加密。
  + 静态加密。有关更多信息，请参阅 [Amazon f ElastiCache or Redis OSS 静态加密](at-rest-encryption.md)。
+ **ElastiCache （已启用集群模式）适用于 Redis OSS 的 3.2.4 版**

  如果需要 2.8.x 的功能外加以下功能，请选择 3.2.4（集群模式）：
  + 您需要在 2 到 500 个节点组（仅限集群模式）之间对数据分区。
  + 您需要地理空间索引（集群模式或非集群模式）。
  + 您不需要支持多个数据库。
+ **ElastiCache （非集群模式）适用于 Redis OSS 的 2.8.x 和 3.2.4（增强版）**

  如果您存在以下情况，请选择 2.8.x 或 3.2.4（非集群模式）：
  + 您需要复杂数据类型，如字符串、哈希、列表、集、排序集和位图。
  + 您需要对内存数据集进行排序或排名。
  + 您需要持久保留密钥库。
  + 您需要为读取操作密集型应用程序将主集群中的数据复制到一个或多个只读副本。
  + 您需要在主节点出现故障的情况下执行自动故障转移。
  + 您需要发布和订阅 (pub/sub) 功能 – 向客户端通知服务器上发生的事件。
  + 您需要为基于节点的集群以及无服务器缓存提供备份和还原功能。
  + 您需要支持多个数据库。


**Memcached、Valkey 或 Redis OSS（已禁用集群模式）和 Valkey 或 Redis OSS（已启用集群模式）的比较摘要**  

|  |  Memcached  |  Valkey 或 Redis OSS（已禁用集群模式）  |  Valkey 或 Redis OSS（已启用集群模式）  | 
| --- |--- |--- |--- |
| 引擎版本\$1 | 1.4.5 及更高版本 | 4.0.10 及后续版本 | 4.0.10 及后续版本 | 
| 数据类型 | 简便  | 2.8.x - 复杂 \$1 | 3.2.x 及更高版本 - 复杂 | 
| 复杂 | 
| 数据分区 | 是 | 否 | 是 | 
| 集群是可修改的 | 支持 | 是 | 3.2.10 及更高版本 - 有限 | 
| 在线重新分片 | 否 | 否 | 3.2.10 和后续版本 | 
| 加密 | 在途 1.6.12 及更高版本 | 4.0.10 及后续版本 | 4.0.10 及后续版本 | 
| 数据分层 | 否 | 6.2 及更高版本 | 6.2 及更高版本 | 
| 合规性认证 | 
| --- |
| 合规性认证     FedRAMP     HIPAA     PCI DSS |   是 - 1.6.12 及更高版本 是 - 1.6.12 及更高版本 是 |   4.0.10 及后续版本 4.0.10 及后续版本 4.0.10 及后续版本 |   4.0.10 及后续版本 4.0.10 及后续版本 4.0.10 及后续版本 | 
| 多线程 | 是 | 否 | 否 | 
| 节点类型升级 | 否 | 是 | 是 | 
| 引擎升级 | 支持 | 是 | 是 | 
| 高可用性 (复制) | 否 | 是 | 是 | 
| 自动失效转移 | 否 | 可选 | 必需 | 
| 发布/订阅功能 | 否 | 是 | 是 | 
| 排序集 | 否 | 是 | 是 | 
| 备份和还原 | 仅适用于无服务器缓存，不适用于基于节点的集群 | 支持 | 是 | 
| 地理空间索引 | 否 | 4.0.10 及后续版本 | 是 | 
| 备注： | 
| 字符串、对象（如数据库） | 
| \$1 字符串、集、排序集、列表、哈希、位图、hyperloglog | 
| 字符串、集、排序集、列表、哈希、位图、hyperloglog、地理空间索引 | 
| \$1 不包括已弃用、已达到或即将到期的版本。 | 

为集群选择引擎后，建议您使用该引擎的最新版本。有关更多信息，请参阅 [受支持的节点类型](CacheNodes.SupportedTypes.md)。