本页介绍了 Memorystore for Redis Cluster 实例的集群和节点规范。如需了解如何创建实例,请参阅创建实例。
选择节点类型
集群中的所有分片都使用您选择的相同节点类型。适合您集群的最佳节点类型取决于您对价格、性能和键空间容量的要求。
redis-shared-core-nano
节点类型适用于小型工作负载。此类节点提供可变的性能,且没有 SLA,因此不适合生产工作负载。
redis-standard-small
节点类型可让您预配小型集群,并以较小的增量扩展集群,与使用其他节点类型相比,费用可能更低。redis-standard-small
还具有以下优势:可将键空间分布到更多节点,从而提高 vCPU 总数。只要较小节点的总键空间容量足以满足您的数据需求,这种配置就能提供比 redis-highmem-medium
更好的性价比。
如果您需要的集群容量超过 redis-highmem-medium
提供的容量,我们才建议您选择 redis-highmem-xlarge
节点类型。虽然 redis-highmem-xlarge
节点类型的大小是 redis-highmem-medium
类型的四倍,但性能并非四倍,因为当 vCPU 添加到越来越大的节点(纵向伸缩)时,Redis 性能不会呈线性比例关系。相反,为了获得更好的价格性能,您应该通过向集群添加更多节点来横向扩容。
节点类型规范
节点容量和特征取决于您选择的四种可用节点类型中的哪一种:
键空间容量和预留的开销
节点类型 | 默认可写入键空间容量 | 节点总容量 |
---|---|---|
redis-shared-core-nano | 1.12 GB | 1.4 GB |
redis-standard-small | 5.2 GB | 6.5 GB |
redis-highmem-medium | 10.4 GB | 13 GB |
redis-highmem-xlarge | 46.4 GB | 58 GB |
Memorystore 会自动预留一部分实例容量,以帮助防止出现内存不足 (OOM) 错误。这可确保顺畅的密钥读取和写入体验。内存限制和存储空间详情如下:
自定义存储空间:虽然我们建议使用默认设置,但您可以选择使用
maxmemory
配置来调整预留存储空间量。如需了解maxmemory
,请参阅受支持的实例配置。您可获得多少存储空间?请参阅上表的默认可写入键空间容量列。此属性显示了默认情况下可用于密钥的存储空间大小。
最大限度地利用存储空间:如果您希望尽可能地利用存储空间,则总节点容量列会显示将
maxmemory
配置设置为 100% 时的存储空间上限。不过,不建议选择高于默认设置的maxmemory
值。redis-shared-core-nano
节点类型的硬性限制为 1.12 GB,无法通过maxmemory
配置进行更改。
节点特征
节点类型 | vCPU 数量 | 提供的 SLA | 客户数量上限 | 客户端的最大内存(maxmemory-clients 配置) |
---|---|---|---|---|
redis-shared-core-nano | 0.5 | 否 | 5,000 | 12% |
redis-standard-small | 2 | 是 | 16,000(默认)。最大值为 32,000 | 7% |
redis-highmem-medium | 2 | 是 | 32,000(默认)。最大值为 64,000 | 7% |
redis-highmem-xlarge | 8 | 是 | 64,000 | 4% |
为集群选择的虚拟 CPU (vCPU) 越多,性能就越好。如果您的集群运行资源密集型工作负载,请选择具有较高 vCPU 的节点类型(例如 redis-highmem-xlarge
)。如果您的集群执行的任务对资源的要求较低,请选择具有较低 vCPU 的节点类型(例如 redis-highmem-medium
)。
扩缩实例
在创建 Memorystore for Redis 集群实例时,您需要为该实例选择节点类型,并指定该实例的分片数量。创建实例后,随着实例的容量需求发生变化,您可能需要通过以下方式扩缩实例:
- 更改实例的分片数量。这是横向伸缩。
您可以通过执行以下某项操作来横向扩缩实例:
- 向实例添加分片。这属于实例伸缩。
- 从实例中移除分片。这是在中伸缩实例。
- 更改实例的节点类型。这称为纵向伸缩。如需纵向扩缩实例,请将实例的节点类型更改为以下节点类型之一:
- 改用更大的节点类型。这是纵向伸缩实例。
- 改为使用较小的节点类型。这是在伸缩实例。
集群规范
此部分显示了在给定集群配置、节点类型和副本数的情况下,集群的最小和最大容量。
最小可写入容量
可写入容量是指可用于写入密钥的存储空间量。它等于一个实例节点的大小。因此,根据节点类型的不同,最小可写入容量为 1.4 GB、6.5 GB、13 GB 或 58 GB。最小可写入容量不受您选择的副本数量的影响。
最大可写入容量
节点类型和大小 | 在集群形状为 250 个主节点且每个节点 0 个副本的情况下,最大容量 | 在集群形状为 125 个主节点且每个节点有 1 个副本的情况下,最大容量 | 在集群形状为 83 个主节点且每个节点有 2 个副本的情况下,最大容量 |
---|---|---|---|
redis-shared-core-nano - 1.4 GB | 350 GB | 175 GB | 116.2 GB |
redis-standard-small - 6.5 GB | 1,625 GB | 812.5 GB | 539.5 GB |
redis-highmem-medium - 13 GB | 3,250 GB | 1,625 GB | 1,079 GB |
redis-highmem-xlarge - 58 GB | 14,500 GB | 7,250 GB | 4,814 GB |
性能
在 us-central1
区域中使用 OSS memtier 基准测试工具,每个 2 vCPU 节点(redis-standard-small
和 redis-highmem-medium
)每秒可执行 12 万到 13 万次操作,延迟时间为微秒级,数据大小为 1KiB。
我们建议您使用真实工作负载或类似于生产流量的合成工作负载自行进行基准比较。此外,我们建议您在确定集群规模时留出缓冲空间(或“余量”),以应对工作负载高峰或意外流量。如需更多指导,请参阅 Memorystore for Redis 集群的最佳实践。
集群端点
本部分将介绍每个实例的两个端点。
发现端点
每个实例都有一个发现端点,您的客户端会连接到该端点。它是 IP 地址和端口号的组合。如需了解如何查找集群的发现端点,请参阅查看集群的发现端点。
您的客户端也会使用它进行节点发现。您的客户端使用发现端点检索实例的集群拓扑,以引导 OSS Redis 集群客户端,并在稳定状态下保持这些客户端处于最新状态。生成的集群拓扑结构提供 Redis 节点端点(IP 和端口组合),供 Redis 集群客户端在内存中缓存。然后,您的客户端会自动处理更新和重定向,无需进行其他应用更改。如需了解客户端发现行为和最佳实践,请参阅客户端发现。
发现端点具有高可用性,因为它由多个可用区中的多个 Redis 节点提供支持,可用于提供集群拓扑。即使遇到后端节点故障或节点更新,通过端点提供的服务拓扑也依然稳健。
您的发现端点具有以下行为:
在集群实例的整个生命周期内,即使在维护期间或您执行任何其他操作(例如纵向伸缩或更改副本数量)时,集群的发现端点也会保持不变。
Redis 节点端点可能会发生变化,并且随着时间的推移,在添加和移除节点时可能会被回收。理想情况下,您应该使用能够通过拓扑刷新和重定向自动处理这些更改的 Redis 集群客户端。您可以在客户端库代码示例中找到 Redis 集群客户端的示例。您的应用不应依赖于或假设给定集群的节点端点将保持不变。
数据端点
每个实例还有一个 Private Service Connect 数据端点,Memorystore for Redis 集群使用该端点进行客户端连接。您不应直接连接到此端点,但 Memorystore for Redis 集群会使用此端点将客户端连接到集群节点。