sell儲存與資料庫
key

Workers KV

用一個名稱存下一筆資料,然後在地球上任何地方都能飛快讀回。

100K每日免費讀取次數
1K每日免費寫入次數
25 MiB單筆值上限
~60s全球同步時間
lightbulb

Workers KV 是什麼?

Workers KV 是一個「鍵值(key-value)」資料庫(鍵值指的是把資料存成「名稱 → 值」的配對,再用名稱來查回它)。它是為「讀取」而生的:一旦資料被快取到使用者附近,再讀取就快得驚人。

這裡沒有資料表、也沒有 SQL。你只要用 put('user:42', '...') 來存、用 get('user:42') 來讀。值會被複製到 Cloudflare 的全球網路上,讓讀取永遠靠近你的使用者。

local_library

把它想成…

一個遍布全球的寄物櫃連鎖店。你寄放一件外套、拿到一張號碼牌(就是 key)。到任何一家分店出示號碼牌,馬上就能拿回外套——因為每家分店都留了一份副本。

help

為什麼要用 KV?

當你要一遍又一遍讀取同一小塊資料——一個設定開關、一份快取的 API 回應、一段登入工作階段——用完整的 SQL 資料庫太大材小用了。KV 讓這些讀取幾乎瞬間完成,而且全球都能取得。

bolt

全球快速讀取

快取過的值會從離每位使用者最近的據點提供。

trending_up

扛得住超高讀取量

專為「讀多寫少」、同樣的 key 被頻繁讀取的情境而設計。

extension

極簡的介面

只有 put、get、list、delete——沒別的要學了。

savings

便宜好養

大方的免費額度加上極低的單次操作費,讓做快取幾乎不花錢。

target

什麼時候該用 KV?

cached

快取 API 回應

把上游較慢的回應存起來,接下來一分鐘內都能快速回應。

tune

功能開關與設定

切換功能開關,或存放幾乎每個請求都要讀的設定。

badge

工作階段與權杖

保存讀取遠多於寫入的登入工作階段或驗證權杖。

routing

轉址與對照表

短網址對照、依國家轉址等用 key 查找的對照表。

rocket_launch

怎麼開始用?

建立一個「命名空間(namespace,指一桶獨立的鍵值配對)」,把它綁到 Worker,接著就能寫入和讀取值。

  1. 建立命名空間

    Wrangler 會印出一組 id——複製起來給綁定用。

    bash
    npx wrangler kv namespace create MY_KV
  2. 綁定到 Worker

    把這段加進 wrangler.jsonc,讓這個資料庫能用 env.MY_KV 取用。

    json
    {
      "kv_namespaces": [
        {
          "binding": "MY_KV",
          "id": "<paste-your-id-here>"
        }
      ]
    }
  3. 在程式碼裡寫入與讀取

    put 存入一個值;get 把它讀回來。expirationTtl 選項會在指定秒數後自動刪掉這個 key。

    js
    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");
      },
    };
  4. 用 CLI 先塞一筆值

    你也可以直接從終端機寫入 key。

    bash
    npx wrangler kv key put --binding MY_KV "greeting" "Hello!" --remote
  5. 部署上線

    發布 Worker,全球同步上線。

    bash
    npx wrangler deploy
school

重點概念

key

鍵與值

鍵(key)是名稱(最多 512 位元組);值(value)是資料(最多 25 MiB)。

schedule

最終一致性

寫入後,其他地區可能要約 60 秒才看得到新值。它們最終會同步——所以叫「最終一致性」。

timer

過期時間 (TTL)

設定 expirationTtl,key 就會在 N 秒後自動刪除——很適合做快取。

compare_arrows

適合讀多、不適合寫多

KV 在「讀遠多於寫」時最強;同一個 key 每秒最多只能寫入約 1 次。

tips_and_updates

小提示與限制

warning

別拿來存要即時最新的資料

由於寫入要約 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 自動清掉過期資料。