{"slug":"cloudflare-os-kv","verification":{"valid":false,"broken_at":0,"reason":"hash mismatch"},"count":22,"sources":[{"id":"s1","type":"specification","url":"https://developers.cloudflare.com/kv/concepts/how-kv-works/","title":"How Workers KV works","quote":"Negative lookups indicating that the key does not exist are also cached, so the same delay exists noticing a value is created as when a value is changed.","summary":"Normative consistency model: central storage, regional caches, stale values and cached misses.","publisher":"Cloudflare","claim_ids":["c1","c17","c2"],"accessed_at":"2026-07-26T05:45:59.424Z","prev":"genesis","hash":"25a663bdc376c779923fc6158fd7c65c5a0330f9dfe455a4f62dd4295c4cc55f"},{"id":"s2","type":"specification","url":"https://developers.cloudflare.com/kv/api/read-key-value-pairs/","title":"Read key-value pairs","quote":"get() and getWithMetadata() methods may return stale values.","summary":"Workers Binding API for reads, metadata and cacheTtl, including the stale-read warning.","publisher":"Cloudflare","claim_ids":["c2"],"accessed_at":"2026-07-26T05:45:59.424Z","prev":"25a663bdc376c779923fc6158fd7c65c5a0330f9dfe455a4f62dd4295c4cc55f","hash":"bb2f0147961457bb720e1909a6859cfa58ca16927ceb54b0cc15b3e49382388a"},{"id":"s3","type":"specification","url":"https://developers.cloudflare.com/kv/api/write-key-value-pairs/","title":"Write key-value pairs","quote":"Due to the eventually consistent nature of KV, concurrent writes to the same key can end up overwriting one another.","summary":"Workers Binding API for put, metadata and expiry, including the concurrent-write warning.","publisher":"Cloudflare","claim_ids":["c10","c3"],"accessed_at":"2026-07-26T05:45:59.424Z","prev":"bb2f0147961457bb720e1909a6859cfa58ca16927ceb54b0cc15b3e49382388a","hash":"c43a365f1fdff1dc9df212c2d6be72787619ff5aa5787a0f8be900f384ea5a17"},{"id":"s4","type":"publisher_documentation","url":"https://developers.cloudflare.com/kv/platform/limits/","title":"Workers KV limits","quote":"Writes to same key","summary":"Hard per-key, per-value, metadata, namespace and invocation limits.","publisher":"Cloudflare","claim_ids":["c21","c8"],"accessed_at":"2026-07-26T05:45:59.424Z","prev":"c43a365f1fdff1dc9df212c2d6be72787619ff5aa5787a0f8be900f384ea5a17","hash":"124486035d659fc7ad02c66f3a714dc20efe2c93f19c512758c79b36b42589b8"},{"id":"s5","type":"publisher_documentation","url":"https://developers.cloudflare.com/kv/platform/pricing/","title":"Workers KV pricing","quote":"All operations incur charges, including fetches for non-existent keys that return a null (Workers API) or HTTP 404 (REST API).","summary":"Current read, write, delete, list and stored-data allowances and overage rates.","publisher":"Cloudflare","claim_ids":["c16","c4","c5","c6"],"accessed_at":"2026-07-26T05:45:59.424Z","prev":"124486035d659fc7ad02c66f3a714dc20efe2c93f19c512758c79b36b42589b8","hash":"cf304f6de8d11281754680e5926e7c0f099a6bc15e038afb207260c65092c523"},{"id":"s6","type":"publisher_documentation","url":"https://developers.cloudflare.com/workers/runtime-apis/cache/","title":"Workers Cache API","quote":"The Cache API is a programmatic interface for reading from and writing to Cloudflare's cache from inside a Worker.","summary":"Free per-location cache primitive used to absorb repeat reads before KV.","publisher":"Cloudflare","claim_ids":["c7"],"accessed_at":"2026-07-26T05:45:59.424Z","prev":"cf304f6de8d11281754680e5926e7c0f099a6bc15e038afb207260c65092c523","hash":"d28a8dcfd8fa323d1b306709e38970dcbbc775d051e97c1ca78874dade47c655"},{"id":"s7","type":"publisher_documentation","url":"https://developers.cloudflare.com/workers/platform/storage-options/","title":"Workers storage options","quote":"This guide describes the storage & database products available as part of Cloudflare Workers, including recommended use-cases and best practices.","summary":"Official comparison surface for KV, D1, Durable Objects, R2 and external databases.","publisher":"Cloudflare","claim_ids":["c11"],"accessed_at":"2026-07-26T05:45:59.424Z","prev":"d28a8dcfd8fa323d1b306709e38970dcbbc775d051e97c1ca78874dade47c655","hash":"747ec212aaf55769a366b77bd1d2bae1e4cd56bb81389a7c1343072e88133b44"},{"id":"s8","type":"publisher_documentation","url":"https://blog.cloudflare.com/faster-workers-kv/","title":"Cloudflare's Workers KV latency measurements","quote":"KV reads for these keys, which represent over 40% of Workers KV requests globally, resolve in under a millisecond.","summary":"Vendor measurement of the tiered cache architecture and hot-key latency distribution.","publisher":"Cloudflare","date":"2024-09-26","claim_ids":["c19"],"accessed_at":"2026-07-26T05:45:59.424Z","prev":"747ec212aaf55769a366b77bd1d2bae1e4cd56bb81389a7c1343072e88133b44","hash":"e2619fd67cada3f4e1be8bbe3a79151e07934b584ac919808c1d63a18f95f30b"},{"id":"s9","type":"repository","url":"https://github.com/cloudflare/vinext/pull/2606","title":"vinext fix for KV's 512-byte cache-key limit","quote":"When the assembled key exceeds Cloudflare KV's 512-byte key limit, `handler.get` throws a 414 **before** the wrapped function runs","summary":"Merged code repair: retain short keys and hash only overflow after reserving prefix space.","author":"blitss","publisher":"GitHub","date":"2026-07-13","claim_ids":["c9"],"accessed_at":"2026-07-26T05:45:59.424Z","prev":"e2619fd67cada3f4e1be8bbe3a79151e07934b584ac919808c1d63a18f95f30b","hash":"56f18f5cf6a2ed0ccab15b64cee7150cbbd8edbcda19de4bab11e372d20bb4d5"},{"id":"s10","type":"repository","url":"https://github.com/cloudflare/cloudflare-docs/pull/2678","title":"Cloudflare documentation clarification for KV consistency","quote":"Add KV clarifications","summary":"Public documentation change where stale reads, concurrent overwrites and cache behavior are visible in the source history.","publisher":"GitHub","date":"2021-11-11","claim_ids":["c23"],"accessed_at":"2026-07-26T05:45:59.424Z","prev":"56f18f5cf6a2ed0ccab15b64cee7150cbbd8edbcda19de4bab11e372d20bb4d5","hash":"b41d1481d70c92ba75a71d83dcd1ab40fcf19e66c6cdd388d438972d05a35eb0"},{"id":"s11","type":"independent_measurement","url":"https://upstash.com/blog/upstash-redis-vs-cloudflare-kv","title":"Upstash Redis versus Cloudflare KV benchmark","quote":"I deployed a Cloudflare Worker that calls KV through the binding and Upstash through the official @upstash/redis/cloudflare client (HTTPS REST), then ran four scenarios: 5 runs × 30 samples = 150 samples per metric, all served from Cloudflare's Washington DC data center (IAD).","summary":"Competitor-authored but reproducible harness: 150 samples per metric from one Worker and one location, with KV binding and Upstash HTTPS held side by side.","author":"Josh","publisher":"Upstash","date":"2026-05-27","claim_ids":["c18"],"accessed_at":"2026-07-26T05:45:59.424Z","prev":"b41d1481d70c92ba75a71d83dcd1ab40fcf19e66c6cdd388d438972d05a35eb0","hash":"450ab2c6b14a727ea1637c26dd3b64ef51b25a4fbd8d80f0b94e3434b9707ae6"},{"id":"p1","type":"hn","url":"https://news.ycombinator.com/item?id=48672342","title":"OAuth for all","quote":"KV is not a distributed database and is really not intended as a database alternative at all. It's more meant for distributing bits of config globally. Cost aside, writes are way too slow for database-ish use","summary":"The Workers tech lead telling a user who had adopted KV as a datastore that this is a misuse: writes are too slow and eventual consistency is wrong for frequently-changing state, and to use Durable Objects SQLite or Hyperdrive instead. Negative on the common KV-as-database pattern.","author":"kentonv","publisher":"Hacker News","date":"2026-06-25","claim_ids":["c1"],"accessed_at":"2026-07-26T05:45:59.424Z","prev":"450ab2c6b14a727ea1637c26dd3b64ef51b25a4fbd8d80f0b94e3434b9707ae6","hash":"c4bf1f054fc164522d3a721b6cf6d6b6af2482b5c49b6d6858fa3040495c48ec"},{"id":"p2","type":"hn","url":"https://news.ycombinator.com/item?id=28703233","title":"A bit of math around Cloudflare's R2 pricing model","quote":"Workers KV is also eventually-consistent with no guarantee of read-after-write, which is a pretty big limitation compared to alternatives (S3 even has immediately-consistent list operations now after write).","summary":"Cost and consistency breakdown: KV at $5/million writes and $0.50/million reads (pricier per read than S3), plus no read-after-write guarantee. Contrasts with Durable Objects storage at $1/million 4KB writes but with the DO runtime cost stacked on top. Negative.","author":"kondro","publisher":"Hacker News","date":"2021-09-30","claim_ids":["c4","c6"],"accessed_at":"2026-07-26T05:45:59.424Z","prev":"c4bf1f054fc164522d3a721b6cf6d6b6af2482b5c49b6d6858fa3040495c48ec","hash":"b0ae1f09af39d9b55b1a6b47f028c4753de7f3b91b508e0e8861a72c773ed75f"},{"id":"p3","type":"hn","url":"https://news.ycombinator.com/item?id=22644115","title":"Launch HN: Fly.io (YC W20) – Deploy app servers close to your users","quote":"Cloudflare Workers KV has the simplest model, with a central-db that transparently and eventually only replicates read-only, hot-data specific to a DC but writes continue to incur heavy penalty","summary":"Describes their actual production topology: DynamoDB as single-region source of truth, DynamoDB Streams pushing into Workers KV, reads served from KV at the edge. They deliberately keep writes off KV because of ops-per-second, cost and latency penalties, and to avoid lock-in. Mixed, leaning negative on KV writes.","author":"ignoramous","publisher":"Hacker News","date":"2020-03-21","claim_ids":["c11"],"accessed_at":"2026-07-26T05:45:59.424Z","prev":"b0ae1f09af39d9b55b1a6b47f028c4753de7f3b91b508e0e8861a72c773ed75f","hash":"7f95c19d457b58f3149a9083cfe1f4856c471b0d710f424cbc573bec36a703fa"},{"id":"p4","type":"hn","url":"https://news.ycombinator.com/item?id=28581040","title":"Reality Check for Cloudflare Wasm Workers and Rust","quote":"You can use KV, with its trade-off of eventual consistency, or use something like FaunaDB or Firebase, but that means that the request has to wait for the request to the backing service.","summary":"Frames the practical bind: Workers have no durable disk and no region control, so you either accept KV's eventual consistency or pay a round trip to an external database. Also finds Workers Unbound pricing opaque. Negative.","author":"DenseComet","publisher":"Hacker News","date":"2021-09-19","claim_ids":["c13"],"accessed_at":"2026-07-26T05:45:59.424Z","prev":"7f95c19d457b58f3149a9083cfe1f4856c471b0d710f424cbc573bec36a703fa","hash":"78ad489e86c3ad90c0059f457ef3c7606bd96641ed372ec9b9532609cf66302b"},{"id":"p5","type":"hn","url":"https://news.ycombinator.com/item?id=47917107","title":"Durable Object alarm loop: $34k in 8 days, zero users, no platform warning","quote":"The key property is that caches.default with Cache-Control: max-age=3600 becomes a natural throttle — at most 24 cache misses per day per key, so KV writes are bounded by (keys × 24) regardless of traffic.","summary":"Describes a running share-link backend that uses KV plus the edge cache with a sliding TTL specifically to bound KV write cost, instead of DO + alarms. Accepts loss of strong consistency in exchange for writes that cannot run away. Positive pattern, written in response to a runaway-cost postmortem.","author":"jacobmei","publisher":"Hacker News","date":"2026-04-27","claim_ids":["c14","c7"],"accessed_at":"2026-07-26T05:45:59.424Z","prev":"78ad489e86c3ad90c0059f457ef3c7606bd96641ed372ec9b9532609cf66302b","hash":"65e7428e4eb02639b7319f57bae36b11cbef8b9d2c2877105f8d59bab1cee439"},{"id":"p6","type":"hn","url":"https://news.ycombinator.com/item?id=42531229","title":"Show HN: An edge first feature flag implementation on Cloudflare","quote":"I mostly use KV for storing flags specific to each project (which gets replicated automatically). Everything else goes to D1 (replication isn't needed here).","summary":"Author of an edge feature-flag system: flags live in KV for its built-in geo replication, configuration lives in D1. Elsewhere in the thread he notes KV still has propagation delay on updates. Positive use of KV for exactly the flags/config case.","author":"dj0k3r","publisher":"Hacker News","date":"2024-12-28","claim_ids":["c11","c12"],"accessed_at":"2026-07-26T05:45:59.424Z","prev":"65e7428e4eb02639b7319f57bae36b11cbef8b9d2c2877105f8d59bab1cee439","hash":"e3d074248824ff45c22c316ff194fa3294248a3210c0e1fbf02cc7611770c3e1"},{"id":"r1","type":"runtime_receipt","url":"https://miscsubjects.com/api/articles/cloudflare-os-kv","title":"Fresh first-party KV namespace inventory","quote":"Keys in the production namespace | 6,767","summary":"Wrangler key-list inventory counted keys, prefixes, name bytes and metadata without reading values or mutating the namespace.","publisher":"miscsubjects.com","date":"2026-07-26","claim_ids":["c20","c21"],"accessed_at":"2026-07-26T05:45:59.424Z","prev":"e3d074248824ff45c22c316ff194fa3294248a3210c0e1fbf02cc7611770c3e1","hash":"550da79f541bf7d9a649e268837e7d93270d62abdbd5420fcf22e5dd5f39f47d"},{"id":"r2","type":"runtime_receipt","url":"https://miscsubjects.com/api/articles/cloudflare-os-kv","title":"First-party seven-day KV operations receipt","quote":"Seven days of real operations — 899,100 reads, 85,620 writes, 740 deletes, 160 lists.","summary":"Cloudflare GraphQL kvOperationsAdaptiveGroups measurement for 2026-07-19 through 2026-07-26, with the query published.","publisher":"miscsubjects.com","date":"2026-07-26","claim_ids":["c15","c16"],"accessed_at":"2026-07-26T05:45:59.424Z","prev":"550da79f541bf7d9a649e268837e7d93270d62abdbd5420fcf22e5dd5f39f47d","hash":"26895d8e05017d4f90575d88122693083aad415cd1eb4526f27b8ad8f21e6a73"},{"id":"r3","type":"runtime_receipt","url":"https://miscsubjects.com/api/articles/cloudflare-os-kv","title":"First-party KV visibility probe","quote":"visible in 0.21 s and 0.30 s across two trials.","summary":"Two temporary-key trials, one after six cached 404s; both keys deleted and verified gone. Explicitly not evidence of a consistency guarantee.","publisher":"miscsubjects.com","date":"2026-07-25","claim_ids":["c17"],"accessed_at":"2026-07-26T05:45:59.424Z","prev":"26895d8e05017d4f90575d88122693083aad415cd1eb4526f27b8ad8f21e6a73","hash":"bfcd1eac2af2e6fd532c4cd026093459cd8cd774b94f1e16e6e2f2df95ca3dc3"},{"id":"r4","type":"runtime_receipt","url":"https://miscsubjects.com/api/articles/cloudflare-os-kv","title":"First-party KV-lock code audit","quote":"KV get→fire→put races: parallel identical calls all miss, all fire.","summary":"Local code inspection contrasts advisory KV leases with D1 INSERT OR IGNORE for contended idempotency claims.","publisher":"miscsubjects.com","date":"2026-07-25","claim_ids":["c10","c3"],"accessed_at":"2026-07-26T05:45:59.424Z","prev":"bfcd1eac2af2e6fd532c4cd026093459cd8cd774b94f1e16e6e2f2df95ca3dc3","hash":"ceb9958bc04bb709d389db07f3c0da9ae77c44a06456fe5e839ed2dd5dfe80a2"},{"id":"r5","type":"runtime_receipt","url":"https://miscsubjects.com/api/articles/cloudflare-os-kv","title":"First-party snapshot metadata inventory","quote":"Bytes recorded by that metadata | 175,859,336","summary":"Fresh KV list metadata counted snapshot values, recorded bytes and largest recorded value without fetching any stored body.","publisher":"miscsubjects.com","date":"2026-07-26","claim_ids":["c22"],"accessed_at":"2026-07-26T05:45:59.424Z","prev":"ceb9958bc04bb709d389db07f3c0da9ae77c44a06456fe5e839ed2dd5dfe80a2","hash":"d9244be77cf814f51190b7da1d844a3969df9c043ee0d38fdf74447ad88a0b5a"}]}