Workers KV
用一個名稱存下一筆資料,然後在地球上任何地方都能飛快讀回。
Workers KV 是什麼?
Workers KV 是一個「鍵值(key-value)」資料庫(鍵值指的是把資料存成「名稱 → 值」的配對,再用名稱來查回它)。它是為「讀取」而生的:一旦資料被快取到使用者附近,再讀取就快得驚人。
這裡沒有資料表、也沒有 SQL。你只要用 put('user:42', '...') 來存、用 get('user:42') 來讀。值會被複製到 Cloudflare 的全球網路上,讓讀取永遠靠近你的使用者。
把它想成…
一個遍布全球的寄物櫃連鎖店。你寄放一件外套、拿到一張號碼牌(就是 key)。到任何一家分店出示號碼牌,馬上就能拿回外套——因為每家分店都留了一份副本。
為什麼要用 KV?
當你要一遍又一遍讀取同一小塊資料——一個設定開關、一份快取的 API 回應、一段登入工作階段——用完整的 SQL 資料庫太大材小用了。KV 讓這些讀取幾乎瞬間完成,而且全球都能取得。
全球快速讀取
快取過的值會從離每位使用者最近的據點提供。
扛得住超高讀取量
專為「讀多寫少」、同樣的 key 被頻繁讀取的情境而設計。
極簡的介面
只有 put、get、list、delete——沒別的要學了。
便宜好養
大方的免費額度加上極低的單次操作費,讓做快取幾乎不花錢。
什麼時候該用 KV?
快取 API 回應
把上游較慢的回應存起來,接下來一分鐘內都能快速回應。
功能開關與設定
切換功能開關,或存放幾乎每個請求都要讀的設定。
工作階段與權杖
保存讀取遠多於寫入的登入工作階段或驗證權杖。
轉址與對照表
短網址對照、依國家轉址等用 key 查找的對照表。
怎麼開始用?
建立一個「命名空間(namespace,指一桶獨立的鍵值配對)」,把它綁到 Worker,接著就能寫入和讀取值。
建立命名空間
Wrangler 會印出一組 id——複製起來給綁定用。
npx wrangler kv namespace create MY_KV綁定到 Worker
把這段加進 wrangler.jsonc,讓這個資料庫能用 env.MY_KV 取用。
{ "kv_namespaces": [ { "binding": "MY_KV", "id": "<paste-your-id-here>" } ] }在程式碼裡寫入與讀取
put 存入一個值;get 把它讀回來。expirationTtl 選項會在指定秒數後自動刪掉這個 key。
export default { async fetch(request, env) { await env.MY_KV.put("greeting", "Hello!", { expirationTtl: 3600, }); const value = await env.MY_KV.get("greeting"); return new Response(value ?? "not found"); }, };用 CLI 先塞一筆值
你也可以直接從終端機寫入 key。
npx wrangler kv key put --binding MY_KV "greeting" "Hello!" --remote部署上線
發布 Worker,全球同步上線。
npx wrangler deploy
重點概念
鍵與值
鍵(key)是名稱(最多 512 位元組);值(value)是資料(最多 25 MiB)。
最終一致性
寫入後,其他地區可能要約 60 秒才看得到新值。它們最終會同步——所以叫「最終一致性」。
過期時間 (TTL)
設定 expirationTtl,key 就會在 N 秒後自動刪除——很適合做快取。
適合讀多、不適合寫多
KV 在「讀遠多於寫」時最強;同一個 key 每秒最多只能寫入約 1 次。
小提示與限制
別拿來存要即時最新的資料
由於寫入要約 60 秒才會散布全球,像銀行餘額這種「全球每處都得即時最新」的資料就別用 KV。那種需求請改用 D1 或 Durable Objects。
- 免費額度:每天 10 萬次讀取、1,000 次寫入、1,000 次刪除、1,000 次列出操作,外加 1 GB 儲存。
- key 最多 512 位元組;value 最多 25 MiB;每個帳號最多 1,000 個命名空間。
- 用 session: 或 cache: 這類清楚的 key 前綴,把 key 分類整理好。
- 讀取比寫入便宜——多靠快取,並讓 TTL 自動清掉過期資料。