Typically, you will be given a scenario where a particular database is under a lot of stress/load. You may be asked which service you should use to alleviate this.
Elasticache is a good answer if your database is particularly read-heavy and not prone to frequent changing.
Redshift is a good answer if the reason your database is feeling stress is because management keep running OLAP (Online Analytics Processing) transactions on it, etc.
Basically, for data warehousing, using Redshift; for simply taking stress off of your database, use Elasticache.
Use Memcached if
Object caching is your primary goal
You want to keep things as simple as possible
You want to scale your cache horizontally (scale out)
Use Redis if
You have advanced data types, such as lists, hashes and sets.
You are doing data sorting and ranking (such as leader boards)