The invalidation follow up is where this question actually gets decided. What worked for me in a real loop: pick TTL as the baseline and treat explicit invalidation as an optimization, not the default. Then name the one case where stale data is unacceptable and handle only that with versioned keys or explicit purges. Trying to invalidate everything perfectly turns into describing a distributed consistency protocol you cannot finish in 40 minutes. Also, write back is almost always the wrong interview answer. The durability follow up kills it unless you have a very specific write heavy case and can say what you lose on a crash.