

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

# MemoryDB 是什么
<a name="what-is-memorydb"></a>

Amazon MemoryDB 是一项耐用的内存数据库服务，可提供超快性能。它专为采用微服务架构的现代应用程序而构建。

Amazon MemoryDB 与热门的开源数据存储 Valkey 和 Redis OSS 兼容，使您能够使用他们已使用的同样灵活友好的数据结构、API 和命令来快速构建应用程序。借助 MemoryDB，您的所有数据都存储在内存中，从而使您能够实现微秒级读取和个位数毫秒级写入延迟和高吞吐量。MemoryDB 还使用多可用区事务日志跨多个可用区（AZ）持久存储数据，以实现快速失效转移、数据库恢复和节点重新启动。

 MemoryDB 兼具内存中性能和多可用区持久性，可用作微服务应用程序的高性能主数据库，无需单独管理缓存和耐用数据库。

**Topics**
+ [MemoryDB 的特征](servicename-feature-overview.md)
+ [MemoryDB 核心组件](components.md)
+ [相关服务](related-services-choose-between-memorydb-and-redis.md)
+ [选择区域和可用区](regionsandazs.md)
+ [访问 MemoryDB](nodes-connecting.md)
+ [MemoryDB 安全性](memorydb-security.md)

# MemoryDB 的特征
<a name="servicename-feature-overview"></a>

Amazon MemoryDB 是一项耐用的内存数据库服务，可提供超快性能。MemoryDB 的特征包括：
+ 主节点强一致性以及保证副本节点最终一致性。有关更多信息，请参阅 [一致性](consistency.md)。
+ 微秒级读取和个位数毫秒级写入延迟，每个集群高达 1.6 亿 TPS。
+ 灵活友好的 Valkey 和 Redis OSS 数据结构和 API。几乎不进行任何修改就可以轻松构建新应用程序或迁移现有的基于 Valkey 和基于 Redis OSS 的应用程序。
+ 使用多可用区事务日志实现数据持久性，提供快速的数据库恢复和重启。
+ 多可用区可用性，具有自动失效转移和自动检测和恢复节点故障的功能。
+ 通过添加和移除节点轻松进行横向扩展，或者通过移动到较大或较小的节点类型轻松进行纵向扩展。您可以通过添加分片扩展写入吞吐量，通过添加副本扩展读取吞吐量。
+ 主节点的先写后读一致性以及保证副本节点的最终一致性。
+ MemoryDB 支持传输中的加密、静态加密以及通过 [使用访问控制列表对用户进行身份验证 () ACLs](clusters.acls.md) 对用户进行身份验证。
+ 在 Amazon S3 中的自动快照的保留期可长达 35 天。
+ 每个集群最多支持 500 个节点和超过 100 TB 的存储空间（每个分片 1 个副本）。
+ 使用 TLS 进行传输中加密，使用 AWS KMS 密钥进行静态加密。
+ 使用 Valkey 和 Redis OSS [使用访问控制列表对用户进行身份验证 () ACLs](clusters.acls.md) 进行用户身份验证和授权。
+ 支持 AWS Graviton2 实例类型。
+ 出于监控、安全性和通知而与其他 AWS 服务集成，例如 CloudWatch、Amazon VPC、CloudTrail 和 Amazon SNS。
+ 完全托管的软件修补和升级。
+ AWS 身份和访问管理（IAM）集成和针对管理 API 的基于标签的访问控制。

# MemoryDB 核心组件
<a name="components"></a>

下面，您可以找到 MemoryDB 部署的主要组件概述。

**Topics**
+ [集群](#whatis.clusters)
+ [Nodes](#whatis.components.nodes)
+ [分片](#whatis.components.Shards)
+ [参数组](#whatis.components.parametergroups)
+ [子网组](#whatis.components.subnetgroups)
+ [访问控制列表](#whatis.components.acls)
+ [Users](#whatis.components.user)

## 集群
<a name="whatis.clusters"></a>

集群是服务单个数据集的一个或多个节点的集合。MemoryDB 数据集分为多个分片，每个分片有一个主节点和最多 5 个可选副本节点。主节点处理读取和写入请求，而副本节点仅处理读取请求。主节点可失效转移至副本节点，副本节点随之提升为该分片的新主节点。MemoryDB 将 Valkey 或 Redis OSS 作为数据库引擎运行，并在创建集群时为集群指定引擎版本。您可以使用 AWS CLI、MemoryDB API 或创建和修改集群。 AWS 管理控制台

每个 MemoryDB 集群都会运行一个 Valkey 或 Redis OSS 引擎版本。每个引擎版本都有其自身支持的特征。此外，每个引擎版本在参数组中均有一组参数，用于控制其管理的集群的行为。

集群的计算和内存容量由节点类型决定。您可以选择最能满足您需求的节点类型。如果一段时间后您的需求出现了变化，可以更改节点类型。有关信息，请参阅 [受支持的节点类型](nodes.supportedtypes.md)。

**注意**  
有关 MemoryDB 节点类型的定价信息，请参阅 [ MemoryDB 定价](https://aws.amazon.com/memorydb/pricing/)。

您可以使用 Amazon Virtual Private Cloud（Amazon VPC）服务，在虚拟私有云（VPC）上运行集群。使用 VPC 时，您的虚拟联网环境完全由您控制。您可以选择自己的 IP 地址范围、创建子网以及配置路由和访问控制列表。MemoryDB 可以管理快照、软件修补、自动故障检测和恢复。在 VPC 中运行集群不会产生额外费用。有关将 Amazon VPC 与 MemoryDB 结合使用的更多信息，请参阅 [MemoryDB 和 Amazon VPC](vpcs.md)。

许多 MemoryDB 操作面向集群：
+ 创建集群
+ 修改集群
+ 拍摄集群快照
+ 删除集群
+ 查看集群中的元素
+ 在集群中添加和删除成本分配标签

有关更多详细信息，请参阅以下相关主题：
+ [管理集群](clusters.md) 和 [管理节点](nodes.md)

  有关集群、节点和相关操作的信息。
+ [MemoryDB 中的故障恢复能力](disaster-recovery-resiliency.md)

  有关增强集群的容错能力的信息。

## Nodes
<a name="whatis.components.nodes"></a>

*节点*是 MemoryDB 部署中的最小构建基块，使用 Amazon EC2 实例运行。每个节点都运行在您创建集群时选择的引擎版本。节点属于集群所含的分片。

每个节点都运行在您创建集群时选择版本的引擎实例。如果需要，您可以将集群中的节点纵向扩展或缩减到不同类型。有关更多信息，请参阅 [扩展](scaling.md)。

一个集群中的所有节点都具有相同的节点类型。支持多种节点类型，每种可有不同的内存量。有关受支持的节点类型的列表，请参阅 [受支持的节点类型](nodes.supportedtypes.md)。

有关节点的更多信息，请参阅[管理节点](nodes.md)。

## 分片
<a name="whatis.components.Shards"></a>

分片是 1 到 6 个节点组成的分组，一个主写入节点和 5 个只读副本节点。一个 MemoryDB 集群始终有至少一个分片。

MemoryDB 集群最多可以拥有 500 个分区，并且跨分区对您的数据进行分区。例如，您可以选择配置一个 500 节点的集群，范围介于 83 个分片（一个主分片和 5 个副本分片）和 500 个分片（一个主分片，无副本分片）之间。确保可提供足够的 IP 地址来满足增长需求。常见的陷阱包括子网组中的子网 CIDR 范围太小，或者子网被其他集群共享和大量使用。

*多节点分区*通过指定一个读/写主节点和 1 到 5 个副本节点来实现复制。有关更多信息，请参阅 [了解 MemoryDB 复制](replication.md)。

有关分片的更多信息，请参阅[使用分片](shards.md)。

## 参数组
<a name="whatis.components.parametergroups"></a>

参数组是管理集群上的引擎运行时设置的简单方法。参数用于控制内存使用率、项目大小等。MemoryDB 参数组是可应用于集群的特定于引擎的参数的命名集合，该集群中的所有节点都以完全相同的方式进行配置。

有关 MemoryDB 参数组的更多详细信息，请参见 [使用参数组配置引擎参数](parametergroups.md)。

## 子网组
<a name="whatis.components.subnetgroups"></a>

*子网组*是您可为在 Amazon Virtual Private Cloud（VPC）环境中运行的集群指定的子网（通常为私有子网）集合。

在 Amazon VPC 中创建集群时，请指定一个子网组或使用提供的默认子网组。MemoryDB 使用该子网组选择与节点关联的子网和子网中的 IP 地址。

有关 MemoryDB 子网组的更多详细信息，请参阅 [子网和子网组](subnetgroups.md)。

## 访问控制列表
<a name="whatis.components.acls"></a>

访问控制列表是一个或多个用户的集合。访问字符串根据 [ACL 规则](https://valkey.io/topics/acl)授权用户访问 Valkey 或 Redis OSS 命令和数据。

有关 MemoryDB 访问控制列表的更多详细信息，请参阅 [使用访问控制列表对用户进行身份验证 () ACLs](clusters.acls.md)。

## Users
<a name="whatis.components.user"></a>

用户都有用户名和密码，可用于在 MemoryDB 集群上访问数据和发出命令。用户是访问控制列表（ACL）的成员，ACL 可用于确定用户在 MemoryDB 集群上的权限。有关更多信息，请参阅 [使用访问控制列表对用户进行身份验证 () ACLs](clusters.acls.md)。

# 相关服务
<a name="related-services-choose-between-memorydb-and-redis"></a>

[ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/whatis.html) 

在决定是使用 MemoryDB 还是使用 ElastiCache 时，请考虑以下比较结果：
+ MemoryDB 是一个耐用的内存数据库，适用于需要超快速主数据库的工作负载。如果您的工作负载需要可提供超快性能（微秒级读取和个位数毫秒级写入延迟）的耐用数据库，则应考虑使用 MemoryDB。如果您想构建使用 Valkey 或 Redis OSS 数据结构和 API 访问耐用主数据库的应用程序，MemoryDB 也可能非常适合您的使用场景。最后，您应该考虑使用 MemoryDB 来简化应用程序架构并降低成本，从使用数据库替换为使用缓存以提高耐用性和性能。
+ ElastiCache 是一项服务，通常用于缓存来自其他使用 Valkey 和 Redis OSS 的数据库和数据存储的数据。您应该考虑将 ElastiCache 用于缓存需要加速与现有主数据库或数据存储之间数据访问的工作负载（微秒读写性能）。对于想要使用 Valkey 或 Redis OSS 数据结构和 API 访问存储在主数据库或数据存储中的数据的使用场景，您也应该考虑使用 ElastiCache。

# 选择区域和可用区
<a name="regionsandazs"></a>

AWS 云计算资源存储在具有高度可用性的数据中心设施中。为了提供额外的扩展性和可靠性，这些数据中心设施位于不同的物理位置。这些位置按照*区域*和*可用区*进行分类。

AWS 区域是指大型、分布范围广泛的单独地理位置。可用区是 AWS 区域中的不同位置，旨在隔离其他可用区中的故障。它们提供与同一 AWS 区域中不同可用区之间的低成本、低延迟网络连接。

**重要**  
每一个区域都是完全独立的。您启动的任何 MemoryDB 活动（例如，创建集群）仅可在您当前的默认区域中运行。

若要在特定地区创建或使用集群，请使用相应的区域服务端点。有关服务端点，请参阅[MemoryDB 多区域](multi-region.md)。

使用 MemoryDB 多区域，您可以提高可用性和弹性，同时受益于多区域应用程序的低延迟本地读取和写入。有关使用 MemoryDB 多区域的信息，请参阅 [支持的区域和端点](#supportedregions)。

## 找到您的节点
<a name="regionsandazs.AZMode"></a>

任何至少有一个副本的集群都必须分布在多个可用区中。在单个可用区内找到所有内容的唯一方法是使用单节点分片组成的集群。

通过在不同的可用区内放置节点，MemoryDB 可排除某个可用区内的故障（如停电）导致可用性丢失的可能性。
+ [创建 MemoryDB 集群](getting-started.md#clusters.create)
+ [修改 MemoryDB 集群](clusters.modify.md)

## 支持的区域和端点
<a name="supportedregions"></a>

MemoryDB 在多个 AWS 区域中提供。这意味着，您可在满足您要求的位置启动 MemoryDB 集群。例如，您可以在最靠近您客户的 AWS 区域或者满足某些法律要求的特定 AWS 区域中启动。此外，随着 MemoryDB 将可用性扩展到新的 AWS 区域，MemoryDB 支持将当时最新的两个 `MAJOR.MINOR` 版本用于此新区域。有关 MemoryDB 版本的更多信息，请参阅 [引擎版本](engine-versions.md)。

默认情况下，AWS 开发工具包、AWS CLI、MemoryDB API 和 MemoryDB 控制台参考美国东部（弗吉尼亚州北部）区域。随着 MemoryDB 不断向新区域扩展，这些区域的新端点同样可以在您的 HTTP 请求、AWS 开发工具包、AWS CLI 和控制台中使用。

从设计而言，每个区域都与其他区域完全隔离。每个区域中有多个可用区（AZ）。通过在不同的可用区内启动节点，您可以实现可能的最大容错。有关区域和可用区域的更多信息，请参阅本主题开端的 [选择区域和可用区](#regionsandazs)。


**支持 MemoryDB 的区域**  

| 区域名称/区域 | 终端节点 | 协议 | 
| --- | --- | --- | 
| 美国东部（俄亥俄州）区域 `us-east-2` | `memory-db.us-east-2.amazonaws.com` | HTTPS | 
| 美国东部（弗吉尼亚州北部）区域 `us-east-1` | `memory-db.us-east-1.amazonaws.com` | HTTPS | 
| 美国西部（北加利福尼亚）区域 `us-west-1` | `memory-db.us-west-1.amazonaws.com` | HTTPS | 
| 美国西部（俄勒冈州）区域 `us-west-2` | `memory-db.us-west-2.amazonaws.com` | HTTPS | 
| 加拿大（中部）区域 `ca-central-1` | `memory-db.ca-central-1.amazonaws.com` | HTTPS | 
| 亚太地区（香港）区域 `ap-east-1` | `memory-db.ap-eastl-1.amazonaws.com` | HTTPS | 
| 亚太地区（孟买）区域 `ap-south-1` | `memory-db.ap-south-1.amazonaws.com` | HTTPS | 
| 亚太地区（东京）区域 `ap-northeast-1` | `memory-db.ap-northeast-1.amazonaws.com` | HTTPS | 
| 亚太地区（首尔）区域 `ap-northeast-2` | `memory-db.ap-northeast-2.amazonaws.com` | HTTPS | 
| 亚太地区（新加坡）区域 `ap-southeast-1` | `memory-db.ap-southeast-1.amazonaws.com` | HTTPS | 
| 亚太地区（悉尼）区域 `ap-southeast-2` | `memory-db.ap-southeast-2.amazonaws.com` | HTTPS | 
| 欧洲地区（法兰克福）区域 `eu-central-1` | `memory-db.eu-central-1.amazonaws.com` | HTTPS | 
| 欧洲地区（爱尔兰）区域 `eu-west-1` | `memory-db.eu-west-1.amazonaws.com` | HTTPS | 
| 欧洲地区（伦敦）区域 `eu-west-2` | `memory-db.eu-west-2.amazonaws.com` | HTTPS | 
| 欧洲地区（巴黎）区域 `eu-west-3` | `memory-db.eu-west-3.amazonaws.com` | HTTPS | 
| 欧洲地区（斯德哥尔摩）区域 `eu-north-1` | `memory-db.eu-north-1.amazonaws.com` | HTTPS | 
| 欧洲地区（米兰）区域 `eu-south-1` | `memory-db.eu-south-1.amazonaws.com` | HTTPS | 
| 欧洲地区（西班牙）区域 `eu-south-2` | `memory-db.eu-south-2.amazonaws.com` | HTTPS | 
| 南美洲（圣保罗）区域 `sa-east-1` | `memory-db.sa-east-1.amazonaws.com` | HTTPS | 
| 中国（北京）区域 `cn-north-1` | `memory-db---cn-north-1.amazonaws.com.rproxy.goskope.com.cn` | HTTPS | 
| 中国（宁夏）区域 `cn-northwest-1` | `memory-db---cn-northwest-1.amazonaws.com.rproxy.goskope.com.cn` | HTTPS | 

有关按区域划分的 AWS 产品和服务表，请参阅[按区域划分的产品和服务](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)。

有关区域内支持的可用区表，请参阅 [子网和子网组](subnetgroups.md)。

# 访问 MemoryDB
<a name="nodes-connecting"></a>

 每个 MemoryDB 集群端点都包含一个地址和一个端口。此集群端点支持 Valkey 和 Redis OSS 集群协议，使得客户端可以发现集群中每个节点的特定角色、IP 地址和插槽。当主节点出现故障并且副本取而代之时，您可以使用 Valkey 或 Redis OSS 集群协议连接到集群端点以发现新的主节点。

 您需要使用 **cluster nodes** 或 **cluster slots** 命令连接到集群端点才能发现节点端点。发现正确的密钥节点后，您可以直接连接到该节点以处理读取/写入请求。Valkey 或 Redis OSS 客户端可以使用集群端点自动连接到正确的节点。

要对集群中的特定节点进行问题排除，您还可以使用特定于节点的端点，但这些并非正常使用所必需。

 要找到集群端点，请参阅：
+ [查找 MemoryDB 集群的端点（AWS CLI）](endpoints.md#endpoints.find.cli)
+ [查找 MemoryDB 集群的端点（MemoryDB API）](endpoints.md#endpoints.find.api)

有关连接到节点或集群的详细信息，请参阅 [使用 redis-cli 连接到 MemoryDB 节点](getting-started.md#connect-tls)。

# MemoryDB 安全性
<a name="memorydb-security"></a>

MemoryDB 的安全性在三个级别上进行管理：
+ 要控制可对 MemoryDB 集群和节点执行托管操作的人员，请使用AWS Identity and Access Management（IAM）。使用 IAM 策略连接到 AWS 时，您的 AWS 账户必须具有授予执行操作所需的权限的 IAM 策略。有关更多信息，请参阅 [MemoryDB 中的身份和访问管理](iam.md)。
+ 要控制对集群的访问权限级别，您需要创建具有指定权限的用户并将其分配到访问控制列表（ACL）。ACL 随即相应地与一个或多个集群关联。有关更多信息，请参阅 [使用访问控制列表对用户进行身份验证 () ACLs](clusters.acls.md)。
+ 必须基于 Amazon VPC 服务在虚拟私有云（VPC）中创建 MemoryDB 集群。要控制哪些设备和 Amazon EC2 实例能够建立与 VPC 中 MemoryDB 集群的节点的端点和端口的连接，请使用 VPC 安全组。您可以使用传输层安全性（TLS）/安全套接字层（SSL）建立这些终端节点和端口连接。此外，公司的防火墙规则也可以控制公司中运行的哪些设备可以建立与 MemoryDB 集群的连接。有关 VPC 的更多信息，请参阅 [MemoryDB 和 Amazon VPC](vpcs.md)。

有关配置安全性的信息，请参阅[MemoryDB 中的安全性](security.md)。