Node.js theorytheory 0/50 · 0%
Performance · medium

33. Caching strategies

In-memory caches, TTLs and cache invalidation.

Repeated, expensive lookups (an RPC call, a slow database query) benefit from caching. A simple in-memory cache stores a value with a timestamp and expires it after a time-to-live (TTL).

js
function createCache(ttlMs) {
  const store = new Map();
  return {
    get(key) {
      const hit = store.get(key);
      if (!hit || Date.now() > hit.expires) return undefined;
      return hit.value;
    },
    set(key, value) {
      store.set(key, { value, expires: Date.now() + ttlMs });
    },
  };
}

const priceCache = createCache(30_000); // 30 second TTL

In-memory caches are simple but don't survive a restart and aren't shared across multiple server instances — for those needs, an external store like Redis is the usual next step. "There are only two hard things in computer science: cache invalidation and naming things" is a joke with real substance.

Check your understanding

  1. 1. What does TTL stand for in caching?

  2. 2. What is a limitation of a simple in-memory cache in a multi-instance deployment?

  3. 3. What external store is commonly used for a shared cache across instances?