EdgeKV

更新时间:2024-08-14 20:00:49

Edge KV 是一个分布式键值存储服务,允许您将数据存储在靠近用户的 CDNetworks 边缘节点上,从而实现低延迟、高可用性和强一致性的数据访问。您可以使用 Edge KV 存储各种类型的数据,例如:

  • 用户会话数据
  • 应用程序配置
  • 缓存数据
  • 其他需要快速访问的数据

构造函数

创建一个 Edge KV 实例对象。

定义

new EdgeKV({ namespace: "your-namespace" });

参数说明

参数 类型 默认值 说明
namespace string 当前函数的名称 存储空间的命名,多个函数可以共用一个命名空间,可以达到共享数据的目的。
不能为空字符,否则将取默认值。

get()

读取指定 key 的 value。

定义

get(key, { type: "text" })

参数说明

参数 类型 说明
key string 不允许为空,最大长度为 512 字节
type string "text": 返回字符串 (默认)
"json": 返回一个 JSON 字符串解析后的对象
"arrayBuffer": 返回一个 ArrayBuffer,适合包含二进制数据
"stream": 返回 ReadableStream,适合读取大文件

返回值

返回一个 Promise,你应该使用 await 等待它,以保证操作完成。

  • 如果 key 不存在,会返回 null
  • 如果发生异常导致 get 失败,会 reject 一个错误异常。

示例代码

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

async function handleRequest(request) {
  try {
    const edgeKV = new EdgeKV({ namespace: "your-namespace" });
    let value = await edgeKV.get("key");
    if (value === null) {
      return new Response("EdgeKV get: key not found", { status: 404 });
    } else {
      return new Response(value);
    }
  } catch (e) {
    return new Response("EdgeKV get error" + e.toString(), { status: 500 });
  }
}

put()

创建新的键值对,或者更新现存指定 key 的 value。

定义

put(key, value, { expiration: secondsSinceEpoch })

参数说明

参数 类型 说明
key string 不允许为空,最大长度为 512 字节
value string \| ReadableStream \| ArrayBuffer 最大长度为 10M
expiration int 过期时间时间戳,默认永久,以秒为单位。(代表绝对时间)

返回值

返回一个 Promise,你应该使用 await 等待它,以保证操作完成:

  • 如果删除成功,resolvetrue
  • 如果发生异常导致 put 失败,reject 成 error 异常。

示例代码

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

async function handleRequest(request) {
  try {
    const edgeKV = new EdgeKV({ namespace: "your-namespace" });
    await edgeKV.put("key", "value");
    return new Response("EdgeKV put success");
  } catch (e) {
    return new Response("EdgeKV put error" + e.toString(), { status: 500 });
  }
}

delete()

删除 key 及其对应的 value。

定义

delete(key)

参数说明

参数 类型 说明
key string 不允许为空,最大长度为 512 字节

返回值

返回一个 Promise,你应该使用 await 等待它,以保证操作完成:

  • 如果删除成功,resolvetrue
  • 如果发生异常导致 delete 失败,reject 成 error 异常。

示例代码

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

async function handleRequest(request) {
  try {
    const edgeKV = new EdgeKV({ namespace: "your-namespace" });
    await edgeKV.delete("key");
    return new Response("EdgeKV delete success");
  } catch (e) {
    return new Response("EdgeKV delete error" + e.toString(), { status: 500 });
  }
}

list()

枚举出空间中符合条件的 Key。

定义

list({ startKey: "key1", endKey: "key2", limit: 10 })

参数说明

参数 类型 说明
startKey string 起始Key,为字符串的最小字典序,操作将包含等于该值的key。
endKey string 结束Key,为字符串的字典序至最后一个元素,操作将不包含等于该值的key。
limit int 返回Key的数量上限,为可选的返回条件,若不指定该参数,将返回所有符合条件的Key。

返回值

返回一个 Promise,你应该使用 await 等待它,以保证操作完成:

  • 如果 list 成功,resolve 成 Key 数组。
  • 如果发生异常导致 list 失败,reject 成 error 异常。

示例代码

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

async function handleRequest(request) {
  try {
    const edgeKV = new EdgeKV({ namespace: "your-namespace" });
    const keys = await edgeKV.list({ startKey: "key1", endKey: "key2", limit: 10 });
    for (let k of keys) {
      console.log(k);
    }
    return new Response("EdgeKV List success");
  } catch (e) {
    return new Response("EdgeKV List error" + e.toString(), { status: 500 });
  }
}

count()

统计空间中符合条件的 Key。

定义

count({ startKey: "key1", endKey: "key2" })

参数说明

参数 类型 说明
startKey string 起始Key,为字符串的最小字典序,操作将包含等于该值的key。
endKey string 结束Key,为字符串的字典序至最后一个元素,操作将不包含等于该值的key。

返回值

返回一个 Promise,你应该使用 await 等待它,以保证操作完成:

  • 如果 count 成功,resolve 成整数。
  • 如果发生异常导致 count 失败,reject 成 error 异常。

示例代码

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

async function handleRequest(request) {
  try {
    const edgeKV = new EdgeKV({ namespace: "your-namespace" });
    const keyNum = await edgeKV.count({ startKey: "key1", endKey: "key2" });
    return new Response(`EdgeKV Count success: ${keyNum}`);
  } catch (e) {
    return new Response("EdgeKV Count error" + e.toString(), { status: 500 });
  }
}
本篇文档内容对您是否有帮助?
有帮助
我要反馈
提交成功!非常感谢您的反馈,我们会继续努力做到更好!