- ElastiCache is a managed cache offering which supports Redis and Memcached
- Caches are in-memory databases with high performance and low latency
- The role of a cache is to reduce load from a database by caching query results
- It also can help make an application stateless by storing the application state in memory
- Provides:
- Write scaling using sharding
- Read scaling using Read Replicas
- Multi AZ with Failover Capability
- Since it is a managed solution, AWS takes care of OS maintenance, patching, optimization, setup, monitoring, failure recovery and backups
- Application queries the ElastiCache first. If no data is available for the query (cache miss), the application gets the data from RDS and stores it into the cache
- Caching helps relieve the load from the database
- Cache must have an invalidation strategy to make sure only the most current data is stored in the cache
- Uses logs into the application
- The application writes the session data to the cache
- The session data can be reused by other instance of he back-end
Redis | Memcached |
---|---|
Multi AZ with auto-failover | Multi-node for partitioning data (sharding) |
Read replicas to scale reads and have high availability | Non persistent |
Data durability and AOF persistance | No backup and restore |
Backup and restore features | Multi-threaded architecture |
- All caches in ElastiCache:
- Support SSL in flight encryption
- Do not support IAM authentication
- IAM policies on ElastiCache are only used for AWS API-level security
- Redis AUTH
- We can set a password/token when we create a Redis cluster
- This is an extra layer of security on top of the security groups
- Memcached
- Supports SASL-based authentication
- Lazy loading: all the reads are cached, data can become stale in cache
- Write Through: adds/updates of data are cached when written to the database
- Session Store: store temporary session data in cache using TTL features