Home › Decoder › NodeUsage:cache - what ElastiCache charges per node-hour, and the 20% Valkey discount
NodeUsage:cache - what ElastiCache charges per node-hour, and the 20% Valkey discount
NodeUsage:cache.<type> is the ElastiCache charge for each cache node by the hour; cache.m5.large costs $0.156 an hour with Redis OSS and $0.1248 with Valkey in US East (N. Virginia).
In your bill the usage type reads: USE1-NodeUsage:cache.*, NodeUsage:cache.*
What it costs
| Charge | Price | Unit |
|---|---|---|
| cache.m5.large, Redis OSS (NodeUsage:cache.m5.large) | $0.156 | per node-hour |
| cache.m5.large, Valkey (NodeUsage:cache.m5.large) | $0.1248 | per node-hour |
US East (N. Virginia); other regions differ. Checked 2026-11-11. Sources: Amazon ElastiCache pricing, AWS price list file, Amazon ElastiCache offer, us-east-1.
Example with made-up numbers
A Redis OSS replication group of 3 cache.m5.large nodes (1 primary, 2 replicas) running the whole month (730 hours)
3 x 730 x $0.156 = $341.64 per month. On Valkey: 3 x 730 x $0.1248 = $273.31, a saving of $68.33
Dropping the 2 replicas of a staging cluster instead saves 2 x 730 x $0.156 = $227.76 per month
Typical causes
Replicas in non-production
Staging and test clusters built from the production template carry replicas nobody fails over to.
Nodes sized for a peak
A node type chosen for a launch week that now uses 10% of its memory.
Forgotten clusters
A cache from a finished project or load test that still bills every hour.
Redis OSS where Valkey would do
The same node class on Valkey is 20% cheaper per hour in the price list.
Find it in your bill
Have a CUR file queryable in Athena? Paste this and run it:
SELECT date_trunc('month', line_item_usage_start_date) AS month,
line_item_product_code,
line_item_usage_type,
line_item_resource_id,
SUM(line_item_usage_amount) AS usage_amount,
SUM(line_item_unblended_cost) AS cost
FROM your_cur_table
WHERE line_item_product_code = 'AmazonElastiCache'
AND (line_item_usage_type LIKE '%NodeUsage:cache.%')
GROUP BY 1, 2, 3, 4
ORDER BY month DESC, cost DESC
LIMIT 50;Columns used: line_item_usage_start_date, line_item_product_code, line_item_usage_type, line_item_resource_id, line_item_usage_amount, line_item_unblended_cost.
No CUR file? Use Cost Explorer
- Open Billing and Cost Management, then Cost Explorer, and set the date range to the last 3 months with Monthly granularity.
- Set Group by to Usage type.
- In the Filters panel choose Usage type and tick the entries ending in *NodeUsage:cache.<type> (the region prefix, such as USE1-, differs by region).
- Read the monthly cost per usage type. A line that grows faster than your traffic is the one to chase with the fix below.
- To see which resource drives it, query the CUR above; resource IDs appear only if your CUR was set up with resource IDs included, otherwise the resource column is empty.
Column names checked against: docs.aws.amazon.com/cur/latest/userguide/Lineitem-columns.html, docs.aws.amazon.com/cur/latest/userguide/cur-ate-run.html.
The fix, step by step
Verify first
Check these before you change anything: the steps below are suggestions, and only you can see your own configuration.
- Look at the peak, not the average: size the node above peak memory plus headroom, and check the Evictions metric before downsizing.
- Replicas are what fail over and what serve reads; keep at least one replica for anything production.
- A cache that looks idle may be a session store or a rate limiter that matters during one hour a day; check connections over a full month.
- Resizing and engine changes can fail over the primary and drop connections briefly; use a quiet window and clients that retry.
- Check for reserved nodes: they are billed regardless of use, so removing a covered node saves nothing until the reservation ends.
In the console
- ElastiCache console > Redis OSS caches or Valkey caches; list every cluster with its Node type, Engine and Number of nodes.
- Open each cluster > Monitoring; read DatabaseMemoryUsagePercentage, EngineCPUUtilization, CurrConnections and CacheHits over 30 days.
- Clusters with no connections and no hits are candidates for deletion; clusters that peak below 30% memory are candidates for a smaller node type.
- For staging and test, remove replicas: Modify the replication group and lower the replica count.
- For Redis OSS clusters on a supported version, check the upgrade path to Valkey in the same Modify screen.
With the CLI
aws elasticache describe-cache-clusters --show-cache-node-info --query 'CacheClusters[].[CacheClusterId,CacheNodeType,Engine,EngineVersion,NumCacheNodes]' --output table
aws elasticache describe-replication-groups --query 'ReplicationGroups[].[ReplicationGroupId,CacheNodeType,MemberClusters]' --output table
aws cloudwatch get-metric-statistics --namespace AWS/ElastiCache --metric-name DatabaseMemoryUsagePercentage --dimensions Name=CacheClusterId,Value=EXAMPLE --statistics Maximum --period 86400 --start-time 2026-10-01T00:00:00Z --end-time 2026-11-01T00:00:00Z
aws elasticache modify-replication-group --replication-group-id EXAMPLE --cache-node-type cache.t4g.medium --apply-immediately
aws elasticache delete-replication-group --replication-group-id EXAMPLE --final-snapshot-identifier EXAMPLE-final
Rollback
Restore from the final snapshot into a new replication group, or modify the node type back; a resized cache can be returned to its old class at any time, a deleted one comes back empty or from the snapshot.
Find your ElastiCache lines in your own bill
Drop in your Cost Explorer or CUR CSV. Billtrim reads it in your browser, finds the cache node lines and shows what your clusters cost per month.
Paste your export: how to export a Cost Explorer CSV or CUR file in two minutes.
Questions people ask
Is an idle ElastiCache node free?
No. Nodes bill by the hour from creation to deletion, busy or not.
Is Valkey a drop-in for Redis OSS?
Valkey is protocol compatible with Redis OSS, and ElastiCache supports upgrading supported Redis OSS versions to Valkey. Test your client library first.
Where do the extended support lines come from?
Old Redis OSS engine versions can bill extra Extended Support hours, a separate usage type from NodeUsage.
Related
- Multi-AZUsage - RDS Multi-AZ costs twice the single-AZ hourly price
- VpcEndpoint-Hours: what interface endpoints cost
- EBS:VolumeUsage.gp2 - the gp2 volume line, and the cheaper gp3
Part of the guide: Reduce your AWS bill as a startup: a checklist for teams with no FinOps person