グローバルで低レイテンシのキーバリューデータストレージを作成します。
Workers KV は、世界中でデータを保存・取得できるデータストレージです。Workers KV を使うと、高い読み取り量を低レイテンシで処理する、動的で高性能な API とウェブサイトを構築できます。
たとえば、Workers KV は次の用途に使えます。
- API レスポンスのキャッシュ
- ユーザー設定 / 環境設定の保存
- ユーザー認証情報の保存
Workers KV namespace には、Cloudflare Workers から Workers Bindings でアクセスするか、外部アプリケーションから REST API でアクセスします。
export default {
async fetch(request, env, ctx): Promise<Response> {
// write a key-value pair
await env.KV.put('KEY', 'VALUE');
// read a key-value pair
const value = await env.KV.get('KEY');
// list all key-value pairs
const allKeys = await env.KV.list();
// delete a key-value pair
await env.KV.delete('KEY');
// return a Workers response
return new Response(
JSON.stringify({
value: value,
allKeys: allKeys,
}),
);
},
} satisfies ExportedHandler<{ KV: KVNamespace }>;{
"$schema": "node_modules/wrangler/config-schema.json",
"name": "<ENTER_WORKER_NAME>",
"main": "src/index.ts",
"compatibility_date": "2025-02-04",
"observability": {
"enabled": true
},
"kv_namespaces": [
{
"binding": "KV",
"id": "<YOUR_BINDING_ID>"
}
]
}Workers KV binding API リファレンス の全体を参照してください。
curl https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/storage/kv/namespaces/$NAMESPACE_ID/values/$KEY_NAME \
-X PUT \
-H 'Content-Type: multipart/form-data' \
-H "X-Auth-Email: $CLOUDFLARE_EMAIL" \
-H "X-Auth-Key: $CLOUDFLARE_API_KEY" \
-d '{
"value": "Some Value"
}'
curl https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/storage/kv/namespaces/$NAMESPACE_ID/values/$KEY_NAME \
-H "X-Auth-Email: $CLOUDFLARE_EMAIL" \
-H "X-Auth-Key: $CLOUDFLARE_API_KEY"const client = new Cloudflare({
apiEmail: process.env['CLOUDFLARE_EMAIL'], // This is the default and can be omitted
apiKey: process.env['CLOUDFLARE_API_KEY'], // This is the default and can be omitted
});
const value = await client.kv.namespaces.values.update('<KV_NAMESPACE_ID>', 'KEY', {
account_id: '<ACCOUNT_ID>',
value: 'VALUE',
});
const value = await client.kv.namespaces.values.get('<KV_NAMESPACE_ID>', 'KEY', {
account_id: '<ACCOUNT_ID>',
});
const value = await client.kv.namespaces.values.delete('<KV_NAMESPACE_ID>', 'KEY', {
account_id: '<ACCOUNT_ID>',
});
// Automatically fetches more pages as needed.
for await (const namespace of client.kv.namespaces.list({ account_id: '<ACCOUNT_ID>' })) {
console.log(namespace.id);
}外部アプリケーションから REST API を使う詳細は、Workers KV の REST API と SDK リファレンス を参照してください。TypeScript、Python、Go 向けの事前生成 SDK も用意されています。
Workers KV がデータを保存・取得する仕組みを学びます。
バインディングを使うと、Worker が Cloudflare 開発者プラットフォーム上のリソース、R2、Durable Objects、D1 とやり取りできます。
コンプライアンス要件を満たすため、KV namespace を特定の法域(jurisdiction)内にのみ永続保存するよう制限できます。現在はプライベートベータです。
Cloudflare R2 Storage を使うと、一般的なクラウドストレージに伴う高額なエグレス帯域料金なしで、大量の非構造化データを保存できます。
Cloudflare Durable Objects を使うと、スケーラブルなコンピュートと、永続的で一貫したストレージにアクセスできます。
SQLite を基盤とする D1 は、Cloudflare 初のクエリ可能なリレーショナルデータベースです。データのインポート、またはテーブル定義とクエリの記述を、Worker 内または API 経由で行い、データベース全体を作成できます。