A company's application hosted on AWS uses a database that is read-heavy and experiences occasional spikes in read traffic, causing performance degradation. To optimize for cost and performance, which of the following is the MOST appropriate caching strategy to implement?
Increasing the size and computation power of the database to handle the spikes in read traffic.
Utilizing Amazon ElastiCache for Redis to store and retrieve commonly accessed data.
Implementing Amazon S3 Select to quickly retrieve necessary data from S3 buckets instead of the database.
Deploying compute instances configured with ephemeral storage to cache frequent database queries.