10 - Caching Strategies
Why Cache?
Database queries are expensive. Caching stores frequently accessed data in faster storage (memory) to reduce database load and improve response times.
Plain text
┌─────────────────────────────────────────────────────────────┐
│ Without Cache │
├─────────────────────────────────────────────────────────────┤
│ │
│ Client ──► App ──► Database ──► Disk I/O ──► CPU/Memory │
│ 50ms 200ms 10ms 50ms │
│ ▲ │
│ │ │
│ Every request hits database │
│ Even for same query! │
│ │
│ Total: ~310ms per request │
│ │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ With Cache │
├─────────────────────────────────────────────────────────────┤
│ │
│ Client ──► App ──► Cache (Redis/Memcached) │
│ 50ms 1-5ms │
│ │ │
│ │ Cache Miss │
│ ▼ │
│ Database (only on miss) │
│ │
│ Cache Hit: ~55ms (95% of requests) │
│ Cache Miss: ~310ms (5% of requests) │
│ Effective average: ~67ms │
│ │
│ Plus: Database load reduced by 95% │
│ │
└─────────────────────────────────────────────────────────────┘