# Caching Strategies

> CDN, Redis, in-memory cache, cache invalidation, and distributed caching patterns

- Skill: `gabrielmoreira/caching-strategies` (Agent Skill)
- Install (CLI): `npx skillmds@latest add gabrielmoreira/caching-strategies`
- Raw SKILL.md: https://api.skillmd.com/api/skills/gabrielmoreira/caching-strategies/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: gabrielmoreira (https://skillmd.com/u/gabrielmoreira)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/gabrielmoreira/caching-strategies

---


# Caching Strategies

Cache effectively to improve performance and reduce load.

## Cache Layers

| Layer | Latency | Storage | Examples |
|-------|---------|---------|----------|
| Browser | Local | Small | localStorage, HTTP cache |
| CDN | Regional | Large | CloudFront, CloudFlare, Fastly |
| Application | In-process | Small | L1 cache (heap) |
| Distributed | Network | Large | Redis, Memcached |
| Database | Same host | Very large | Buffer pool, query cache |

## Caching Patterns

### Cache-Aside (Lazy Loading)
```
1. Check cache → miss
2. Query database
3. Store in cache
4. Return
```
Best for: Read-heavy, general purpose.

### Write-Through
```
1. Write to cache
2. Cache writes to DB (sync)
3. Return
```
Best for: Consistency critical, write-heavy.

### Write-Behind
```
1. Write to cache
2. Return immediately
3. Cache writes to DB (async)
```
Best for: High throughput writes, eventual consistency OK.

### Refresh-Ahead
- Cache proactively refreshes before expiry
- Reduces latency spikes on cache miss
- Requires predictive logic or scheduled refresh

## Cache Invalidation

**Two hard things**: naming, cache invalidation, off-by-one errors.

| Strategy | How | Risk |
|----------|-----|------|
| TTL | Expire after X seconds | Stale data during TTL |
| Event-based | Invalidate on data change | Missed events |
| Version keys | `user_42_v3` | Unused old keys accumulate |
| Write-through | Update cache on write | Write amplification |

## Redis Patterns
- Use `EXPIRE` on every SET
- Use `SCAN` not `KEYS` in production
- Distributing: Redis Cluster for sharding
- Backup: RDB (snapshot) + AOF (append-only log)
- Monitor: hit rate, memory, evictions, latency

