Process Flow - Cache-aside pattern
Request data
Check cache
Store in cache
Return data
This flow shows how the cache-aside pattern works: first check cache, if data is missing, get it from database, store it in cache, then return it.
def get_data(key): data = cache.get(key) if data is None: data = database.get(key) cache.set(key, data) return data
| Step | Action | Cache State | Database Access | Returned Data |
|---|---|---|---|---|
| 1 | Request data with key 'user123' | {} | No | None |
| 2 | Check cache for 'user123' | {} | No | None |
| 3 | Cache miss, fetch from database | {} | Yes | UserData123 |
| 4 | Store 'UserData123' in cache | {'user123': 'UserData123'} | No | UserData123 |
| 5 | Return data 'UserData123' | {'user123': 'UserData123'} | No | UserData123 |
| 6 | Next request for 'user123' | {'user123': 'UserData123'} | No | UserData123 |
| 7 | Check cache for 'user123' | {'user123': 'UserData123'} | No | UserData123 |
| 8 | Cache hit, return cached data | {'user123': 'UserData123'} | No | UserData123 |
| Variable | Start | After Step 3 | After Step 4 | After Step 8 |
|---|---|---|---|---|
| cache | {} | {} | {'user123': 'UserData123'} | {'user123': 'UserData123'} |
| data | None | UserData123 | UserData123 | UserData123 |
Cache-aside pattern: - Check cache first for data - If missing, fetch from database - Store fetched data in cache - Return data to requester Improves performance by reducing database load.