4.3.6 Application-Level Caching

Implement Application-Level Caching

Caching Layers

Client → CloudFront (edge)
       → API Gateway (API cache)
       → ElastiCache/DAX (application)
       → Database

Caching Strategies

StrategyProsCons
Lazy LoadingOnly cache requested dataCache miss penalty, stale data
Write-ThroughAlways freshWrite penalty, cache churn
TTLBalance freshness/performanceMay serve stale briefly

ElastiCache Redis vs DAX

RedisDAX
LatencySub-millisecondMicrosecond
Use caseGeneral caching, sessionsDynamoDB only
Data typesComplex (sets, lists)DynamoDB compatible
API changeYes (Redis client)Minimal (same DynamoDB API)

DAX Integration

import amazondax

dax = amazondax.AmazonDaxClient(
    endpoints=['dax-cluster.abc.dax-clusters.us-east-1.amazonaws.com:8111']
)
# Same API as DynamoDB
response = dax.get_item(TableName='Orders', Key={'id': {'S': '123'}})

Exam Tip: DAX = DynamoDB only, microsecond, API compatible. Redis = versatile. Lazy Loading + TTL = most common combo.