用于 Redis 的 Amazon ElastiCache
ElastiCache for Redis 用户指南 (API 版本 2015-02-02)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

选择节点大小

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

选择节点大小

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

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

     

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

     

  • 您运行 Redis 的哪个版本?

     

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

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

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

     

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

     

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

     

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

     

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

     

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

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

     

    例如,假设您估计所有项目的总大小为 12GB。在这种情况下,您可以使用具有 13.3GB 内存的 cache.m3.xlarge 节点或具有 13.5GB 内存的 cache.r3.large 节点。但是,您可能需要更多内存才能执行 BGSAVE 操作。如果您的应用程序是写入密集型,请将内存要求加倍到至少 24GB。因此,请使用具有 27.9GB 内存的 cache.m3.2xlarge 或具有 30.5GB 内存的 cache.r3.xlarge

     

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

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

     

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

     

您的集群运行期间,您可以监控发布到 CloudWatch 的内存使用率、处理器利用率、缓存命中数和缓存未命中数指标。您可能会注意到集群没有所需的命中率或者过于频繁地移出密钥。在这些情况下,您可以选择具有较大 CPU 和内存规格的其他节点大小。

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

本页内容: