更新时间: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
等待它,以保证操作完成。
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
等待它,以保证操作完成:
resolve
成 true
。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
等待它,以保证操作完成:
resolve
成 true
。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 });
}
}