panda-99.com Open in urlscan Pro
2606:4700:3037::6815:3b5  Public Scan

URL: https://panda-99.com/posts/workerkvdemo/
Submission Tags: @ecarlesi possiblethreat phishing Search All
Submission: On December 27 via api from IT — Scanned from IT

Form analysis 0 forms found in the DOM

Text Content

本站使用 Cookies 来改善您的浏览体验。 了解更多
同意
潘达久久panda99
 * 文章
   * 分类
   * 合集
   * 标签
 * 关于我
 * 留言
 * 

 * 

 * 
 * * 没有更多翻译

潘达久久panda99

 * 
   取消
 * 文章
   * 分类
   * 合集
   * 标签
 * 关于我
 * 留言
 * 简体中文 没有更多翻译





CLOUDFLARE WORKERS 读取和更新 KV 存储中的数据

Cloudflare Workers 结合 KV 存储实现数据读取和更新

潘达久久panda99 收录于 建站相关
2024-12-25 2024-12-27 约 400 字 预计阅读 2 分钟 4 次阅读  
目录


本文完整展示如何在 Workers 中读取和更新 KV 数据。


前言

Cloudflare Workers 是一种强大的边缘计算工具,可以快速实现无服务器应用的构建。结合 Cloudflare KV 存储(Key-Value
Store),你可以高效地处理分布式数据存储和读取。

--------------------------------------------------------------------------------


案例 : 用 KV 存储用户访问量并计数


场景简介

假设我们需要记录每个用户的访问量,每次访问时:

 1. 从 KV 中读取用户的访问量。
 2. 如果用户不存在,初始化计数为 1。
 3. 如果用户已存在,计数加 1。
 4. 将新的计数保存到 KV,并返回前端。


实现步骤

1. 确保 KV 命名空间存在

创建一个新的 KV 命名空间,例如 USER_VISITS。

在 wrangler.toml 中添加绑定配置:

1
2
3


kv_namespaces = [
  { binding = "USER_VISITS", id = "你的KV命名空间ID" }
]

2. 编写 WORKER 代码

以下代码展示如何在每次访问时更新并返回用户访问量:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40


export default {
  async fetch(request, env) {
    // 获取用户ID (从查询参数中读取)
    const url = new URL(request.url);
    const userId = url.searchParams.get("user_id");

    if (!userId) {
      return new Response(
        JSON.stringify({ error: "Missing user_id parameter" }),
        { status: 400, headers: { "Content-Type": "application/json" } }
      );
    }

    try {
      // 从 KV 存储中读取用户访问量
      let visits = await env.USER_VISITS.get(userId);

      // 如果不存在,初始化访问量为 1
      if (!visits) {
        visits = 1;
      } else {
        visits = parseInt(visits, 10) + 1; // 转为整数并加 1
      }

      // 更新 KV 中的用户访问量
      await env.USER_VISITS.put(userId, visits.toString());

      // 返回新的访问量
      return new Response(
        JSON.stringify({ user_id: userId, visits }),
        { status: 200, headers: { "Content-Type": "application/json" } }
      );
    } catch (error) {
      return new Response(
        JSON.stringify({ error: "Failed to update visits", details: error.message }),
        { status: 500, headers: { "Content-Type": "application/json" } }
      );
    }
  }
};

3. 上传和部署

发布你的 Worker:

1


npx wrangler deploy

4. 测试 WORKER

通过浏览器或命令行工具测试访问:

 1. 第一次访问:

1


curl "https://你的子域.workers.dev/?user_id=user_123"

返回:

1
2
3
4


{
  "user_id": "user_123",
  "visits": 1
}

 2. 第二次访问:

1


curl "https://你的子域.workers.dev/?user_id=user_123"

返回:

1
2
3
4


{
  "user_id": "user_123",
  "visits": 2
}

KV 手动添加数据

如果需要预填数据,可以通过 wrangler CLI 添加,例如:

1


npx wrangler kv:key put --binding=USER_VISITS user_123 "5"

这会将 user_123 的访问量初始化为 5。

--------------------------------------------------------------------------------


总结

使用 Cloudflare Workers 和 KV 存储,你可以轻松实现高效的分布式数据读取和写入。本案例展示了如何记录访问量以及动态更新 KV
数据,为构建轻量级分析系统或个性化功能提供了实用参考。

更新于 2024-12-27 
CC BY-NC-SA 4.0

Cloudflare
返回 | 主页
狮城漫步

Please enable JavaScript to view the comments powered by giscus.


目录 

 * 前言
 * 案例 : 用 KV 存储用户访问量并计数
   * 场景简介
   * 实现步骤
     * 1. 确保 KV 命名空间存在
     * 2. 编写 Worker 代码
     * 3. 上传和部署
     * 4. 测试 Worker
     * KV 手动添加数据
   * 总结

2023 - 2024 潘达久久panda99CC BY-NC-SA 4.0
85221
0%


该网站在启用 JavaScript 的情况下效果最佳。