Amazon MemoryDB 功能
Amazon MemoryDB 是与 Redis OSS 兼容的持久型内存数据库服务,可提供超快性能。它专为带有微服务架构的现代化应用程序而构建。
Amazon MemoryDB 与 Redis OSS 兼容,使客户能够采用他们目前所用的灵活且易用的 Redis OSS 数据结构、API 和命令快速构建应用程序。借助 Amazon MemoryDB,您的所有数据都存储在内存中,使您能够实现微秒级读取,以及个位数毫秒的写入延迟和高吞吐量。Amazon MemoryDB 还使用分布式事务日志跨多可用区(AZ)持久存储数据,以实现快速失效转移、数据库恢复和节点重启。Amazon MemoryDB 提供内存中性能和多可用区持久性,可用作您的微服务应用程序的高性能主数据库,因此无需单独管理高速缓存和持久数据库。
Redis OSS 兼容性
Redis OSS 是一种快速、开源、内存中的键值数据存储库。开发人员利用 Redis OSS 提供亚毫秒级的响应时间,每秒处理数百万个请求,支持游戏、广告技术、金融服务、医疗保健和 IoT 等行业的实时应用程序。
Redis OSS 提供了灵活的 API、命令和数据结构,例如流、集合和列表,用于构建敏捷、多功能的应用程序。MemoryDB 与 Redis OSS 保持兼容,并支持您熟悉的那几组 Redis OSS 数据类型、参数和命令。这意味着您如今用于 Redis OSS 的那些代码、应用程序、驱动程序和工具也可以与 MemoryDB 结合使用,因此您能够快速构建应用程序。
超快的性能
MemoryDB 将您的整个数据集存储在内存中,可实现微秒级的读取延迟、几毫秒的写入延迟以及高吞吐量。它每天可处理超过 13 万亿个请求,并支持每秒 1.6 亿个请求的峰值。 使用微服务架构进行构建的开发人员需要超高的性能,因为在每次用户交互或 API 调用中,这些应用程序可能需要与很多服务组件交互。使用 MemoryDB,您可以实现极低的延迟,以便为最终用户提供实时性能。
Amazon MemoryDB 包括增强型 I/O 多路复用,可大规模显著改善吞吐量和延迟。增强型 I/O 多路复用非常适合具有多个客户端连接的吞吐量受限工作负载,其优势会随工作负载并发级别扩展。例如,相较于与 Redis OSS 兼容的 MemoryDB 版本 6,使用 r6g.4xlarge 节点并运行 5200 个并发客户端时,吞吐量(每秒读取和写入操作数)可增加高达 46%,P99 延迟可减少高达 21%。对于这些类型的工作负载,节点的网络 I/O 处理可能成为扩展能力的限制因素。
通过增强型 IO 多路复用,每个专用网络 IO 线程会将来自多个客户端的命令传送到 Redis OSS 引擎,从而利用 Redis 高效批量处理命令的能力,如下图所示:
![](https://d1.awsstatic.com/product-marketing/memorydb/EnhancedIOMultiplexing_postLaunch_memDB.ce4a9568e440ea24b5a1afa470ab90d3564451d2.jpg)
使用 Redis OSS 7 时可自动使用增强型 IO 多路复用,无需额外付费。无需更改应用程序或服务配置即可使用 MemoryDB 增强型 I/O 多路复用。
有关更多信息,请参阅文档。
多可用区持久性
除了在内存中存储您的整个数据集以外,MemoryDB 还利用分布式事务日志来提供数据持久性、一致性和可恢复性。MemoryDB 在多可用区中存储数据,因此您可以实现快速的数据库恢复和重新启动。对于需要低延迟和高吞吐量的工作负载,您可以将 MemoryDB 用作单一主数据库服务,而无需单独管理缓存以获得高速度,并通过其他关系数据库或非关系数据库获得可靠性。
可扩展性
您可以扩展 MemoryDB 集群,以满足不断变化的应用程序需求:通过添加或移除节点进行水平扩展,或者通过切换到更大或更小的节点类型进行垂直扩展。MemoryDB 支持利用分片进行写入扩展,以及通过添加副本进行读取扩展。在执行调整大小操作期间,您的集群会继续保持在线状态,并支持读取和写入操作。
完全托管
易于使用
开始使用 MemoryDB 的步骤非常简单。只需利用 AWS 管理控制台启动一个新的 MemoryDB 集群,也可以使用 AWS CLI 或 SDK。MemoryDB 数据库实例为您所选择的节点类型预配置了合适的参数和设置。您在几分钟之内即可启动集群并连接应用程序,而无需进行其他配置。
监控和指标
MemoryDB 为您的数据库实例提供了 Amazon CloudWatch 指标。您可以使用 AWS 管理控制台查看适用于集群的超过 35 个关键运行指标,其中包括计算、内存、存储、吞吐量、活动连接等等。
自动软件修补
MemoryDB 自动通过新的更新使您的集群保持最新状态,您可以轻松将集群升级到 Redis OSS 的最新版本。
安全性
联网
MemoryDB 在 Amazon VPC 中运行,这样您可以将数据库隔离在您自己的虚拟网络中,并使用行业标准的加密 IPsec VPN 与您的本地 IT 基础设施连接。此外,使用 MemoryDB 的 VPC 配置,您可以配置防火墙设置并控制对您的数据库实例的网络访问。
加密
借助 MemoryDB,使用您通过 AWS Key Management Service(KMS)创建的密钥和控制来加密静态数据。 此外,使用 AWS Graviton2 节点类型创建的集群包含始终可用的 256 位 DRAM 加密。MemoryDB 支持使用传输层安全性协议 (TLS) 进行动态加密。
API 级权限
您可以使用与 Amazon MemoryDB 集成的 AWS Identity and Access Management (IAM) 功能,控制 AWS IAM 用户和组可对 Amazon MemoryDB 资源执行的操作。例如,您可以配置 IAM 规则以帮助确保特定用户仅拥有只读访问权限,同时管理员可创建、修改和删除资源。有关 API 级权限的更多信息,请参阅使用适用于 Amazon MemoryDB 的 AWS IAM Policy。
身份验证和授权
MemoryDB 利用 Redis OSS 访问控制列表(ACL)来控制集群的身份验证和授权。通过 ACL,您可以为同一集群中的不同用户定义不同的权限。
与 Kubernetes 集成
AWS Controllers for Kubernetes (ACK) for Amazon MemoryDB 让您可以直接定义并使用来自您的 Kubernetes 集群的 MemoryDB 资源。您可以通过它利用 MemoryDB 来支持您的 Kubernetes 应用程序,而不必在集群外定义 MemoryDB 资源,或在集群内运行与管理内存数据库功能。您可以从 Amazon ECR 下载 MemoryDB ACK 容器映像,并参考文档以获得安装指导。 您也可以访问博客以获取更多详细信息。
注意:ACK for Amazon MemoryDB 现已正式上市。请在我们的 Github 页面上提供您的反馈。
![ACK for Amazon MemoryDB ACK for Amazon MemoryDB](https://d1.awsstatic.com/product-marketing/databases/memdb-ack-launch-chart-1000x350.316970c16cc8960cfa2a1434d11b4436340e33e0.png)
JSON 支持
除了 Redis OSS 中包含的数据结构以外,Amazon MemoryDB 还免费为 JavaScript 对象表示法(JSON)文档提供了本地支持。您只需使用专为 JSON 文档而设计和优化的内置命令来开发应用程序。MemoryDB 支持部分 JSON 文档更新,以及使用 JSONPath 查询语言执行的强大搜索和筛选功能。当使用 Redis OSS 6.2 和更高版本时,可以获得 JSON 支持。有关更多信息,请参阅 MemoryDB 文档。
向量搜索
截至 2024 年 6 月 26 日,Amazon MemoryDB 在 AWS 上的常用向量数据库中提供极快的向量搜索性能和极高的召回率。通过适用于 MemoryDB 的向量搜索功能,您可以存储数百万个向量嵌入,实现个位数毫秒级的向量搜索速度,并在超过 99% 的召回率下,以业界顶尖的吞吐量进行快速更新。
向量是非结构化数据(例如文本、图像和视频)的数字表示,是从有助于捕捉基础数据的语义含义的机器学习(ML)模型创建的。MemoryDB 使机器学习和生成式人工智能(AI)模型能够实时处理存储在 MemoryDB 中的数据,而无需移动数据。借助 MemoryDB,您可以在 Redis OSS 数据结构中存储、索引、检索和搜索向量嵌入。您还可以在 MemoryDB 数据库中存储来自人工智能/机器学习模型的向量嵌入,例如来自 Amazon Bedrock 和 Amazon SageMaker 的嵌入。阅读我们的文档,了解有关在 MemoryDB 上进行向量搜索的更多信息。
适用于 MemoryDB 的向量搜索功能适用于峰值性能和规模是最重要选择标准的应用场景。在聊天机器人的检索增强生成(RAG)、异常(欺诈)检测、实时推荐引擎和文档检索等使用案例中,可以使用向量搜索为实时机器学习和生成式人工智能应用程序提供支持。
成本优化
作为一种成本较低的方式,MemoryDB 提供数据分层来将您的集群扩展到数百 TB 的容量。数据分层为 MemoryDB 提供了一个具有性价比的选项,除了在内存中存储数据外,还可以在每个集群节点中使用成本较低的固态硬盘(SSD)。它非常适合于定期访问 20% 以内总体数据集的工作负载,以及在 SSD 上访问数据时能够容忍额外延迟的应用程序。
当使用具有数据分层的集群时,MemoryDB 设计用于在可用内存容量消耗时,自动且透明地将最近使用最少的项目从内存移动到本地连接的 NVMe SSD。当您访问存储在 SSD 上的项目时,MemoryDB 会在处理请求之前将其移回内存。MemoryDB 数据分层可在基于 Graviton2 的 R6gd 节点上使用。与 R6g 节点(仅内存)相比,R6gd 节点的总容量(内存+SSD)增加了近 5 倍,可以帮助您在最大利用率下实现 60% 以上的存储成本节省。假设有 500 字节的字符串值,与对内存中数据的读取请求相比,对存储在 SSD 上的数据的读取请求通常会增加 450µs 的延迟。
MemoryDB 提供预留节点,如果您在一年或三年期内达到承诺使用量,与按需节点价格相比,最多可节省 55%。预留节点是对 MemoryDB 按需节点的补充,可为企业提供灵活性,帮助降低成本。MemoryDB 提供了三种预留节点付款选项(不预付、部分预付和全额预付),您可以通过这三种选项平衡您的预付款金额与您的有效小时价格。
MemoryDB 预留节点在节点系列和 AWS 区域内提供大小灵活性。这意味着折扣后的预留节点费率将自动应用于同一节点系列中的各种大小的使用量。大小灵活性功能将减少您花在管理预留节点上的时间,而且由于不再受特定数据库节点大小的限制,因此即使您的数据库需要更新,也可以从折扣中获得最大收益。