

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

# 如何 ElastiCache 运作
<a name="WhatIs.corecomponents"></a>

在这里，您可以找到 ElastiCache 部署主要组件的概述。

## 缓存和缓存引擎
<a name="WhatIs.corecomponents.cache"></a>

缓存是一种内存数据存储，可用于存储缓存的数据。通常，您的应用程序会将经常访问的数据缓存在缓存中，以优化响应时间。 ElastiCache 提供了两个部署选项：无服务器缓存和基于节点的集群。请参阅[选择部署选项](WhatIs.deployment.md)。

**注意**  
亚马逊 ElastiCache 使用 Valkey、Memcached 和 Redis OSS 引擎。如果您不确定要使用哪个引擎，请参阅本指南中的[比较 Valkey、Memcached 和 Redis OSS 基于节点的集群](SelectEngine.md)。

**Topics**
+ [如何 ElastiCache 运作](#WhatIs.HowELCworks)
+ [定价维度](#WhatIs.ELCpricing)
+ [ElastiCache 备份](#WhatIs.corecomponents.backups-redis)

### 如何 ElastiCache 运作
<a name="WhatIs.HowELCworks"></a>

**ElastiCache 无服务器**

ElastiCache Serverless 使您能够创建缓存，而不必担心容量规划、硬件管理或集群设计。您只需为缓存提供一个名称，即可收到一个端点，可以在 Valkey、Memcached 或 Redis OSS 客户端中配置此端点以开始访问缓存。

**注意**  
ElastiCache Serverless 在集群模式下运行 Valkey、Memcached 或 Redis OSS，并且仅与支持 TLS 的客户端兼容。

**主要优势**


+ **无需进行容量规划：**ElastiCache 无服务器让您无需规划容量。 ElastiCache Serverless 持续监控缓存的内存、计算和网络带宽利用率，并可纵向和横向扩展。它可以增大缓存节点，同时并行启动横向扩展操作，以确保缓存能够扩展以始终满足您的应用程序需求。
+ **Pay-per-use：**使用 ElastiCache Serverless，您需要为缓存中的工作负载所存储的数据和使用的计算付费。请参阅[定价维度](#WhatIs.ELCpricing)。
+ **高可用性：**ElastiCache Serverless 会自动跨多个可用区 (AZ) 复制您的数据，以实现高可用性。它会自动监控底层缓存节点，并在出现故障时将其替换。它为每个缓存提供 99.99% 可用性 SLA。
+ **自动软件升级：**ElastiCache Serverless会自动将您的缓存升级到最新的次要版本和补丁软件版本，而不会对您的应用程序的可用性产生任何影响。当有新的主要版本可用时， ElastiCache 将向您发送通知。
+ **安全性：**无服务器始终对传输中数据和静态数据进行加密。您可以使用服务托管密钥或您自己的客户自主管理型密钥，对静态数据进行加密。

下图说明了 ElastiCache 无服务器的工作原理。

![\[ElastiCache 无服务器缓存操作示意图，从可用区到客户 VPC，再到服务 VPC。\]](http://docs.aws.amazon.com/zh_cn/AmazonElastiCache/latest/dg/images/ELC-serverless-works1.png)


创建新的无服务器缓存时， ElastiCache 将在您的 VPC 中您选择的子网中创建一个虚拟私有云 (VPC) 终端节点。您的应用程序可以通过这些 VPC 端点连接到缓存。

使用 ElastiCache Serverless，您可以收到应用程序连接到的单个 DNS 端点。当您请求与端点建立新连接时， ElastiCache Serverless 会通过代理层处理所有缓存连接。代理层有助于减少复杂的客户端配置，因为在底层集群发生变化时，客户端无需重新发现集群拓扑。代理层是一组使用网络负载均衡器处理连接的代理节点。

当应用程序创建新的缓存连接时，网络负载均衡器会将请求发送到代理节点。当应用程序执行缓存命令时，连接到应用程序的代理节点会在缓存中的缓存节点上执行请求。代理层从客户端提取集群拓扑和节点。这使您 ElastiCache 能够智能地进行负载平衡、横向扩展和添加新的缓存节点、在缓存节点出现故障时更换缓存节点以及更新缓存节点上的软件，所有这些都不会影响应用程序的可用性，也不必重置连接。

**基于节点的集群**

您可以通过为 ElastiCache 集群选择缓存节点系列、大小和节点数来创建基于节点的集群。创建基于节点的集群可让您实施更精细的控制，并让您选择缓存中的分片数和每个分片中的节点（主节点和副本）数。您可以选择通过创建带多个分片的集群，以便在集群模式下操作 Valkey 或 Redis OSS，或者在非集群模式下使用单个分片来操作 Valkey 或 Redis OSS。

**主要优势**
+ **创建基于节点的集群：**使用 ElastiCache，您可以创建基于节点的集群并选择要放置缓存节点的位置。例如，如果您的应用程序需要放弃高可用性来换取低延迟，则可以选择在单个可用区中部署缓存节点。或者，您可以创建一个基于节点的集群，其节点跨多个 AZs 以实现高可用性。
+ **精细控制：**在创建基于节点的集群时，您可以通过微调缓存上的设置来实现更多控制。例如，您可以使用 [Valkey 和 Redis OSS 参数](ParameterGroups.Engine.md#ParameterGroups.Redis) 或 [Memcached 特定的参数](ParameterGroups.Engine.md#ParameterGroups.Memcached) 配置缓存引擎。
+ **垂直和水平扩展：**在需要时，您可以选择增大或减小缓存节点大小来手动扩缩集群。您也可以通过添加新分片或向分片添加更多副本来水平扩展。您还可以使用自动扩缩功能，根据计划配置扩缩，或根据缓存上的 CPU 和内存使用率等指标进行扩缩。

下图说明了基于节点的 ElastiCache 集群的工作原理。

![\[ElastiCache 基于节点的集群操作示意图，从可用区到客户 VPC，再到 ElastiCache 托管缓存节点。\]](http://docs.aws.amazon.com/zh_cn/AmazonElastiCache/latest/dg/images/ELC-serverless-works2.png)


### 定价维度
<a name="WhatIs.ELCpricing"></a>

您可以通过两个部署 ElastiCache 选项进行部署。在部署 ElastiCache Serverless 时，您需要为以 GB 小时存储的数据和按 ElastiCache 处理单元 (ECPU) 计算的数据的使用量付费。在创建基于节点的集群时，您需要按小时为缓存节点使用量付费。请参阅[此处](https://aws.amazon.com/elasticache/pricing/)的定价详细信息。

**数据存储**

您需要为存储在 ElastiCache 无服务器中的数据付费，按千兆字节小时 (GB-Hr) 计费。 ElastiCache Serverless 持续监控存储在缓存中的数据，每分钟采样多次，并计算每小时平均值以确定缓存的数据存储使用量（以 GB-Hr 为单位）。每个 ElastiCache 无服务器缓存按流量计量存储至少 1 GB 的数据。

**ElastiCache 处理单元 (ECPUs)**

您需要为应用程序在 ElastiCache Serverless 上执行的请求付费，即 ElastiCache 处理单元 (ECPUs)，该单位包括 vCPU 时间和传输的数据。
+ 对于传输的每 KB 数据，简单读取和写入需要 1 个 ECPU。例如，传输最多 1 KB 数据的 GET 命令将使用 1 个 ECPU。传输 3.2 KB 数据的 SET 请求将消耗 3.2 KB ECPUs。
+ 使用 Valkey 和 Redis OSS，消耗更多 vCPU 时间和传输更多数据的命令会 ECPUs 根据两个维度中较高的维度消耗。例如，如果您的应用程序使用 HMGET 命令，使用简单 SET/GET 命令消耗的 vCPU 时间是 3 倍，并且传输 3.2 KB 的数据，则它将消耗 3.2 ECPU。或者，如果它仅传输 2 KB 的数据，则将消耗 3 KB ECPUs。
+ 使用 Valkey 和 Redis OSS，需要额外 vCPU 时间的命令将按比例消耗更多的 vCPU 时间。 ECPUs例如，如果您的应用程序使用 Valkey 或 Redis OSS [HMGET 命令，并且作为一个简单 SET/GET 命令](https://valkey.io/commands/hmget/)消耗的 vCPU 时间是 3 倍，那么它将消耗 3 倍的 vCPU 时间。 ECPUs
+ 使用 Memcached，对多个项目进行操作的命令将按比例消耗更多资源。 ECPUs例如，如果您的应用程序对 3 个项目执行多重获取，则它将消耗 3 ECPUs 个。
+ 使用 Memcached，对更多项目进行操作并传输更多数据的命令会 ECPUs 根据两个维度中较高的维度消耗。例如，如果您的应用程序使用 GET 命令，检索 3 个项目并传输 3.2 KB 的数据，则它将使用 3.2 个 ECPU。或者，如果它仅传输 2 KB 的数据，则将消耗 3 KB ECPUs。

ElastiCache Serverless 会发出一个名为的新指标`ElastiCacheProcessingUnits`，该指标可帮助您了解工作负载 ECPUs 消耗的量。

**节点小时数**

您可以通过选择 EC2 节点系列、大小、节点数量和跨可用区域的位置来创建基于节点的集群。在创建基于节点的集群时，您需要按小时为每个缓存节点付费。

### ElastiCache 备份
<a name="WhatIs.corecomponents.backups-redis"></a>

*备份*是无服务器缓存的 point-in-time副本，或者基于 Valkey 或 Redis OSS 节点的集群的副本。 ElastiCache 使您可以随时备份数据或设置自动备份。备份可用于还原现有缓存或为新集群制作种子。备份包含缓存中的所有数据和某些元数据。有关更多信息，请参阅 [快照和还原](backups.md)。