"There are only hard things in computer science: cache invalidation and naming things."
When the underlying data changes, the cache becomes stale. How do you update it?
TTL-based: Data expires after a set time. Simple but allows stale reads.
Event-based: When data changes, publish an event. Subscribers invalidate their caches.
Write-through: Updates go through the cache, keeping it fresh.
There's no perfect solution. TTL is easiest. Event-based is most accurate but adds complexity. Pick based on how stale your data can be.