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

选择节点大小

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

选择节点大小

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

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

     

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

     

  • 您运行 Redis 的哪个版本?

     

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

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

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

     

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

     

    在拍摄快照或进行故障转移时,写操作密集的应用程序需要多得多的可用内存( 数据未使用的内存)。在执行 BGSAVE 过程时 – 在拍摄快照时、在将主集群与集群中的副本同步时、在启用仅附加文件 (AOF) 功能时或在将副本提升为主集群时(如果您有已启用自动故障转移功能的多可用区)– 您必须拥有数据未使用的足够内存才能容纳在 BGSAVE 过程期间执行的所有写入。最糟糕的情况是,在该过程期间重新写入所有 数据时,您需要的节点实例大小是数据所需的内存量的两倍。

     

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

     

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

     

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

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

     

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

     

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

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

     

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

     

     

您的集群运行期间,您可以监控发布到 CloudWatch 的内存使用率、处理器利用率、缓存命中数和缓存未命中数指标。如果集群的命中率不高,或是您发现移出键的频率太高,则可以选择 CPU 和内存规格更高的不同节点大小。

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

本页内容: