Introducing Dragonfly Cloud! Learn More

Question: How can I scale Amazon ElastiCache for Redis?

Answer

You can scale Amazon ElastiCache for Redis either vertically (scaling up or down) by changing the node type to a more powerful one or less powerful one, respectively. Or horizontally (scaling out or in) by increasing or decreasing the number of nodes in a cluster.

Here is how you can do each:

  1. Vertical Scaling (Resizing)

This process involves changing your current node type to a more powerful one (scale up) or a less powerful one (scale down). Note that during this operation, the existing node is replaced, which can cause some downtime.

Here's how to resize a node:

aws elasticache modify-replication-group --replication-group-id my-replgroup --node-type-cache m4.large
  1. Horizontal Scaling

This method involves adding or removing read replicas, which allows your application to distribute read traffic and supports higher availability.

You can manually add a read replica using the AWS CLI:

aws elasticache create-replication-group --replication-group-id my-replgroup --automatic-failover-enabled --num-node-groups 3 --replicas-per-node-group 2

In case of Redis clusters, you can also enable sharding which allows your data to be partitioned across many shards.

When choosing between vertical and horizontal scaling, remember that vertical scaling typically offers more immediate performance gains, but it can't surpass the limits of a single node. Horizontal scaling, especially with sharding, provides a way to bypass those limitations.

Remember to monitor key metrics (like CPU utilization, swap usage, evictions, current connections, etc.) to make informed decisions about when and how to scale.

Was this content helpful?

White Paper

Free System Design on AWS E-Book

Download this early release of O'Reilly's latest cloud infrastructure e-book: System Design on AWS.

Free System Design on AWS E-Book

Start building today 

Dragonfly is fully compatible with the Redis ecosystem and requires no code changes to implement.