AWSCost

AWS cost · ElastiCache

ElastiCache cost: what an idle Redis node bills

A cache is the easiest thing in an AWS account to leave behind. It holds nothing anyone will miss, and it was probably created by whoever was fixing a page-load time two years ago. The project ends, the traffic stops, and the nodes keep billing.

A cache.t3.small costs $0.034/node-hour in us-east-1 - about $24.82/month - with zero clients connected. The charge is per node, so a primary with two replicas is about $74.46/month. Small numbers that survive for years because nothing about them looks like waste.

What a node costs

WhatCostNote
cache.t4g.micro, Redis~$11.68/month$0.016/node-hour, us-east-1
cache.t3.small, Redis~$24.82/month$0.034/node-hour, us-east-1
cache.t3.small, Valkey~$19.86/month$0.0272/node-hour - same node, 20% less
Three-node t3.small group~$74.46/monththe charge is per node, not per group
Extended support, year three+$39.42/month$0.054/hour on top, for an end-of-life engine

Two rows in that table matter more than the idle-cache question that brought you here.

Valkey is the same node for 20% less

AWS prices Valkey below Redis on identical hardware. A cache.t3.small is $0.034/hour on Redis and $0.0272 on Valkey in us-east-1 - the same node, the same region, a fifth off. Memcached, for comparison, is priced exactly like Redis at $0.034.

Valkey is the open-source fork of Redis and speaks the same protocol. For most workloads that makes it an engine change rather than a rewrite.

The end-of-life surcharge nobody budgets for

When an engine version reaches end of life, AWS keeps it running and bills extended support as its own usage type on top of the node hour. On a cache.t3.small in us-east-1 that is $0.027/hour for the first two years and $0.054/hour in the third - a surcharge that eventually exceeds the $0.034 the node itself costs.

It arrives quietly, as a new line on a bill for a cluster nobody changed. If an idle cache is also on an old engine version, the case for dealing with it stops being about $24 a month.

How to find a cache nobody connects to

List the clusters with their node type and group, then read the peak connection count for each node over two weeks:

# every cache node, its type, engine and the group it belongs to
aws elasticache describe-cache-clusters --show-cache-node-info \
  --query 'CacheClusters[?CacheClusterStatus==`available`].{Id:CacheClusterId,Group:ReplicationGroupId,Type:CacheNodeType,Engine:Engine,Version:EngineVersion}' \
  --output table

# peak connections over 14 days - 0 across the window means nothing connected
aws cloudwatch get-metric-statistics \
  --namespace AWS/ElastiCache --metric-name CurrConnections \
  --dimensions Name=CacheClusterId,Value=my-cache-001 \
  --start-time 2026-07-29T00:00:00Z \
  --end-time   2026-08-12T00:00:00Z \
  --period 86400 --statistics Maximum

Judge the replication group, not the node. You shrink or delete a group; you never delete one replica out of the middle of it. A group counts as unused only when every node in it peaked at zero.

What the fix costs

Deleting a cache is not like deleting an unattached disk. The data goes with it, and the load it was absorbing goes somewhere - usually straight to the database behind it. A cache that looks idle on a Tuesday can be the thing standing between your RDS instance and a bad afternoon.

Take a final snapshot on the way out. It costs storage rather than node hours, and it turns an irreversible delete into a slow undo.

# MUTATING - deletes the group; the snapshot is the only way back
aws elasticache delete-replication-group \
  --replication-group-id my-cache-group \
  --final-snapshot-identifier my-cache-group-final

Want to know which cache nodes nobody has connected to in two weeks? Connect your account read-only and see what it is wasting, in real dollars.

Connect your AWS

The role can only read - Get, Describe, List, nothing else. Read the exact permissions before you deploy it, and delete the stack whenever you want.

Frequently asked questions

How much does an idle ElastiCache node cost?+

The same as a busy one. A cache.t3.small running Redis is $0.034/node-hour in us-east-1, about $24.82/month, and a cache.t4g.micro is about $11.68. ElastiCache bills for the node being available, so connections make no difference to the charge.

Is Valkey cheaper than Redis on ElastiCache?+

Yes, by about 20% for the same node size. In us-east-1 a cache.t3.small is $0.034/hour on Redis and $0.0272/hour on Valkey - roughly $24.82 against $19.86 a month. Valkey is the open-source fork of Redis and is protocol-compatible, so the migration is usually a version change rather than a rewrite.

Why is my ElastiCache bill higher than the node price?+

Two common reasons. The charge is per node, so a replication group with a primary and two replicas bills three times the node rate. And an engine version past end of life adds an extended support charge as its own line - $0.027/hour in the first two years and $0.054/hour in the third, on a node that otherwise costs $0.034.

How do I tell if a cache is actually being used?+

Look at the peak of CurrConnections over two weeks, not the average. A cache with one client connecting for an hour a day averages close to zero and is genuinely in use. A peak of zero across the whole window means nothing connected at all. NetworkBytesIn is worth reading as a second opinion.

Is it safe to delete an unused ElastiCache cluster?+

The data is gone when you delete it, and that matters more than it sounds. A cache absorbs load that would otherwise hit your database, so the first deploy after the cache disappears sends every one of those requests to the origin. Take a final snapshot, and check that nothing is failing over to the cache only under load.

Should I keep a cache for disaster recovery?+

That is a real reason, and it looks identical to abandonment from the outside - zero connections either way. If a group is kept warm deliberately, tag it, so the next person reading the bill does not have to guess.

Related cost breakdowns

More AWS cost breakdowns