一般性问题

什么是适用于 Redis 的 Amazon MemoryDB?

适用于 Redis 的 Amazon MemoryDB 是与 Redis 兼容、持久的内存数据库服务,可提供超快的性能。MemoryDB 使您在现代应用程序(例如使用微服务架构构建的应用程序)方面实现微秒级读取延迟、个位数毫秒级写入延迟、高吞吐量和多可用区持久性。这些应用程序需要低延迟、高可扩展性,并使用 Redis 灵活的数据结构和 API 使开发过程更加灵活、简单。MemoryDB 将您的整个数据集存储在内存中,并利用分布式事务日志来保证内存速度和数据的持久性、一致性和可恢复性。您可以将 MemoryDB 用作完全托管式主数据库,从而无需单独管理缓存、持久的数据库或所需的底层基础设施即可构建高性能应用程序。

如何开始使用 MemoryDB?

首先,您可以使用 AWS 管理控制台、命令行界面(CLI)或软件开发工具包(SDK)创建新的 MemoryDB 集群。要在控制台中创建 MemoryDB 集群,请登录并导航到适用于 Redis 的 Amazon MemoryDB。然后,选择“开始使用”,再选择“创建新集群”。 有关更详细的步骤以及如何开始使用 CLI,请查看 MemoryDB 文档

什么是 Redis?

Redis 是一种开源、内存、键值数据存储,这种存储利用灵活的数据结构,例如字符串、列表、集合、哈希、排序集等。Redis 还提供地理空间查询、发布/订阅、使用 Lua 的自定义脚本等功能。由于将数据存储在内存中,Redis 提供了超快的性能和高吞吐量。Redis 连续第五年被评为 Stack Overflow 开发人员“最喜爱的数据库”,也是云原生计算基金会 (CNCF) 最终用户社区使用率排名第一的数据库。CNCF 的成立旨在鼓励和支持云原生计算,包括容器和微服务在内。有关 Redis 的更多信息,请访问此页面,了解如何在 AWS 上运行 Redis 或查看开源文档

MemoryDB 与 Redis 兼容吗?

兼容,MemoryDB 与开源 Redis 兼容,并支持您熟悉的 Redis 数据类型、参数和命令。这意味着您现在已经在 Redis 上使用的应用程序代码、客户端和工具可以与 MemoryDB 一起使用。MemoryDB 支持所有 Redis 数据类型,例如字符串、列表、集合、哈希、有序集合、HyperLogLog、位图和流。此外,MemoryDB 还支持 200 多个 Redis 命令,但 Redis 管理员命令除外,因为 MemoryDB 会为您管理集群。

MemoryDB 支持哪些 Redis 版本?

有关 MemoryDB 支持的 Redis 版本的信息,请访问 MemoryDB 文档

什么是 MemoryDB 集群?

MemoryDB 集群是为单个数据集提供服务的一个或多个节点的集合。MemoryDB 数据集分为多个分片,每个分片都有一个主节点和最多 5 个可选副本节点。主节点处理读取和写入请求,而副本仅处理读取请求。主节点可以失效转移到副本节点,将该副本提升为该分片的新主节点。有关更多信息,请访问 MemoryDB 文档

我应该在什么时候使用 MemoryDB 而不是 Amazon ElastiCache for Redis?

适用于 Redis 的 MemoryDB 是一款持久内存数据库,适用于需要超快速、与 Redis 兼容的主数据库的工作负载。如果您的工作负载需要一个提供超快性能(微秒级读取和个位数毫秒级写入延迟)的持久数据库,应考虑使用 MemoryDB。如果您想使用 Redis 数据结构和 API 以及持久的主数据库来构建应用程序,MemoryDB 也可能非常适合您的使用案例。最后,您应该考虑使用 MemoryDB 来简化应用程序架构,并使用缓存代替数据库来降低成本,从而提高耐久性和性能。

ElastiCache for Redis 是一项服务,常用于使用 Redis 缓存来自其他数据库和数据存储的数据。如果您想使用现有主数据库或数据存储加速工作负载的数据访问(微秒级读取和写入性能),应考虑将 ElastiCache for Redis 用于缓存这些工作负载。如果您想使用 Redis 数据结构和 API 来访问存储在主数据库或数据存储中的数据,您还应该考虑在使用案例中使用 ElastiCache for Redis。

MemoryDB 的可用性是什么?

目前的服务限制和限额是多少?

有关目前的限制和限额,请参阅 MemoryDB 文档。

性能和持久性

使用 MemoryDB 可以实现哪种程度的延迟和吞吐量?

MemoryDB 的吞吐量和延迟因节点类型、负载大小和客户端连接数量而异。MemoryDB 可在集群分片的主节点上提供微秒级读取延迟、个位数毫秒级写入延迟和先写后读延迟。MemoryDB 每秒最多可支持 39 万个读取请求和 10 万个写入请求,而且每个节点可支持高达 1.3 GB/s 的读取吞吐量和 100 MB/s 的写入吞吐量(基于对只读和只写工作负载的内部测试)。MemoryDB 集群将数据分片到一个或多个节点,使您能够向集群添加更多分片或副本,以提高合计吞吐量。

MemoryDB 如何持久存储我的数据?

除了在内存中存储您的整个数据集以外,MemoryDB 还利用分布式事务日志来提供数据持久性、一致性和可恢复性。通过跨多个可用区存储数据,MemoryDB 可以快速恢复和重启数据库。通过将数据存储在内存中,MemoryDB 可以提供超快的性能和高吞吐量。

MemoryDB 的持久性功能与开源 Redis 仅附加文件 (AOF) 功能有何不同?

MemoryDB 利用分布式事务日志来持久存储数据。通过跨多个可用区存储数据,MemoryDB 可以快速恢复和重启数据库。此外,MemoryDB 可为副本节点提供最终一致性,并在主节点上提供一致性读取。

开源 Redis 包括可选的仅附加文件 (AOF) 功能,该功能可将数据保存在主节点磁盘上的文件中以实现持久性。但是,由于 AOF 将数据本地存储在单个可用区的主节点上,因此存在数据丢失的风险。此外,如果某个节点发生故障,副本节点也可能会出现一致性问题。

MemoryDB 是否支持高可用性?

是的,MemoryDB 支持高可用性。您可以创建具有多可用区可用性的 MemoryDB 集群,不同可用区最多具有 5 个副本节点。当主节点发生故障时,MemoryDB 会自动进行失效转移,将其中一个副本节点升级为新的主节点并将写入流量定向到该副本节点。此外,MemoryDB 还会利用分布式事务日志来确保副本上的数据保持最新状态,即使在主节点发生故障时也是如此。对于计划外停机,失效转移通常在 10 秒内发生,而对于计划内停机,失效转移通常在 200 毫秒内发生。

MemoryDB 使用分布式事务日志持久存储在数据库恢复、重启、失效转移以及主节点和副本节点之间实现最终一致性期间写入数据库的数据。

MemoryDB 的一致性与开源 Redis 有何不同?

开源 Redis 允许在每个分片的主节点上进行写入和强一致性读取,并允许从只读副本节点进行最终一致读取。如果主节点发生故障,这些一致性属性将无法得到保证,因为写入操作可能会在失效转移期间丢失,从而违反一致性模型。

MemoryDB 的一致性模型与开源 Redis 类似。但是,在 MemoryDB 中,数据不会在失效转移期间丢失,因此无论节点是否发生故障,客户端都可以从主节点读取写入数据。只有成功保存在多可用区事务日志中的数据才可见。副本节点最终仍保持一致,且延迟指标将发布到 Amazon CloudWatch

MemoryDB 性能与开源 Redis 相比如何?

在 MemoryDB for Redis 7 及更高版本中,我们引入了增强型 I/O 多路复用功能,该能够可以进一步大规模提高吞吐量和降低延迟。增强型 IO 多路复用功能非常适合具有多个客户端连接的吞吐量限制型工作负载,其优势可以随工作负载并发水平而扩展。例如,在使用 r6g.4xlarge 节点并运行 5200 个并发客户端时,与 MemoryDB for Redis 6 相比,吞吐量(每秒读写操作数)最高可提升 46%,P99 延迟最高可降低 21%。对于这些类型的工作负载,节点的网络 I/O 处理可能成为扩展能力的限制因素。借助 MemoryDB for Redis 7,每个专用网络 IO 线程会将来自多个客户端的命令传送到 Redis 引擎,从而利用 Redis 高效批量处理命令的能力。

有关更多信息,请参阅文档

数据摄取和查询

如何向 MemoryDB 写入数据和从中读取数据?

要向 MemoryDB 集群写入数据和从中读取数据,请使用所支持的 Redis 客户端之一连接到集群。有关受支持的 Redis 客户端的列表,请参阅 Redis 文档。有关如何使用 Redis 客户端连接到 MemoryDB 集群的说明,请参阅 MemoryDB 文档

硬件、扩展和维护

使用 MemoryDB 最大可以创建多大的集群?

您可以创建一个最多包含 500 个节点的 MemoryDB 集群。假设您有 250 个主节点,每个主节点都有一个副本以实现高可用性(总共 500 个节点),那么将提供约 100 TB 的最大内存存储容量。

我能否调整 MemoryDB 集群的大小?

能,您可以横向和纵向调整 MemoryDB 集群的大小。您可以通过添加或移除节点来横向扩展集群。您可以选择添加分片以将数据集分布到更多分片,还可以向每个分片添加额外的副本节点以提高可用性和读取吞吐量。您还可以移除分片和副本以缩减集群。此外,您也可以通过更改节点类型来纵向扩展集群,这会更改每个节点的内存和 CPU 资源。在横向和纵向调整大小操作期间,您的集群会继续保持在线状态并处理读取和写入请求。

如何更新我的 MemoryDB 集群?

MemoryDB 让您可以轻松维护和更新集群,并提供两种不同的集群维护流程。首先,对于某些强制性更新,MemoryDB 会在您指定的维护时段内自动修补集群。其次,对于某些更新,MemoryDB 使用服务更新,您可以在将来的维护时段内随时或计划应用这些更新。某些服务更新会在特定日期之后自动安排在维护时段内。集群更新有助于增强集群的安全性、可靠性和运行性能,而且您的集群会继续保持在线状态并处理读取和写入请求。有关集群维护的更多信息,请参阅 MemoryDB 文档

备份和还原

我能否备份 MemoryDB 集群?

能,您可以创建快照来备份 MemoryDB 集群的数据和元数据。您可以手动创建快照,也可以使用 MemoryDB 的自动快照计划程序在每天指定的时间拍摄新快照。您可以选择快照创建后最多保留 35 天,也可以选择将其保留在 MemoryDB。快照存储在 Amazon S3 中,Amazon S3 的耐久性为 99.999999999%(11 个 9)。此外,您也可以选择在删除集群时拍摄集群的最终快照。此外,您还可以将 MemoryDB 快照从服务导出到您的 Amazon S3 存储桶中。有关快照的更多信息,请参阅 MemoryDB 文档

我能否从快照还原 MemoryDB 集群?

能,您可以在创建新的 MemoryDB 集群时从快照还原 MemoryDB 集群。

我能否从 Redis RDB 文件还原 MemoryDB 集群?

能,您可以从 Redis RDB 文件还原 MemoryDB 集群。您可以在创建新的 MemoryDB 集群时指定要从中还原的 RDB 文件。

我能否将数据从 ElastiCache for Redis 迁移到 MemoryDB 集群?

能,您可以将数据从 ElastiCache for Redis 迁移到 MemoryDB。首先,创建 ElastiCache for Redis 集群的快照,然后将其导出到 S3 存储桶中。接下来,创建一个新的 MemoryDB 集群并指定要从中还原的备份。MemoryDB 将使用快照中的数据和 Redis 元数据创建一个新集群。有关将数据从 ElastiCache for Redis 迁移到 MemoryDB 的更多信息,请参阅 MemoryDB 文档

指标

MemoryDB 是否会为我的集群提供运行和性能指标?

是的,MemoryDB 会为您的集群提供运行和性能指标。MemoryDB 有 30 多个 CloudWatch 指标,您可以在 MemoryDB 控制台中查看这些指标。有关 CloudWatch 指标和 MemoryDB 的更多信息,请参阅 MemoryDB 文档

安全性与合规性

MemoryDB 是否会加密我的数据?

是的,MemoryDB 支持对静态和传输中的数据加密。要进行静态加密,您可以使用 AWS Key Management Service 客户自主管理型密钥(CMK)或 MemoryDB 提供的密钥。使用适用于 MemoryDB 集群的 Graviton2 实例时,将使用始终开启的 256 位 DRAM 加密在内存中加密您的数据。

如何为 MemoryDB 集群配置身份验证和授权?

MemoryDB 利用 Redis 访问控制列表(ACL)来控制集群的身份验证和授权。通过 ACL,您可以为同一集群中的不同用户定义不同的权限。ACL 是一个或多个用户的集合。每个用户都有一个密码和访问字符串,用于授予对 Redis 命令和数据的访问权限。要了解有关 MemoryDB 中 ACL 的更多信息,请参阅 MemoryDB 文档

我能否在 VPC 中使用 MemoryDB?

能,所有 MemoryDB 集群都必须在 VPC 中启动。

MemoryDB 满足哪些合规性认证要求?

我们将继续支持更多的合规认证。有关合规认证情况的最新信息,请参阅此处

我是否可以获取通过我的账户发起的适用于 Redis 的 Amazon MemoryDB API 调用的历史记录,用于安全分析和运营故障排除?

是。要获取所有通过您的账户发起的 Amazon MemoryDB API 调用的历史记录,只需在 AWS 管理控制台中打开 CloudTrail 即可。有关更多信息,请访问 CloudTrail 主页

成本优化

什么是适用于 Redis 的 Amazon MemoryDB 的数据分层功能?

适用于 Redis 的 Amazon MemoryDB 的数据分层功能是 MemoryDB 的一个具有性价比的新选项,该功能会自动将不常访问的数据从内存移动到高性能、本地连接的固态硬盘 (SSD)。数据分层有助于增加容量,简化集群管理,并提高 MemoryDB 的总拥有成本(TCO)。

为什么要使用适用于 Redis 的 Amazon MemoryDB 的数据分层功能?

当您需要一种更简单、更具成本效益的方法扩展 MemoryDB 集群的数据容量,而不影响应用程序的可用性时,则应使用数据分层。数据分层非常适合定期访问多达 20% 数据的工作负载,以及在初次需要访问频率较低的项目时能够容忍额外延迟的应用程序。与 R6g 节点(仅内存)相比,使用 R6gd 节点进行数据分层,总容量(内存+SSD)增加了近 5 倍,可以帮助您在最大利用率下实现 60% 以上的存储成本节省。假设有 500 字节的字符串值,与对内存中数据的读取请求相比,对存储在 SSD 上的数据的读取请求通常会增加 450µs 的延迟。

适用于 Redis 的 Amazon MemoryDB 的数据分层功能的工作原理是什么?

当可用内存容量耗尽时,数据分层通过在集群节点中使用 SSD 存储来发挥作用。使用具有 SSD 存储的集群节点时,会自动启用数据分层,并且 MemoryDB 管理数据放置,使用最近最少使用 (LRU) 策略在内存和磁盘之间以透明方式移动项目。当内存被完全消耗时,MemoryDB 会自动检测哪些项目最近使用得最少,并将其值移动到磁盘,从而优化成本。当应用程序需要从磁盘检索项目时,MemoryDB 会在处理请求之前以透明方式将其值移动至内存,对性能的影响最小。

如何开始使用适用于 Redis 的 Amazon MemoryDB 的数据分层功能?

首先,使用内存优化实例、基于 ARM 的 AWS Graviton2 处理器和 NVMe SSD (R6gd) 创建新的 MemoryDB 集群。然后,您可以通过导入快照从现有集群迁移数据。

适用于 Redis 的 Amazon MemoryDB 数据分层功能如何收费?

具有数据分层的 R6gd 节点基于消耗的实例小时数计算费用。与其他 MemoryDB 节点类型类似,您还需要为使用 R6gd 时写入的数据付费。有关更多详细信息,请参阅 MemoryDB 定价页面

什么是适用于 Redis 的 Amazon MemoryDB 的预留节点?

如果您在一年或三年期内达到承诺使用量,MemoryDB 预留节点最多可以比按需节点节省 55% 的费用。预留节点是对 MemoryDB 按需节点的补充,可为企业提供灵活性,帮助降低成本。MemoryDB 提供了三种预留节点付款选项(不预付、部分预付和全额预付),您可以通过这三种选项平衡您的预付款金额与您的有效小时价格。

适用于 Redis 的 Amazon MemoryDB 预留节点的大小灵活性工作原理是什么?

MemoryDB 预留节点在节点系列和 AWS 区域内提供大小灵活性。这意味着折扣后的预留节点费率将自动应用于同一节点系列中的各种大小的使用量。例如,如果您购买了 r6g.xlarge 预留节点并需要扩展到更大的节点 r6g.2xlarge,则您的预留节点折扣费率将自动应用于同一 AWS 区域中 r6g.2xlarge 节点的 50% 使用量。大小灵活性功能将减少您花在管理预留节点上的时间,而且由于不再受特定数据库节点大小的限制,因此即使您需要更改容量,也可以从折扣中获得最大收益。

适用于 Redis 的 Amazon MemoryDB 预留节点如何收费?

MemoryDB 预留节点定价依据节点类型、付款期限(一年或三年)、付款选项(不预付、部分预付、全额预付)和 AWS 区域确定。请注意,预留节点的价格不包括数据写入或快照存储成本。有关更多详细信息,请参阅 MemoryDB 定价页面

适用于 Redis 的 Amazon MemoryDB 预留节点支持哪些节点系列?

MemoryDB 为经过内存优化的 R6g、R7g 和 R6gd(带数据分层)节点提供预留节点。

什么是适用于 Redis 的 Amazon MemoryDB 的向量搜索功能?

MemoryDB 的向量搜索公开预览版支持存储数百万个向量,查询和更新响应时间为几毫秒,每秒数万次查询 (QPS),调用率超过 99%。MemoryDB 的向量搜索可以存储您从 Amazon BedrockAmazon SageMaker 等服务生成的向量。

为什么应该使用适用于 Redis 的 MemoryDB 的向量搜索功能?

在使用 Redis 开发 API 构建高速人工智能和机器学习应用程序时,您应该使用适用于 Redis 的 Amazon MemoryDB 的向量搜索功能。MemoryDB 的向量搜索适用于峰值性能和规模是最重要选择标准的使用案例。您可以使用 MemoryDB 向量搜索来支持机器学习和生成式人工智能使用案例,例如检索增强生成、异常检测、文档检索和实时推荐。

在配置由人工智能/机器学习驱动的应用程序以提高速度时,通过调用来衡量结果可能会导致响应质量降低。MemoryDB 的向量搜索公开预览版支持存储数百万个向量,查询和更新响应时间为几毫秒,每秒数万次查询 (QPS),调用率超过 99%。

适用于 Redis 的 Amazon MemoryDB 的向量搜索功能的工作原理是什么?

借助向量搜索,您可以在 Amazon MemoryDB 中存储、索引和查询向量嵌入。首先,您可以直接通过嵌入模型(例如 Amazon Titan 嵌入模型)或通过 Amazon Bedrock 等托管式服务生成向量嵌入。然后,在使用 MemoryDB 的数据面板 API 初始化向量索引后,将嵌入内容加载到 MemoryDB 中。MemoryDB 将向量嵌入存储为 Redis JSON 或哈希数据类型。加载后,MemoryDB 会使用您的向量嵌入生成索引。加载新数据、更新现有数据或删除数据时,MemoryDB 会在个位数毫秒内将更新流式传输到向量索引。MemoryDB 支持高效的搜索查询,并使您能够使用多个距离指标(余弦距离、点积距离、欧几里得距离)进行搜索。有关如何使用 MemoryDB 的向量搜索的更多信息,请参阅文档

适用于 Redis 的 Amazon MemoryDB 的向量搜索功能如何收费?

使用适用于 Redis 的 Amazon MemoryDB 的向量搜索功能无需支付额外费用。访问适用于 Redis 的 Amazon MemoryDB 定价页面了解更多信息。

探索客户案例。
阅读客户案例

了解客户如何使用 MemoryDB。

了解更多 
通过教程学习
通过教程学习

探索如何设置您的第一个 MemoryDB 集群。

开始使用 
 开始使用 MemoryDB 构建
开始使用 MemoryDB 构建

查看 MemoryDB 用户指南了解如何开始使用。

阅读文档