Skip to content
Tech Stack6 August 2026 · 9 min read

Redis vs Upstash vs DragonflyDB for SaaS Caching in 2026

Redis, Upstash and DragonflyDB solve the same caching problem and bill you three different ways. The break-even between metered and fixed pricing sits at about four commands per second.

Redis vs Upstash vs DragonflyDB for SaaS Caching in 2026

Redis vs Upstash vs DragonflyDB for SaaS Caching in 2026

A cache is the only piece of infrastructure I have ever added to a product and then quietly ripped back out three weeks later. It was doing nothing except adding a network hop and a second thing that could go down at 2am, because the queries underneath were already fast and the read volume was a fraction of what I had drawn on the architecture diagram.

So when the question comes up about SaaS caching, Redis, Upstash, and which one to reach for, my first answer is usually that you need a better index. Not a cache. Once you genuinely cross the line where a cache earns its keep, though, the decision stops being about latency benchmarks and turns almost entirely into a question about how your provider counts. Per command, per gigabyte, or per hour of a box you have to babysit. Those three billing models produce wildly different invoices for the identical workload, and for most B2B SaaS products the invoice is the deciding factor long before p99 latency is.

What Does SaaS Caching Actually Cost on Redis vs Upstash?

A tarnished brass balance scale standing on beige linen, one pan holding a coiled grey ethernet cable and the other a small stack of metal discs, dust drifting through hard side light

Upstash bills per command at $0.20 per 100,000, while fixed-tier Redis plans bill per gigabyte of memory regardless of traffic volume.

That single difference reorganises the whole comparison. Here is the field as it actually prices out, using each provider's published numbers:

OptionBilling modelEntry priceWhere it stops being cheap
Upstash pay-as-you-goPer command$0.20 per 100K commandsSustained traffic; every read region multiplies write cost
Upstash fixed tierPer GB of memory$20/mo for 1 GBAn idle database still bills the full plan
ElastiCache (Valkey)Per node-hour~$12/mo for cache.t4g.microYou own the ops; cross-AZ transfer is $0.01/GB both directions
Redis CloudPer GB, HA priced separately$18/mo Essentials 1 GBPro with HA is $454/mo at 10 GB
DragonflyDB self-hostedWhatever the box costsPrice of one serverUpgrades, failover, and the pager are yours

Those numbers come from Upstash's published pricing page and their own 2026 provider-by-provider cost comparison, which is worth reading precisely because a vendor comparing itself to nine competitors has to show its arithmetic. The free tier is 256 MB, 500,000 commands a month, and 10 GB of bandwidth, which is more than enough to run a session store for a product with a few hundred users.

Note the read-region line. Upstash's comparison states that a read replica in another region costs about half the plan price, so serving reads from three regions roughly triples your bill. That is the tax on treating a cache as an edge computing primitive rather than a regional one.

The Crossover Sits Around Four Commands Per Second

A wooden ruler balanced across a hexagonal pencil on a pale desk, a heap of paper clips weighing one end and a single steel washer the other, tipped just past level toward the washer

Do the division. At $0.20 per 100,000 commands, one command costs $0.000002. The $20 fixed 1 GB plan buys you 10 million commands before pay-as-you-go catches up, which works out to roughly 3.9 commands per second sustained across a month. Below that, metered wins. Above it, you are paying a premium for elasticity you stopped needing.

Where Does DragonflyDB Actually Fit?

One large brass gear standing upright on a scuffed oak workbench, surrounded by eight much smaller steel gears lying flat, with a dark coffee ring and a smear of machine oil in the foreground

DragonflyDB is a vertical-scaling answer to a horizontal problem, worth reaching for when one big cache node beats operating a Redis cluster.

The headline claim on the project's GitHub repository is 25X more throughput than Redis, crossing 3.8M QPS on a c6gn.16xlarge, with about 30% better memory efficiency at idle. Redis is single-threaded for command execution by design; Dragonfly is not. On a 64-core machine that difference is enormous, and it is the entire pitch.

The caveats matter more than the benchmark. The same repository documents support for roughly 185 Redis commands, which it describes as approximately the Redis 5.0 API, and cluster mode as "currently supports only emulated". If your application leans on RediSearch or a genuine cluster topology, this is not a drop-in replacement no matter what the wire protocol says. Run your test suite against it in staging before you believe anyone, including me.

For a solo-maintained product the calculus is simpler than the benchmark suggests. Dragonfly is excellent when you have already decided to self-host and you want fewer, bigger nodes. It is the wrong answer when the thing you are actually trying to buy is not having to think about nodes at all.

Rate Limiting Is the Line Item Nobody Budgets For

The failure mode that catches people here is arithmetic rather than latency, and it compounds silently for months before anyone opens the invoice and traces it back.

You install a rate limiter. It feels free, because a rate limiter is "just a counter". Then you pick the sliding-window algorithm because fixed windows let a burst through at the boundary, and you enable multi-region because your users are spread across two continents. Upstash's own documentation is blunt about what happens next: using the sliding window algorithm with a multiregion setup "results in large number of commands in Redis and long request processing times", per their rate-limit algorithm docs.

Now every inbound HTTP request costs you several billable Redis commands before your handler does any work. A health check every ten seconds from three regions is not free anymore. Neither is your uptime monitor. Neither is the crawler that found your API docs and settled in to enumerate every endpoint.

How many commands does your rate limiter fire per request? If you cannot answer that from memory, you do not know what your cache costs. That is the number to instrument first, ahead of hit ratio, ahead of p99.

What Actually Changed in the Last Year

The Redis ecosystem spent two years in a licensing fight and has come out of it with more real options than it had before. Redis 8 added AGPLv3 as a third license alongside SSPLv1 and RSALv2 in May 2025, which put the core engine back inside an OSI-approved license. Valkey, the Linux Foundation fork, kept the BSD-3 lineage and became the engine AWS recommends.

The more useful change is recent and concrete. AWS announced Valkey 9.0 for ElastiCache on May 5, 2026, delivering "up to 40% higher throughput for pipelined workloads" at no additional cost. Two smaller features in that release matter more than the throughput number: per-field TTLs on hashes, and multi-database support in cluster-mode-enabled deployments. Hash field expiration is the one to notice if you are multi-tenant. It means a tenant's cached object can expire field by field instead of forcing you to model every expiring value as its own key, which is how most of us have been faking it for years.

Multi-database support in cluster mode is the other quiet win. Lightweight logical namespaces per tenant, without standing up a cluster per customer.

How Do You Actually Pick?

Pick the billing model that matches your traffic shape first, because the vendors inside each model differ far less than their marketing does.

  1. Measure first. Instrument the queries you think need caching. Log the actual read rate for a week. Most products discover the hot path is three endpoints and the rest is noise.
  2. Under ~4 commands per second sustained, go metered. Upstash pay-as-you-go, single region, no read replicas. It will cost single-digit dollars and it scales to zero when your product is asleep. This is the same reasoning that drives the rest of the SaaS MVP stack decisions: buy elasticity while your traffic is unpredictable, buy capacity once it is not.
  3. Sustained and predictable, go fixed. A fixed Upstash tier, ElastiCache on Valkey, or Redis Cloud Essentials. At this point you are comparing memory per dollar and how much HA costs, not architecture.
  4. Already self-hosting and cluster-shy, evaluate Dragonfly. One big node, your test suite green against it in staging, and a documented fallback to Redis if a command you depend on turns out to be in the missing 15%.
  5. Skip the cache entirely if step 1 says so. A composite index and a smaller SELECT beat a cache you have to keep coherent.

That third option, buying HA, deserves more scrutiny than it usually gets. Upstash's Prod Pack is $200 a month per database for an uptime SLA and multi-zone HA. Redis Cloud's Pro tier with HA at 10 GB is $454 a month. If your cache is genuinely load-bearing, those are honest prices for a thing that must not fall over. If your cache is a nice-to-have that can miss and fall through to the database, paying HA prices for it is a category error.

A Note From a Product That Skipped All Three

On BookBed, the property management system I built solo, there is no Redis layer at all. It runs Flutter against Firebase and Stripe, and Firestore's own read caching plus a sensible query shape covered every hot path across six months of development and 40-plus screens. The one place a cache would genuinely earn itself is iCal sync, where the same remote calendar feed gets pulled repeatedly and parsed into the same result. That is a caching problem with a clear key and a natural TTL. Everything else was a query problem wearing a caching costume.

Actually, that undersells one thing. Going serverless end to end means your compute has no warm process to hold an in-memory map, so the cheap local cache that a long-running Node server gives you for free simply does not exist. That absence is what pushes serverless products toward Upstash specifically, and it is a better reason to adopt it than any benchmark.

Before You Provision Anything

Open your slowest endpoint's trace and find out how many database round trips it makes and how many of them return identical bytes on consecutive calls. If that number is small, you have a query to fix. If it is large and the payloads repeat, you have a cache key, and now you know which of the three billing models to price it under.

What does your rate limiter cost you per request today?

Free resource

Free SaaS MVP Scope Template

A Notion document with the full feature checklist, MVP vs. nice-to-have table, pre-build questions, and cost signals — so you walk into any developer call knowing exactly what to ask for.

Get the template →
DL

Dusko Licanin

Full-Stack Developer · Banja Luka, Bosnia

Full-stack developer shipping SaaS MVPs, web apps, and mobile apps using AI-augmented workflows — without agency coordination overhead. Live portfolio: BookBed, Callidus, Pizzeria Bestek.

Frequently Asked Questions

Is Upstash Redis a good fit for a SaaS product?

Upstash fits SaaS workloads that are spiky, low volume, or running on serverless compute, because it charges per command and scales to zero between requests. Its free tier covers 256 MB and 500,000 commands a month, which is enough for a session store or feature-flag cache on a product with a few hundred users. The fit gets worse as traffic becomes steady and predictable, since per-command billing keeps climbing while a fixed-memory plan does not. It also gets worse if you enable multiple read regions, because a read replica costs roughly half the plan price and multiplies write cost across regions.

Is DragonflyDB production ready?

DragonflyDB runs in production today, but its Redis compatibility is a subset rather than a superset, so readiness depends entirely on which commands your application uses. The project documents support for roughly 185 Redis commands, described as approximately the Redis 5.0 API, and cluster mode as emulated only. That covers plain caching, counters, sets and sorted sets comfortably. It does not cover Redis modules such as RediSearch or RedisJSON, and it does not give you a real cluster topology. Run your existing integration suite against a Dragonfly instance in staging before committing, and keep a documented rollback to Redis for the commands that turn out to be missing.

Does a multi-tenant SaaS need a distributed cache?

Most multi-tenant SaaS products need better indexes long before they need a distributed cache, and adding one early buys you a coherence problem instead of a speed problem. A cache earns its place when the same expensive computation is requested repeatedly with an identical key and a tolerable staleness window: parsed feeds, rendered pricing tables, permission lookups that hit four joins. It does not earn its place on queries that are already sub-10ms. Instrument the endpoints you suspect, log the actual repeat rate for a week, and cache only the handful of keys where the repeat rate is high and the payload genuinely does not change between calls.

Redis vs Upstash: which one is actually cheaper?

Upstash pay-as-you-go is cheaper below roughly ten million commands a month, and fixed-memory Redis plans are cheaper above it. The arithmetic is simple: at twenty cents per hundred thousand commands, ten million commands costs twenty dollars, which is exactly the price of a one-gigabyte fixed tier. Spread across a month, that break-even is about 3.9 commands per second sustained. Below the line you are paying for elasticity and getting it. Above the line you are paying a premium for elasticity you no longer need, and a fixed tier or an ElastiCache node priced per hour will be the better deal.

What changed in the Redis ecosystem recently?

The two changes that matter are the license settling down and Valkey pulling ahead on managed platforms. Redis 8 added AGPLv3 as a third license option in May 2025, which put the core engine back under an OSI-approved license after two years of dual-license friction. Meanwhile Valkey, the BSD-3 fork under the Linux Foundation, became the engine AWS recommends on ElastiCache. Valkey 9.0 landed there in May 2026 with up to 40% higher throughput on pipelined workloads, per-field TTLs on hashes, and multi-database support in cluster mode. That last pair is genuinely useful for multi-tenant caches and was awkward to emulate before.