Bird
Raised Fist0
HLDsystem_design~7 mins

Cache stampede prevention in HLD - System Design Guide

Choose your learning style10 modes available
Problem Statement
When many users request the same data that is missing or expired in the cache, all requests hit the backend database or service simultaneously. This overloads the backend, causing slow responses or crashes, and defeats the purpose of caching.
Solution
Cache stampede prevention limits the number of requests that fetch data from the backend when the cache is empty or expired. It does this by allowing only one request to rebuild the cache while others wait or get stale data, thus reducing backend load and improving response times.
Architecture
User Request
→Cache Layer
↓
Other Users
Wait or Use

This diagram shows user requests checking the cache. If data is missing, one request acquires a lock or token to fetch from backend, while others wait or use stale cache data.

Trade-offs
✓ Pros
→
Prevents backend overload by limiting simultaneous cache misses.
→
Improves overall system stability during high traffic spikes.
→
Reduces latency for most users by serving cached or stale data.
→
Avoids repeated expensive computations or database queries.
✗ Cons
→
Adds complexity with locking or token management in cache layer.
→
Potentially serves stale data to some users during cache rebuild.
→
Requires careful timeout and fallback strategies to avoid deadlocks.
Use when cache misses cause backend overload or slowdowns, especially at scale above thousands of requests per second for the same keys.
Avoid if cache miss rate is very low or backend can handle sudden load spikes without degradation.
Real World Examples
Netflix
Netflix uses cache stampede prevention to avoid overwhelming their recommendation service when popular content metadata expires simultaneously.
Twitter
Twitter applies cache stampede prevention to limit database hits when trending topics cause many users to request the same data.
Shopify
Shopify uses this pattern to protect their product catalog backend during flash sales when cache entries expire and many users request the same product info.
Alternatives
Cache Aside
Clients check cache and fetch from backend on miss without coordination, risking stampedes.
Use when: Use when backend can handle occasional spikes and simplicity is preferred.
Write-Through Cache
Cache is updated synchronously on writes, reducing cache misses but increasing write latency.
Use when: Use when data freshness is critical and write load is manageable.
Probabilistic Early Expiration
Cache entries expire randomly before TTL to spread backend load over time.
Use when: Use when backend can tolerate some load spikes and complexity of locking is undesired.
Summary
Cache stampede prevention stops many requests from hitting the backend simultaneously when cache entries expire.
It uses locking or tokens to allow only one request to refresh the cache while others wait or get stale data.
This pattern improves system stability and response times during traffic spikes but adds some complexity.

Practice

(1/5)
1. What is the main goal of cache stampede prevention in system design?
easy
A. To prevent many requests from hitting the database simultaneously
B. To increase the size of the cache storage
C. To reduce the number of cache servers
D. To encrypt cached data for security

Solution

  1. Step 1: Understand cache stampede problem

    Cache stampede happens when many requests try to fetch data from the database because the cache expired or missed.
  2. Step 2: Identify the goal of prevention

    The goal is to stop all these requests from hitting the database at once to avoid overload.
  3. Final Answer:

    To prevent many requests from hitting the database simultaneously -> Option A
  4. Quick Check:

    Cache stampede prevention = prevent database overload [OK]
Hint: Focus on reducing database hits during cache misses [OK]
Common Mistakes:
  • Confusing cache size with stampede prevention
  • Thinking encryption is related to stampede
  • Assuming reducing cache servers helps stampede
2. Which of the following is a common technique used to prevent cache stampede?
easy
A. Storing data only in the database
B. Increasing cache TTL to infinite
C. Disabling cache for all requests
D. Using distributed locks around cache refresh

Solution

  1. Step 1: Review common stampede prevention methods

    Techniques include locking, early expiration, and request coalescing to control cache refresh.
  2. Step 2: Match technique to options

    Distributed locks prevent multiple processes from refreshing cache simultaneously, stopping stampede.
  3. Final Answer:

    Using distributed locks around cache refresh -> Option D
  4. Quick Check:

    Locking = stampede prevention [OK]
Hint: Look for locking or coordination methods in options [OK]
Common Mistakes:
  • Choosing infinite TTL which can cause stale data
  • Disabling cache which increases load
  • Ignoring locking as a prevention method
3. Consider this pseudo-code for cache stampede prevention:
if cache miss:
  acquire lock
  if cache still miss:
    data = fetch from DB
    update cache
  release lock
return cached data
What happens if the lock is not used here?
medium
A. Multiple requests fetch from DB simultaneously causing overload
B. Cache never updates and returns stale data
C. Requests wait indefinitely causing deadlock
D. Cache size increases exponentially

Solution

  1. Step 1: Analyze the role of the lock

    The lock ensures only one request fetches data from DB and updates cache on miss.
  2. Step 2: Consequence of missing lock

    Without lock, many requests detect cache miss and all fetch from DB, causing overload.
  3. Final Answer:

    Multiple requests fetch from DB simultaneously causing overload -> Option A
  4. Quick Check:

    No lock = DB overload [OK]
Hint: Lock prevents simultaneous DB fetch on cache miss [OK]
Common Mistakes:
  • Thinking cache never updates without lock
  • Confusing deadlock with missing lock
  • Assuming cache size grows without lock
4. A system uses early expiration to prevent cache stampede by setting cache TTL shorter than data TTL. However, users report stale data sometimes. What is the likely cause?
medium
A. Cache TTL is longer than data TTL causing stale reads
B. Cache is not refreshed after early expiration due to missing lock
C. Database is down causing stale cache
D. Cache size is too small causing evictions

Solution

  1. Step 1: Understand early expiration technique

    Early expiration refreshes cache before data TTL ends to avoid stampede.
  2. Step 2: Identify cause of stale data

    If cache refresh is not coordinated (missing lock), cache may not update properly, causing stale data.
  3. Final Answer:

    Cache is not refreshed after early expiration due to missing lock -> Option B
  4. Quick Check:

    Missing lock = stale cache after early expiration [OK]
Hint: Check if locking coordinates cache refresh [OK]
Common Mistakes:
  • Assuming TTL mismatch causes stale data
  • Blaming database downtime without evidence
  • Confusing cache size with freshness
5. You design a high-traffic API with cache stampede prevention. Which combination best prevents stampede while ensuring fresh data and minimal DB load?
hard
A. Disable cache and use database connection pooling
B. Use long cache TTL with no locking and rely on DB scaling
C. Use short cache TTL with distributed locking and request coalescing
D. Use infinite cache TTL and manual cache invalidation

Solution

  1. Step 1: Evaluate each option for stampede prevention

    Use long cache TTL with no locking and rely on DB scaling risks DB overload without locking; C disables cache increasing DB load; D risks stale data.
  2. Step 2: Identify best practice combination

    Short TTL triggers refresh often; distributed locking prevents multiple refreshes; request coalescing merges requests to reduce DB hits.
  3. Final Answer:

    Use short cache TTL with distributed locking and request coalescing -> Option C
  4. Quick Check:

    Locking + coalescing + short TTL = best stampede prevention [OK]
Hint: Combine locking and coalescing with short TTL for best results [OK]
Common Mistakes:
  • Ignoring locking and causing DB overload
  • Disabling cache increases latency and load
  • Using infinite TTL causes stale data
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard