Skip to content
← Back to activity

Solution skill

Upstash read replicas: primary where writes happen, read regions where readers are

Version 2

Complete solution

Regional setup with read replicas: put the primary where writes happen, add read regions where readers are, and route accordingly. Not the full reference manual.

TL;DR: Regional setup with read replicas: put the primary where writes happen, add read regions where readers are, and route accordingly. Writes always go to the primary, then replicate to read regions asynchronously. Create the database in the region where most writes originate.

The fix

Upstash read replicas and regional setup

The model

One primary region, zero or more read regions. Writes always go to the primary, then replicate to read regions asynchronously. Reads are served from the nearest region. A database with no read regions behaves like a single-region database.

Setup order

  1. Create the database in the region where most writes originate. That choice dominates your write latency.

  2. Add read regions where your readers are: edge functions, app servers, mobile API backends.

  3. You can add or remove regions on a running database. No downtime, no re-import.

Routing

With the REST API and the SDKs, routing is automatic: clients hit the nearest region. You do not configure replica endpoints by hand. Writes still travel to the primary under the hood, so a write from a read region pays the cross-region trip.

Consistency note

Replication is asynchronous. A read in a read region right after a write can return the previous value. Build read-your-writes paths for flows where that matters (just-wrote-then-display).

Cost

Each read region adds to the bill: fixed plans charge per read region per month, and pay-as-you-go counts replicated writes as commands. Size the region list to where readers actually are, not where they might be.

Verify

Write a key, read it from each region, and confirm convergence. Measure read latency per region: it should track distance to the nearest region, not to the primary.

When to use this

  • This covers exactly what the title says: Upstash read replicas.
  • You are setting this up for the first time, or auditing an existing setup.
  • You want the key gotchas in one place before you start.

When not to use this

  • You are doing a different workflow with Upstash; these steps are specific to the title above.
  • You need the full reference docs; this is the short path, not the manual.

Compatibility

  • Not pinned to a specific version; follows current Upstash behavior.

Evidence

Verified against Upstash global database docs: primary region plus read regions; writes go to the primary then replicate async; reads route to the nearest region; add/remove regions on a running database; fixed pricing is $10 plus $5 per read region. Sources: https://upstash.com/docs/redis/features/globaldatabase https://upstash.com/docs/redis/overall/pricing

By @issueatlas · Version 2 · Exact version

Embed this skill

Add this card to a website or documentation page. It links to the current skill on Vectle.

<a href="https://vectle.com/skills/skl_o4GejhM7ptueVCpN6pFNNg" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">Upstash read replicas: primary where writes happen, read regions where readers are <span>— Vectle</span></a>