Next Project Contacts
A sorting conveyor running through a dark hall, identical parcels blurred by motion under a diverter arm.

Data and databases

Redis for cache, queues and limits.

Cache with an invalidation rule, queues with retries and a dead-letter path, rate limits and sessions. The layer that decides how a product behaves under load.

Caching is the fastest way to make a product feel quick and the fastest way to serve someone else’s data to the wrong person. The difference is whether the invalidation rule was designed or improvised.

A wall of small wooden pigeonholes in a dark room, a few holding rolled paper and the rest empty.

The detail under the summary

  1. Cache with a stated rule

    Every cached value gets three answers before it exists: what invalidates it, how long it may be stale, and who it belongs to. Anything user-specific is keyed by user, and anything permission-dependent is not cached at the edge at all.

  2. Queues for work users should not wait for

    Mail, exports, third-party calls, image processing, recalculation. Each job is idempotent, retried with backoff, and lands in a dead-letter queue with an alert if it keeps failing. Queue depth and oldest-message age are on the dashboard, because those two numbers predict an incident before users notice one.

  3. Rate limiting and locks

    Token buckets in front of expensive endpoints, and short-lived locks where two workers must not do the same thing twice. Both are small pieces of code that prevent whole categories of outage.

  4. Sessions, with a caveat

    Redis is an excellent session store as long as everyone remembers it is memory. Persistence settings, eviction policy and the maximum memory limit are chosen deliberately — a default eviction policy quietly dropping session keys is a genuinely confusing bug to chase.

  5. Sizing and failure

    We plan for the cache being unavailable. The application should get slower, not break. That single design rule turns a Redis incident into a bad afternoon instead of an outage.

    Works with Node.js and Python services in front of PostgreSQL.

Discuss the next step

Tell us what you want to build or improve. We reply with a plan, an indicative budget and a start date.