[ PROMPT_NODE_24140 ]
Kv 配置说明
[ SKILL_DOCUMENTATION ]
# KV 配置
## 创建命名空间
bash
wrangler kv namespace create MY_NAMESPACE
# 输出: { binding = "MY_NAMESPACE", id = "abc123..." }
wrangler kv namespace create MY_NAMESPACE --preview # 用于本地开发
## Workers 绑定
**wrangler.jsonc:**
c
{
"kv_namespaces": [
{
"binding": "MY_KV",
"id": "abc123xyz789"
},
// 可选:用于预览/开发的独立命名空间
{
"binding": "MY_KV",
"preview_id": "preview-abc123"
}
]
}
## TypeScript 类型
**env.d.ts:**
typescript
interface Env {
MY_KV: KVNamespace;
SESSIONS: KVNamespace;
CACHE: KVNamespace;
}
**worker.ts:**
typescript
export default {
async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise {
// env.MY_KV 现在被类型化为 KVNamespace
const value = await env.MY_KV.get("key");
return new Response(value || "Not found");
}
} satisfies ExportedHandler;
**类型安全的 JSON 操作:**
typescript
interface UserProfile {
name: string;
email: string;
role: "admin" | "user";
}
const profile = await env.USERS.get("user:123", "json");
// profile: UserProfile | null (类型安全!)
if (profile) {
console.log(profile.name); // TypeScript 知道这是一个字符串
}
## CLI 操作
bash
# 写入
wrangler kv key put --binding=MY_KV "key" "value"
wrangler kv key put --binding=MY_KV "key" --path=./file.json --ttl=3600
# 读取
wrangler kv key get --binding=MY_KV "key"
# 删除
wrangler kv key delete --binding=MY_KV "key"
# 列出
wrangler kv key list --binding=MY_KV --prefix="user:"
# 批量操作 (每个文件最多 10,000 个键)
wrangler kv bulk put data.json --binding=MY_KV
wrangler kv bulk get keys.json --binding=MY_KV
wrangler kv bulk delete keys.json --binding=MY_KV --force
## 本地开发
bash
wrangler dev # 本地 KV (隔离)
wrangler dev --remote # 远程 KV (生产环境)
# 或在 wrangler.jsonc 中配置:
# "kv_namespaces": [{ "binding": "MY_KV", "id": "...", "remote": true }]
## REST API
### 单个操作
typescript
import Cloudflare from 'cloudflare';
const client = new Cloudflare({
apiEmail: process.env.CLOUDFLARE_EMAIL,
apiKey: process.env.CLOUDFLARE_API_KEY
});
// 单个键操作
await client.kv.namespaces.values.update(namespaceId, 'key', {
account_id: accountId,
value: 'value',
expiration_ttl: 3600
});
### 批量操作
typescript
// 批量更新 (最多 10,000 个键, 最大