ElastiCache node sizing: paying for the right amount of memory
ElastiCache (Redis and Memcached) is priced per node by instance type, so node sizing and count drive the bill. Oversized memory, too many replicas, and the wrong node family are the common overspends. Here is how to size for cost.
Quick answer
ElastiCache is billed per node by instance type (like EC2), so cost is driven by node size, node count (replicas and shards), node family, and purchase model. The common overspends are oversizing memory beyond the working set, running more replicas than availability requires, using an older or non-Graviton node family, and paying on-demand for steady caches instead of buying Reserved Nodes. Size the node to your actual cached-data footprint plus headroom, use memory-optimized Graviton nodes, keep replica count matched to real HA needs, and reserve capacity for steady workloads to cut the bill substantially.
ElastiCache (managed Redis and Memcached) is priced much like EC2: you pay per node by instance type, per hour. That means the whole bill is driven by how big your nodes are, how many you run, which node family you pick, and how you buy them. Caches are easy to oversize because memory feels cheap per node, so disciplined sizing is where the savings live.
What drives the cost
| Driver | Effect |
|---|---|
| Node size | Bigger memory and CPU cost proportionally more |
| Node count | Replicas and shards multiply the bill |
| Node family | Memory-optimized and Graviton change the rate |
| Purchase model | On-demand vs Reserved Nodes |
A cache cluster's cost is node size times node count, adjusted for family and purchase model. Each of those is a lever, and the biggest mistakes are oversizing the node (paying for memory the working set never uses) and over-replicating (running more copies than availability actually requires).
Size the node to the working set
The most common overspend is provisioning far more memory than the cached data plus reasonable headroom needs. A cache only needs to hold its working set (the hot data) plus room for overhead and growth, not an arbitrarily large buffer. Monitor memory usage and eviction rates: if usage sits well below capacity, the node is oversized and can be dropped to a smaller type. If evictions are high, it is undersized. Right-sizing to actual footprint, the same discipline as EC2 instance sizing, is the first lever.
Match replica count to real HA needs
Redis clusters add read replicas for availability and read scaling, but each replica is a full node you pay for. Running three replicas when one satisfies your availability target triples that portion of the bill. Match replica count to the actual failover and read-scaling requirement, not a reflexive maximum. Similarly, shard (node group) count for cluster mode should reflect real memory and throughput needs, since each shard adds nodes. More nodes means more availability but proportionally more cost.
Pick the right family, then reserve
Use memory-optimized node types for caches (they give the most RAM per dollar, which is what a cache needs), and choose Graviton-based nodes where available for a lower rate at similar performance, the same win as Graviton cost savings elsewhere. Then, for steady caches that run continuously, buy Reserved Nodes (one or three year commitments) for a large discount over on-demand, exactly the logic in how much savings plans save. A steady production cache left on-demand is leaving significant money on the table.
Consider serverless for spiky caches
ElastiCache Serverless bills for the cache capacity and requests you actually use rather than provisioned nodes, which can be cheaper for spiky or unpredictable cache workloads where a provisioned node would sit underutilized, the same on-demand-versus-provisioned tradeoff as in DynamoDB on-demand vs provisioned. For steady high-utilization caches, provisioned Reserved Nodes remain cheaper. Match the model to the traffic shape, and remember the cache is one line in a larger bill; see how much a SaaS backend costs on AWS.
FAQ
How is ElastiCache priced?
Per node by instance type and hour, much like EC2. The bill is driven by node size (memory and CPU), node count (replicas and shards), node family (memory-optimized and Graviton change the rate), and purchase model (on-demand versus Reserved Nodes). ElastiCache Serverless is an alternative that bills for capacity and requests actually used rather than provisioned nodes, suiting spiky workloads.
How do I size an ElastiCache node correctly?
Size to the working set: the hot cached data plus reasonable headroom for overhead and growth, not an arbitrarily large buffer. Monitor memory usage and eviction rates. If usage sits well below capacity, the node is oversized and can drop to a smaller type; if evictions are high, it is undersized. Right-sizing to actual footprint is the first and biggest ElastiCache cost lever.
Do ElastiCache replicas increase cost?
Yes, significantly. Each Redis read replica is a full node you pay for, so running three replicas when one meets your availability target roughly triples that portion of the bill. Match replica count to the real failover and read-scaling requirement rather than a reflexive maximum. The same applies to shard count in cluster mode, since each shard adds nodes and therefore cost.
Should I use Graviton nodes for ElastiCache?
Where available, yes. Graviton-based ElastiCache nodes deliver similar performance at a lower rate than comparable Intel nodes, so choosing them lowers cost for equivalent caching. Combined with memory-optimized node types (which give the most RAM per dollar, what a cache needs), Graviton is an easy discount to capture on the node family before you even touch purchase model or sizing.
Can Reserved Nodes reduce ElastiCache cost?
Yes, substantially for steady caches. Reserved Nodes trade a one or three year commitment for a large discount over on-demand rates, the same economics as Savings Plans for EC2. A production cache that runs continuously is an ideal candidate. Reserve the steady baseline capacity and leave only genuinely variable or short-lived cache usage on on-demand pricing.
When should I use ElastiCache Serverless?
For spiky or unpredictable cache workloads where a provisioned node would sit underutilized. Serverless bills for the capacity and requests you actually use, so you avoid paying for idle provisioned memory. For steady, high-utilization caches, provisioned Reserved Nodes are cheaper. It is the same on-demand-versus-provisioned tradeoff seen in DynamoDB: match the pricing model to the traffic shape.
What to do next
Size and price your cache nodes before you provision them. C3X reads your Terraform and prices your resources against a live catalog. Start with the quickstart.
Share this post
Try C3X on your own Terraform
Free and open source. No API key required. One command to install, one command to estimate.