选择节点大小 - Amazon ElastiCache for Redis
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

选择节点大小

为集群选择的节点大小会影响成本、性能和容错能力。

选择节点大小

回答以下问题可帮助您决定实施 Redis 所需的最小节点类型:

  • 您的数据共需要多少内存量?

    要获得一般估计值,请取要缓存的项目的大小。将该大小乘以要保留在缓存中的项目数。要获得项目大小的合理估计值,请先序列化您的缓存项目,然后计算字符数。然后将该值除以集群中的分片数。

    有关更多信息,请参阅支持的节点类型

  • 您运行 Redis 的哪个版本?

    对于 2.8.22 版之前的 Redis,您需要预留更多内存以用于故障转移、快照、同步和将副本提升为主节点的操作。之所以有此要求,是因为您必须具有足够的内存来执行过程中的所有写入。

    Redis 2.8.22 版和更高版本使用无分支保存过程,相比之前的过程,所需可用内存更少。

    有关更多信息,请参阅下列内容:

  • 您的应用程序的写操作有多密集?

    在拍摄快照或进行故障转移时,写操作密集的应用程序需要多得多的可用内存( 数据未使用的内存)。每当BGSAVE进程,则必须有足够的内存,数据未使用,以容纳在BGSAVE过程。例如,拍摄快照、将主群集与集群中的副本同步时以及启用仅附加文件 (AOF) 功能时。另一个示例是将副本提升为主节点时(如果您启用了多可用区)。最糟糕的情况是在此过程中重写您的所有数据。在此情况下,您需要的节点实例大小是数据所需的内存量的两倍。

    有关更多详细信息,请参阅确保您有足够的内存来创建 Redis 快照

  • 您的实现是一个独立的 Redis (已禁用集群模式)集群,还是具有多个分片的 Redis (已启用集群模式)集群?

    Redis (已禁用集群模式) 集群

    如果您实现的是 Redis (已禁用集群模式)集群,则节点类型必须能够容纳所有数据及必要的开销,如上一要点中所述。

    例如,假设您估计所有商品的总大小为 12 GB。在此情况下,您可以使用cache.m3.xlarge节点内存为 13.3 GB 或cache.r3.large节点,内存为 13.5 GB。但是,您可能需要更多内存才能执行BGSAVE运算符。如果您的应用程序写操作繁重,请将内存要求翻倍至至少 24 GB。因此,使用cache.m3.2xlarge具有 27.9 GB 内存或cache.r3.xlarge具有 30.5 GB 内存。

    带有多个分片的Redis (已启用集群模式)

    如果您实现的是具有多个分片的 Redis (已启用集群模式)集群,则节点类型必须能够容纳 bytes-for-data-and-overhead / number-of-shards 字节的数据。

    例如,假设您估计所有项目的总大小为 12 GB,并且您具有两个分片。在此情况下,您可以使用cache.m3.large节点与 6.05 GB 内存(12 GB/2)。但是,您可能需要更多内存才能执行BGSAVE运算符。如果您的应用程序写操作繁重,请将内存要求翻倍至每个分片至少 12 GB。因此,使用cache.m3.xlarge具有 13.3 GB 内存或cache.r3.large具有 13.5 GB 内存。

  • 您使用的是 Local Zones 吗?

    本地扩展区允许您放置资源,例如ElastiCache群集在靠近用户的多个位置。但是,当您选择节点大小时,请注意,无论容量要求如何,可用节点大小目前仅限于以下内容:

    • 最新一代:

      M5 节点类型:cache.m5.largecache.m5.xlargecache.m5.2xlargecache.m5.4xlargecache.m5.12xlargecache.m5.24xlarge

      R5 节点类型:cache.r5.largecache.r5.xlargecache.r5.2xlargecache.r5.4xlargecache.r5.12xlargecache.r5.24xlarge

      T3 节点类型:cache.t3.microcache.t3.smallcache.t3.medium

您的集群运行期间,您可以监控发布到 CloudWatch 的内存使用率、处理器利用率、缓存命中数和缓存未命中数指标。您可能会注意到您的集群没有您想要的命中率,或者密钥被逐出太频繁。在这些情况下,您可以选择具有更大 CPU 和内存规格的不同节点大小。

监控 CPU 使用情况时,请记住 Redis 是单线程的。因此,将报告的 CPU 使用率乘以 CPU 核心数来获得实际使用量。例如,报告的使用率为 20% 的四核 CPU 实际上相当于一个使用率为 80% 的单核 Redis。