Cloudflare KV beats Upstash on read pricing and hot-key latency
Cloudflare KV offers lower read costs at $0.50 per million compared to Upstash Redis, making it ideal for read-heavy workloads. However, Upstash provides better performance for write-heavy tasks and cold reads due to its active replication model.
Cloudflare KV handles high-read workloads better than Upstash Redis because it uses a pull-based cache that serves data from in-memory lookups. My testing shows that Cloudflare KV delivers faster results for hot keys that already reside in the regional cache. In a single-region test with 400 requests per second, Cloudflare KV achieved a P90 latency of 115ms, whereas Upstash Redis consistently maintained a lower profile across various scenarios. I find that KV is the superior choice when you run code exclusively on Cloudflare Workers or Pages and need to serve configuration data or feature flags that do not change frequently.
| Feature | Cloudflare Workers KV | Upstash Redis |
|---|---|---|
| Read Cost (per 1M) | $0.50 | $2.00 |
| Write Cost (per 1M) | $5.00 | $2.00 |
| Storage Cost | $0.50 / GB-month | $0.25 / GB-month |
| Max Writes per Key | 1 per second | No per-key limit |
| Consistency | Eventual (60s propagation) | Active replication |
Cloudflare KV remains the cheaper option for read-heavy tasks. The Workers Paid plan includes 10 million reads and 1 GB of storage for a $5 monthly fee, while additional reads cost $0.50 per million. Upstash Redis pay-as-you-go pricing costs $0.20 per 100,000 commands. You should stick with Cloudflare KV if your application can tolerate 60 seconds of cross-region inconsistency.
Upstash wins for write-heavy workloads
Upstash Redis provides the better solution if you need to update the same key multiple times per second. Cloudflare KV imposes a strict limit of one write per second to the same key on every plan. This restriction makes KV a poor fit for counters, rate limiting buckets, or live leaderboards. Upstash Redis lacks this per-key limit and handles commands like INCR or HSET in microseconds.
Upstash also provides better latency for cold reads in remote regions. Because Upstash uses active replication, it pushes data to every read region you enable. Cloudflare KV uses a pull-based model where the first read in a cold region must fetch data from a central store. This process leads to a 30 ms latency for cold reads on Cloudflare, while Upstash maintains a 6 ms latency from a location like IAD to us-east-1. If you need to access your data from outside the Cloudflare ecosystem, such as from Vercel or AWS Lambda, Upstash offers more flexibility via its Redis protocol and HTTPS REST endpoint.
| Use Case | Cloudflare KV Recommendation | Upstash Redis Recommendation |
|---|---|---|
| Feature Flags | Yes | Yes |
| Rate Limiting | No | Yes |
| Session State | No | Yes |
| Static Assets | Yes | No |
Comparing storage and feature sets
Cloudflare KV targets simplicity with five operations: get, put, delete, list, and getWithMetadata. It stores values as opaque blobs up to 25 MiB. You will find that KV lacks the complex data structures found in Redis. Upstash Redis supports nearly all Redis commands, including sorted sets, streams, hashes, and pub/sub.
The pricing models diverge significantly as your scale increases. For a workload with 10 million reads and 10 million writes per month with 1 GB of data, the Upstash Fixed 1GB plan costs $20. Cloudflare KV costs $5.50 for the same volume because the $5 base plan covers the first 10 million reads. If you manage a large dataset, the Cloudflare KV per-read price remains competitive. I would avoid Cloudflare KV for any task requiring atomic operations or consistency control, as the service lacks these features. Does the 60-second propagation delay in KV affect your specific application’s user experience? Use Upstash Redis when you require a fully-fledged database with Redis data types and predictable latency for first-time reads in any region.