Use case · Rate limiting

Rate limiting is where per-command pricing hurts most.

Every rate-limit check is a couple of Redis operations, and it runs on every request, all day. With per-command billing the cost tracks your traffic, not the tiny slice of memory a counter actually uses. That is the workload flat-rate managed Valkey is built for — here is the monthly math, computed from source-checked rates.

The shape of it

A rate limiter at 100 req/s (~518M commands/mo) runs about $1,037/mo on Upstash pay-as-you-go versus $32.24/mo on Steada's flat-rate target — and the gap widens as your request rate climbs.

Worked monthly cost (2 ops/request, 0.25 GiB)

Request rate Upstash PAYG Steada target
25 req/s 130M commands/mo $259 $22.52 $237/mo lower
100 req/s 518M commands/mo $1,037 $32.24 $1,005/mo lower
500 req/s 2592M commands/mo $5,184 $84.08 $5,100/mo lower

Steada figures are a controlled-beta target, not a public offer. Assumes 2 Redis ops per rate-limit check and 0.25 GiB of counter storage. Upstash: $0.20/100,000 commands; Steada target: $19.00/mo + $0.03/1,000,000 commands. Source-checked 2026-06-01. Adjust ops-per-request and rate in the calculator.

Frequently asked questions

Why is rate limiting expensive on per-command Redis pricing?
A rate-limit check usually costs about 2 Redis operations, and it runs on every request, around the clock. With per-command billing the meter tracks request volume rather than the tiny amount of memory and compute a rate limiter actually uses, so the bill scales with your traffic instead of your cost to serve it.
How much does a Redis rate limiter cost per month?
It depends on request rate. At 100 requests/second and ~2 ops per check, that is roughly 518M commands a month. On Upstash pay-as-you-go that is about $1,037; on Steada's flat-rate target it is about $32.24 for the same workload. Model your own rate in the calculator.
Is Upstash good for rate limiting?
For low-volume or spiky APIs, Upstash is a fine, convenient choice — and its edge runtime support is genuinely useful. The trouble starts when a steady, high-request-rate limiter runs 24/7: per-command pricing then climbs faster than the underlying resources cost. That steady, high-volume case is exactly what flat-rate managed Valkey is built for.
Can I keep my rate-limiting code if I switch?
In most cases yes. Valkey speaks the same RESP protocol and Redis 7.2 commands, so libraries like go-redis, ioredis, and redis-py connect unchanged — point them at the new endpoint. Only code bound to the Upstash REST API or @upstash/redis HTTP client needs a standard TCP client to move.

Related & sources

See the full Upstash cost crossover, the Valkey vs Redis explainer, or the other worked workloads: session store · LLM response cache.

Per-command rates read from Upstash pricing; client compatibility per the Valkey project. Checked 2026-06-01.

Last reviewed