本页介绍了 Memorystore for Redis Cluster 实例的集群和节点规范。如需了解如何创建实例,请参阅 创建实例。
和“分片”可互换使用, 均指单个 Redis 分片。选择节点类型
集群中的所有分片都使用您选择的相同节点类型。集群的最佳节点类型取决于您对价格、性能和键空间容量的要求。
redis-shared-core-nano 节点类型适用于小型工作负载。此节点类型
提供可变 性能
,并且没有 SLA,因此不适合生产工作负载。
借助 redis-standard-small 节点类型,您可以预配小型集群,并以较小的增量扩容集群,这可能比其他节点类型的费用更低。redis-standard-small 还具有以下优势:将键空间分布到更多节点,并提供更高的 vCPU 总数。只要较小节点的键空间总容量足以满足您的数据需求,与 redis-highmem-medium 相比,此节点类型可提供更高的性价比。
如果您的工作负载需要相对于内存更高的处理能力,请选择 redis-highcpu-medium 节点类型。如果您需要的容量超过 redis-highmem-medium 提供的容量,我们建议您选择 redis-standard-large、redis-highmem-xlarge 或 redis-highmem-2xlarge 节点类型。当您向越来越大的节点添加 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-highcpu-medium | 10.4 GB | 13 GB |
| redis-standard-large | 20.8 GB | 26 GB |
| redis-highmem-xlarge | 46.4 GB | 58 GB |
| redis-highmem-2xlarge | 88 GB | 110 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 | 5,000 | 12% |
| redis-standard-small | 2 | 是 | 16,000 | 32,000 | 7% |
| redis-highmem-medium | 2 | 是 | 32,000 | 64,000 | 7% |
| redis-highcpu-medium | 8 | 是 | 32,000 | 64,000 | 7% |
| redis-standard-large | 8 | 是 | 32,000 | 64,000 | 7% |
| redis-highmem-xlarge | 8 | 是 | 64,000 | 64,000 | 4% |
| redis-highmem-2xlarge | 16 | 是 | 64,000 | 64,000 | 4% |
为集群选择的虚拟 CPU (vCPU) 越多,性能就越好。如果您的集群运行资源密集型工作负载,请选择具有较高 vCPU 的节点类型(例如 redis-highmem-xlarge)。如果您的集群执行的要求较低的任务,请选择具有较低 vCPU 的节点类型(例如 redis-highmem-medium)。
扩缩实例
在创建 Memorystore for Redis Cluster 实例时,您可以为该实例选择节点类型,并指定该实例的分片数。 创建实例后,随着实例的容量需求发生变化,您可能需要通过以下方式扩缩实例:
- 更改实例的分片数。这是横向伸缩。 您可以通过执行以下操作之一来横向扩缩实例:
- 向实例添加分片。这是伸缩实例。
- 从实例中移除分片。这是伸缩实例。
- 更改实例的节点类型。这是纵向伸缩。 如需纵向扩缩实例,请将实例的节点类型更改为以下节点类型之一:
- 更改为更大的节点类型。这是伸缩实例。
- 更改为更小的节点类型。这是伸缩实例。
集群规范
本部分显示了在给定集群形状、节点类型和副本数的情况下,集群的最小和最大容量。
最小可写容量
可写容量是可用于写入键的存储空间量。它等于一个实例节点的大小。因此,根据节点类型的不同,最小可写容量介于 1.4 GB 和 110 GB 之间。最小可写容量不受您选择的副本数的影响。
最大可写容量
| 节点类型和大小 | 在集群形状为 250 个主节点且每个节点 0 个副本的情况下,最大容量 | 在集群形状为 125 个主节点且每个节点 1 个副本的情况下,最大容量 | 在集群形状为 83 个主节点且每个节点 2 个副本的情况下,最大容量 | 在集群形状为 62 个主节点且每个节点 3 个副本的情况下,最大容量 | 在集群形状为 50 个主节点且每个节点 4 个副本的情况下,最大容量 | 在集群形状为 41 个主节点且每个节点 5 个副本的情况下,最大容量 |
|---|---|---|---|---|---|---|
| redis-shared-core-nano - 1.4 GB | 350 GB | 175 GB | 116.2 GB | 86.8 GB | 70 GB | 57.4 GB |
| redis-standard-small - 6.5 GB | 1,625 GB | 812.5 GB | 539.5 GB | 403 GB | 325 GB | 266.5 GB |
| redis-highmem-medium - 13 GB | 3,250 GB | 1,625 GB | 1,079 GB | 806 GB | 650 GB | 533 GB |
| redis-highcpu-medium - 13 GB | 3,250 GB | 1,625 GB | 1,079 GB | 806 GB | 650 GB | 533 GB |
| redis-standard-large - 26 GB | 6,500 GB | 3,250 GB | 2,158 GB | 1,612 GB | 1,300 GB | 1,066 GB |
| redis-highmem-xlarge - 58 GB | 14,500 GB | 7,250 GB | 4,814 GB | 3,596 GB | 2,900 GB | 2,378 GB |
| redis-highmem-2xlarge - 110 GB | 27,500 GB | 13,750 GB | 9,130 GB | 6,820 GB | 5,500 GB | 4,510 GB |
性能
在 us-central1 区域中使用 OSS memtier 基准化分析工具 进行测试,结果显示,对于每个 2 vCPU 节点(redis-standard-small 和
redis-highmem-medium),延迟为微秒级,数据大小为 1KiB,每秒可执行 120,000 到 130,000
次操作。
我们建议您使用真实工作负载或类似于生产流量的合成工作负载执行自己的基准化分析。此外,我们还建议您为集群预留一定的缓冲空间(或“余量”),以应对工作负载峰值或意外流量。如需更多指导,请参阅 Memorystore for Redis Cluster 最佳实践。
集群端点
本部分介绍了每个实例的两个端点。
发现端点
每个实例都有一个发现端点,您的客户端会连接到该端点。它由 IP 地址和端口号组成。如需了解如何查找 集群的发现端点,请参阅查看集群的发现端点。
您的客户端还会使用它进行节点发现。您的客户端使用发现端点检索实例的集群拓扑,以启动 OSS Redis 集群客户端,并使其在稳定状态下保持最新。生成的集群拓扑提供 Redis 节点端点(IP 和端口组合),以便由 Redis 集群客户端在内存中缓存。然后,您的客户端会自动处理更新和重定向,而无需进行其他应用更改。如需了解客户端发现行为和最佳实践, 请参阅 客户端发现。
发现端点具有高可用性,因为它由多个可用区中的多个 Redis 节点提供支持,以处理集群拓扑。即使遇到后端节点故障或节点更新,通过端点处理拓扑也十分可靠。
您的发现端点具有以下行为:
在集群实例的整个生命周期内,集群的发现端点保持不变,即使在维护期间或您执行的任何其他操作(例如横向伸缩或更改副本数)期间也是如此。
随着时间的推移,Redis 节点端点可能会发生变化,并且在添加和移除节点时可能会被回收。理想情况下,您应使用 Redis 集群客户端,该客户端可以通过拓扑刷新和重定向自动处理这些更改。 您可以在客户端库代码示例中找到 Redis 集群客户端的示例。您的应用不应依赖于或假设给定集群的节点端点将保持不变。
数据端点
除了发现端点之外,每个集群还有一个数据端点。此端点专供 Memorystore for Redis Cluster 用于将客户端连接到集群中的节点。因此,请勿直接连接到此端点。