Back to 20 Concepts
sessions-cookiesAdvanced

Distributed Session Storage: Sticky Sessions vs Redis Clusters

Stateful sessions store user state on the server. Sticky load balancing pins users to single servers (vulnerable to server crashes). Distributed Redis session clusters share session state across all horizontal API nodes.

Intuitive Mental Model

The Shared Hotel Front Desk Computer: If you check in at Front Desk 1, your room status is saved to the central cloud database (Redis). When you ask for a fresh towel at Front Desk 4, the clerk pulls up your active session instantly.

Architecture Blueprint & CodeProduction Standard
// Express Session with Redis Store (ioredis):
import session from 'express-session';
import RedisStore from 'connect-redis';
import Redis from 'ioredis';

const redisClient = new Redis(process.env.REDIS_URL!);

app.use(session({
  store: new RedisStore({ client: redisClient, prefix: "sess:" }),
  secret: process.env.SESSION_SECRET!,
  resave: false,
  saveUninitialized: false,
  cookie: { httpOnly: true, secure: true, sameSite: 'lax', maxAge: 86400000 }
}));

Key Architectural Takeaways

  • Zero Server Affinity: Any server in the cluster can handle any request, simplifying horizontal autoscaling and blue-green deployments.
  • Automatic Expiry: Redis key TTLs automatically clean up abandoned sessions without background garbage collection cron jobs.
Common Architectural Pitfall

Storing sessions in Node.js local memory (MemoryStore) in production; memory leaks occur and scaling to 2+ instances breaks logins.

Production Best Practice

Use Redis or a distributed key-value store for session persistence across load-balanced instances.