Cloudflare Workers的KV功能体验 - Tinsley's blog

/ 0评 / 9

Cloudflare最近在Workers的free plan中增加了KV存储, 使免费的Workers拥有了数据持久化功能, 可以实现更多的玩法. 比如说, 可以将KV存储功能作为近似的Redis使用, 搭建一个简单的键值对存储服务器.

在使用KV功能前, 需要先在KV管理页面创建Namespace, 并在需要使用到它的Workers 配置中增加Namespace的变量绑定.

假设我们创建了名为BUCKET的Namespace并绑定到BUCKET变量. 用这段Demo代码创建一个Worker.

LIST_PASSWD = "default_password"

addEventListener("fetch", event => {  
    event.respondWith(handleRequest(event.request))
})

async function handleRequest(request) {  
    url = new URL(request.url)

    if (url.pathname === "/set") {
        for(var key of url.searchParams.keys()) {
            await BUCKET.put(key, url.searchParams.get(key))
        }
        return new Response("ok")
    }

    if (url.pathname === "/get") {
        key = url.searchParams.get("key")
        const value = await BUCKET.get(key)
        return new Response(value)
    }

    if (url.pathname === "/list") {
        const value = await BUCKET.list()
        passwd = url.searchParams.get("passwd")
        if (passwd !== LIST_PASSWD) {
            return new Response("Password not correct", {status: 400})
        }
        let key_list = []
        for(var key of value.keys) {
            key_list.push(key.name)
        }
        return new Response(key_list.join("\r\n"))
    }
}

能实现的功能有:

一个简单Demo仅作体验.

过去想实现一些自动化任务和小规模个人服务, 很多情况下都需要购买云服务器, 且需要具备一定Linux基础, 门槛不低. 现在Workers和KV的free plan已经相当够用, 简单的个人静态博客, todo-list, 反向代理, 以及定时任务都不在话下. 有空再探索一下更多玩法.

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注