Scaling Up an Elasticache Instance?
Elasticache feels more like a cache solution in the memcached sense of the word, meaning that to scale up, you would indeed fire up a new cluster and switch your application over to it. Performance will degrade for a moment because the cache would have to be rebuilt, but nothing more.
For many people (I suspect you included), however, Redis is more of a NoSQL database solution in which data loss is unacceptable. Amazon offers the read replicas as a "solution" to that problem, but it's still a bit iffy. Of course, it offers replication to reduce the risk of data loss, but it's still nowhere near as production-safe (or mature) as RDS for a Redis database (as opposed to a cache, for which it's quite perfect), which offers backup and restore procedures, as well as well-structured change management to support scaling up. To my knowledge, ElastiCache does not support changing the instance type for a running cluster. This suggests that it's merely an in-memory solution that would lose all its data on reboot.
I'd go as far as saying that if data loss concerns you, you should look at a self-rolled Redis solution instead of simply using ElastiCache. Not only is it marginally cheaper to run, it would enable you to change the instance type like you would on any other EC2 instance (after stopping it, of course). It would also enable you to use RDB or AOF persistence.
You can now scale up to a larger node type while ElastiCache preserves:
Yes, you can instantly scale up a running Elasticache instance type to a larger size. I've tested it and experienced very little actual downtime (I think a few seconds at first, but very quickly it's back online, even while the Console will show the process taking roughly a few minutes to actually finish.) I went from a t2.micro to a m3.medium with no problem.
You can scale up or down
Go to Elasticache service
Select the cluster
Actionsmenu in top, choose
Node Typeas shown below
If you have a cluster, you can add more shards, decrease number of shards, rebalance slot distributions, or add more read replicas. just click on the cluster itself, you should be see something like this
Be aware when you delete shards, it will automatically redistribute data to other existing shards so it will affect on traffic and overloading other shards, when you try to delete a shard you would get a warning like this
Still need more help, please feel free to leave a comment and I would be more than happy to help.
Related videos on Youtube
aclellandUpdated on June 04, 2022
aclelland 7 months
I'm currently running a site which uses Redis through Elasticache. We want to move to a larger instance with more RAM since we're getting to around 70% full on our current instance type.
Is there a way to scale up an Elasticache instance in the same way a RDS instance can be scaled?
Alternative, I wanted to create a replica group and add a bigger instance to it. Then, once it's replicated and running, promote the new instance to be the master. This doesn't seem possible through the AWS console as the replicas are created with the same instance type as the primary node.
Am I missing something or is it simply a use case which can't be achieved. I understand that I can start a bigger instance and manually deal with replication then move the web servers over to use the new server but this would require some downtime due to DNS migration, etc.
aclelland almost 9 yearsThanks! You're correct that we're using Redis as a quasi-database solution, we're actually planning on having 2 redis servers running, one which acts like a traditional cache in front of our database. It's the second server which the data needs to be kept across up-scaling which we're concerned about. We're now looking at using Scalr.com to manage our Redis servers as they offer read replicas and what appears so far to be very fast failover. The advantage is that we can scale up to what ever AWS instance type we want. Thanks!, Alan
cldwalker over 8 yearsTo address the last point made, ElastiCache Redis does allow RDB snapshots and AOF: "The Redis slave can be used to generate RDB snapshots and / or AOF append logs as needed, and you may transfer these files to S3 for durability." From aws.amazon.com/elasticache/faqs/#redis-features
Jaap Haagmans over 8 yearsYes, of course, I might have taken it a step too far. Scaling up by tearing down the instance and building another based on a snapshot would of course have solved the immediate problem here. However, I do stand by what I said: I would not recommend using ElastiCache as a database. And I doubt Amazon itself would either.
Enamul Hassan over 6 yearsWhilst this may theoretically answer the question, it would be preferable to include the essential parts of the answer here, and provide the link for reference.
Vitali over 6 yearsWorth noting that this works only for Redis clusters but not for memcached.