· upstash / redis / cloudflare-workers

Upstash vs Redis Cloud — serverless Redis for edge apps

Upstash is the only managed Redis for Cloudflare Workers, Vercel Edge, and Next.js Edge. Redis Cloud requires TCP, which V8-isolate environments block entirely.

By

1,758 words · 9 min read

Upstash is the only option for edge runtimes. Cloudflare Workers, Vercel Edge Functions, and Next.js Edge API Routes run in V8-isolate environments that block TCP connections entirely. Upstash exposes Redis over HTTP/REST — the only protocol those runtimes accept. Redis Cloud requires TCP. The technical question is settled before you open a pricing tab.

The pricing story is almost as lopsided at low to moderate scale. Upstash pay-as-you-go runs ~$2/month at 1M commands. Redis Cloud Pro starts at $200/month. They reach cost parity around 100M commands/month.

Who this is for

Developers building APIs, rate-limiters, caches, or session stores on Cloudflare Workers, Vercel Edge Functions, or Next.js Edge API Routes. If you are running a traditional Node.js server with persistent TCP connections, both products work and the comparison becomes a straightforward pricing and features question. For a deeper look at Redis-backed rate limiting on server-side Node.js, see Best rate-limit library for Node.js + Redis.

Feature matrix

FeatureUpstash RedisRedis Cloud ProRedis Cloud Essentials
Edge runtime compatible✅ HTTP/REST❌ TCP only❌ TCP only
Cloudflare Workers✅ Native (@upstash/redis)
Vercel Edge Functions✅ Confirmed
Next.js Edge API Routes✅ Confirmed
Pricing modelPer-commandCapacity (hourly/RAM)Capacity (hourly/RAM)
Global replication✅ Up to 12 regions (read replicas)✅ Active-Active multi-primary✅ Active-Passive only
RedisJSON✅ (Redis Stack)✅ (Redis Stack)
RediSearch✅ (Redis Stack)✅ (Redis Stack)
RedisTimeSeries❓ Not confirmed
RedisBloom❓ Not confirmed
Persistence✅ Automatic backups
Free tier✅ 256 MB / 500K cmd/mo✅ 30 MB✅ 30 MB
Uptime SLA99.99% (Prod Pack add-on)99.999%99.99%
Private connectivity
SOC-2 compliance✅ (Prod Pack add-on)
Standard Redis clients❌ HTTP SDK only✅ ioredis, node-redis, any

Pricing

Upstash

TierCost
Free$0/month — 256 MB, 500K commands/month, 10 GB bandwidth
Pay-as-you-go$0.20 per 100K commands; storage $0.25/GB (first 1 GB free)
Fixed plans$10–$1,500/month (250 MB–500 GB)
Prod Pack+$200/month/database — HA, 99.99% SLA, encryption at rest, SOC-2

Global replication multiplies write costs per region. One primary + one read region → $0.40 per 100K writes.

Redis Cloud

TierCost
Free$0 — 30 MB, shared cloud, best-effort SLA
Essentials~$5/month minimum (250 MB, shared, 99.99% SLA)
Pro$200/month minimum (first $200 credited free), dedicated cluster, 99.999% SLA

Cost at scale

Monthly commandsUpstash (pay-as-you-go)Redis Cloud ProRedis Cloud Essentials
1M~$2$200 (minimum)~$5
10M~$20$200 (minimum)~$50+
100M~$200~$200+capacity-limited
500M~$1,000competitive

Upstash becomes expensive at scale with global replication enabled. At 100M write commands across two regions, Upstash runs ~$400 vs Redis Cloud Pro ~$200. The crossover matters if you are actually writing at that volume.

Edge compatibility in practice

Cloudflare Workers and Vercel Edge Functions run in V8 isolates: no TCP, no persistent connections, no native Redis wire protocol. The only way to talk to Redis from these runtimes is over HTTPS.

Upstash was built for this. The @upstash/redis package is an HTTP client that speaks the Redis API over REST:

import { Redis } from "@upstash/redis/cloudflare";

export default {
  async fetch(request: Request, env: Env): Promise<Response> {
    const redis = Redis.fromEnv(env); // reads UPSTASH_REDIS_REST_URL + UPSTASH_REDIS_REST_TOKEN
    const count = await redis.incr("pageviews");
    return new Response(`Views: ${count}`);
  },
};

Secrets go in via Wrangler:

wrangler secret put UPSTASH_REDIS_REST_URL
wrangler secret put UPSTASH_REDIS_REST_TOKEN

There is no equivalent path for Redis Cloud. The TCP socket that ioredis and node-redis need does not exist in a Cloudflare Worker. A reverse-proxy workaround would round-trip through an extra server, defeating most of the latency and cost reasons to use edge compute in the first place.

If rate limiting is your primary use case on Workers and you want to avoid Redis entirely, Cloudflare’s native rate-limiting APIs cover most patterns without any external dependency.

Latency

Upstash publishes a live edge caching benchmark (vendor-produced, source available on GitHub):

  • With Upstash edge caching enabled: ~5 ms global average from 10 geographic regions
  • Without edge caching (single region over HTTPS): >100 ms for geographically distant clients

The benchmark measures full request latency including TLS handshake, HTTP framing, and JSON serialization — not raw Redis wire latency. That overhead is real, but it is the only option available in edge runtimes. No verified p50/p99 numbers survived adversarial review; the benchmark is Upstash’s own tool.

For Redis Cloud on traditional server-side deployments, sub-millisecond wire latency with persistent TCP connections is standard. That number is irrelevant if your runtime blocks TCP.

Developer experience

Upstash

Upstash’s SDK is designed for serverless environments. Every call is stateless HTTPS — no connection pooling to manage, no connection leak risk in short-lived functions.

// Node.js / edge-compatible
import { Redis } from "@upstash/redis";

const redis = new Redis({
  url: process.env.UPSTASH_REDIS_REST_URL!,
  token: process.env.UPSTASH_REDIS_REST_TOKEN!,
});

// Pipeline multiple commands in one HTTP round-trip
const pipeline = redis.pipeline();
pipeline.set("user:123:session", sessionToken, { ex: 3600 });
pipeline.incr("user:123:requests");
const results = await pipeline.exec();

The dashboard at upstash.com covers database creation, region selection, usage metrics, and CLI browsing in one place. Setup from zero to first command takes under five minutes.

Redis Cloud

Redis Cloud uses the standard Redis wire protocol with any compliant client. If you have existing Redis knowledge and server-side infrastructure, nothing changes:

import { createClient } from "redis";

const client = createClient({
  url: "rediss://:<password>@<host>:<port>",
});

await client.connect();
await client.set("key", "value", { EX: 3600 });
const val = await client.get("key");
await client.disconnect();

The app.redislabs.com dashboard is comprehensive and enterprise-oriented. Connection strings, TLS certificates, access control, and Active-Active replication configuration are all manageable from the console. The trade-off is complexity — there is more surface area than a simple serverless cache needs.

Global replication

Both products offer multi-region deployments, but with different semantics.

Upstash offers up to 12 read replicas across regions. Writes go to one primary region; reads are served from the nearest replica. Eventual consistency. Cost scales linearly with write-region count.

Redis Cloud Pro offers Active-Active (CRDT-based multi-primary) replication — every region accepts writes. This is the right choice for globally distributed write-heavy workloads that cannot tolerate the primary round-trip latency. Redis Cloud Essentials only offers Active-Passive (replica reads only, like Upstash).

If you are caching at the edge with Upstash’s read replicas, ~5 ms reads globally is the advertised result. If you need every region to accept writes independently — not just reads — Redis Cloud Pro’s Active-Active is the only managed Redis that delivers that with a 99.999% SLA.

Module support

Redis Cloud ships as Redis Stack on both Pro and Essentials tiers: RedisJSON, RediSearch, RedisTimeSeries, and RedisBloom are included. No add-ons required.

Upstash confirms support for RedisJSON and RediSearch. Support for RedisTimeSeries and RedisBloom was not confirmed in Upstash’s documentation as of this writing — verify at upstash.com/docs before relying on those modules. For context on the broader Redis ecosystem including the Valkey fork, see Redis vs Valkey 2026.

Adoption signals

Upstash has first-party integrations on both major edge platforms:

Vercel KV is a wrapper over Upstash Redis. A Hacker News discussion at the Vercel KV launch noted Vercel KV runs at roughly 2× the price of a direct Upstash subscription — a signal that Upstash is the substrate, not Vercel, and that direct subscriptions are available.

Verdict

Pick Upstash if:

  • You are building on Cloudflare Workers, Vercel Edge Functions, or Next.js Edge API Routes — Upstash is the only option that works.
  • Traffic is bursty, low, or unpredictable — pay-as-you-go at $0.20/100K commands scales to zero.
  • You need a free tier with a meaningful cap (256 MB / 500K commands vs Redis Cloud’s 30 MB).
  • Serverless, low-ops setup matters more than SLA and private connectivity.

Pick Redis Cloud Pro if:

  • You are running a traditional server or container-based deployment with persistent TCP connections.
  • You need Active-Active multi-primary global replication with a 99.999% SLA.
  • Private connectivity (VPC peering) or SOC-2 compliance without paying per-database add-ons is required.
  • Sustained high-volume workloads (~100M+ commands/month) make capacity pricing competitive.

Pick Redis Cloud Essentials if:

  • You are on a traditional server stack with low volume and want a cheap entry point (~$5/month vs Upstash’s $2 for 1M commands — roughly equivalent at that scale, without edge compatibility).

Caveats

Neither Upstash nor Redis Cloud had a confirmed active publisher affiliate programme as of 2026-06. Upstash has no public referral programme. Redis Cloud’s partner programme was announced for February 2026 but had not launched with public tracking URLs or commission rates. Verify directly with both vendors before publication. This article contains no affiliate links and the verdict is not influenced by any commercial relationship.

The benchmark numbers (5 ms edge, >100 ms without edge caching) come from Upstash’s own benchmark tool. No third-party verified p50/p99 latency figures were available.

RedisTimeSeries and RedisBloom support on Upstash was not confirmed at time of writing. If you need those modules, verify before committing to Upstash.

References