Answer –B
In terms of load, they have the same goal, but they differ in some areas:
Up-to-dateness of data:
A read replica will continuously sync from the master. So your results will probably lag 0 - 3s (depending on the load) behind the master.
A cache takes the query result at a specific point in time and stores it for a certain amount of time.
Performance:
A cache can only return results for queries it has already seen. So if you run the same queries over and over again, it`s a good match.
If you have many different, frequently changing, or dynamic queries, a read replica will be a better match.
ElastiCache should be much faster since it`s returning values directly from RAM. However, this also limits the number of results you can store.
Option B is correct since the question specifies data keeps frequently changing, as it keeps data up-to-date and read performance is also improved.
ElastiCache can be used to reduce the latency of requests. Still, it is a caching service. According to the question, data keeps changing every few hours, so Elasticache is not recommended choice.
Option A is incorrect since this is used for high availability for the databases.
Option C is incorrect since Amazon DynamoDB Accelerator (DAX) is a Fully managed, in-memory cache for DynamoDB only.
For more information on Read Replica and Elasticache, please refer to the below URLs-
https://aws.amazon.com/rds/features/read-replicas/
https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/elasticache-use-cases.htm