Начало работы
Workers KV обеспечивает глобальное хранилище с низкой задержкой и высокой пропускной способностью для ваших Cloudflare Workers приложений. Workers KV отлично подходит для хранения конфигурации пользователей, данных маршрутизации, настроек A/B-тестирования и токенов аутентификации, а также хорошо справляется с нагрузками с преобладанием чтения.
В этом руководстве вы узнаете, как:
- Создание пространства имён KV.
- Запись пар «ключ-значение» в пространство имён KV из Cloudflare Worker.
- Чтение пар «ключ-значение» из пространства имён KV.
Эти задачи можно выполнить через Wrangler CLI или через панель управления Cloudflare.
быстрый старт
Если вы хотите пропустить шаги настройки и быстро приступить к работе, нажмите кнопку ниже.
Это создаёт репозиторий в вашем аккаунте GitHub и разворачивает приложение в Cloudflare Workers. Выберите этот вариант, если вы уже знакомы с Cloudflare Workers и хотите пропустить пошаговые инструкции.
Если вы только начинаете работать с Cloudflare Workers, можете пройти все шаги вручную.
Предварительные требования
- Зарегистрируйтесь для получения Аккаунт Cloudflare ↗.
- Установка
Node.js↗.
менеджер версий Node.js
Используйте менеджер версий Node, например Volta ↗ или nvm ↗ чтобы избежать проблем с правами доступа и переключать версии Node.js. Wrangler, о котором пойдёт речь далее в этом руководстве, требует версию Node 16.17.0 или более поздней версии.
1. Создайте проект Worker
Создайте новый Worker для чтения и записи в пространство имён KV.
-
Создайте новый проект с именем
kv-tutorialвыполнив:npm create cloudflare@latest -- kv-tutorialДля настройки выберите следующие параметры:
- Для С чего вы хотите начать?, выберите
Hello World example. - Для Какой шаблон вы хотите использовать?, выберите
Worker only. - Для Какой язык вы хотите использовать?, выберите
TypeScript. - Для Хотите использовать git для контроля версий?, выберите
Yes. - Для Хотите развернуть приложение?, выберите
No(мы внесём некоторые изменения перед развёртыванием).
Это создаёт новый
kv-tutorialкаталоге, как показано ниже.- kv-tutorial/
- node_modules/
- test/
- src
- index.ts
- package-lock.json
- package.json
- testconfig.json
- vitest.config.mts
- worker-configuration.d.ts
- wrangler.jsonc
Ваш новый
kv-tutorialкаталог включает:- A
"Hello World"Worker вindex.ts. - A
wrangler.jsoncфайл конфигурации.wrangler.jsoncпоказывает, как выглядит вашkv-tutorialWorker обращается к вашей базе данных kv.
- Для С чего вы хотите начать?, выберите
-
Перейдите в каталог, который вы только что создали для своего проекта Worker:
cd kv-tutorial
-
На панели управления Cloudflare перейдите к разделу Workers & Pages страницу.
Перейдите в Workers & Pages ↗ -
Выберите Создать приложение.
-
Выберите Начните с Hello World! > Начало работы.
-
Присвойте имя своему Worker. Для этого руководства назовите Worker
kv-tutorial. -
Выберите Развернуть.
2. Создание пространства имён KV
A Пространство имён KV это база данных ключ-значение, реплицированная в глобальную сеть Cloudflare.
Вы можете использовать Wrangler для создания нового пространства имён KV. С его помощью также можно выполнять такие операции, как put, list, get и delete в вашем пространстве имён KV.
Чтобы создать пространство имён KV с помощью Wrangler:
-
Откройте терминал и выполните следующую команду:
npx wrangler kv namespace create <BINDING_NAME>npx wrangler kv namespace create <BINDING_NAME>подкоманда принимает в качестве аргумента новое имя привязки. Пространство имен KV создаётся путём объединения имени вашего Worker (из файла Wrangler) и указанного вами имени привязки.<BINDING_ID>генерируется для вас случайным образом.Для этого руководства используйте имя привязки
USERS_NOTIFICATION_CONFIG.npx wrangler kv namespace create USERS_NOTIFICATION_CONFIG🌀 Creating namespace with title "USERS_NOTIFICATION_CONFIG" ✨ Success! Add the following to your configuration file in your kv_namespaces array: { "kv_namespaces": [ { "binding": "USERS_NOTIFICATION_CONFIG", "id": "<BINDING_ID>" } ] }
-
На панели управления Cloudflare перейдите к разделу Workers KV страницу.
Перейдите в Workers KV ↗ -
Выберите Создать инстанс.
-
Введите имя пространства имён. Для этого руководства используйте
kv_tutorial_namespace. -
Выберите Создание.
3. Привязка Worker к пространству имён KV
Чтобы связать Worker с пространством имён KV, необходимо создать привязку. Bindings позволяют вашим Workers обращаться к ресурсам, например KV, на платформе Cloudflare Developer Platform.
Чтобы привязать пространство имён KV к вашему Worker:
-
В файле Wrangler добавьте следующее со значениями, сгенерированными в терминале при выполнении шаг 2:
{ "kv_namespaces": [ { "binding": "USERS_NOTIFICATION_CONFIG", "id": "<BINDING_ID>" } ] }[[kv_namespaces]] binding = "USERS_NOTIFICATION_CONFIG" id = "<BINDING_ID>"Имена привязок не обязаны совпадать с именем созданного вами пространства имён. Имя привязки служит лишь ссылкой. А именно:
- Значение (строка), которое вы задали для
bindingиспользуется для обращения к этому пространству имен KV в вашем Worker. Для этого руководства оно должно бытьUSERS_NOTIFICATION_CONFIG. - Привязка должна быть допустимое имя переменной JavaScript ↗. Например,
binding = "MY_KV"илиbinding = "routingConfig"оба варианта были бы допустимыми именами для привязки. - Привязка доступна в Worker по адресу
env.<BINDING_NAME>внутри вашего Worker. В этом руководстве привязка доступна по адресуenv.USERS_NOTIFICATION_CONFIG.
- Значение (строка), которое вы задали для
-
На панели управления Cloudflare перейдите к разделу Workers & Pages страницу.
Перейдите в Workers & Pages ↗ -
Выберите
kv-tutorialWorker, который вы создали в шаг 1. -
Перейдите в Bindings вкладке, а затем выберите Add binding.
-
Выберите Пространство имён KV > Add binding.
-
Задайте имя привязки (
BINDING_NAME) в Имя переменной, затем выберите пространство имён KV (kv_tutorial_namespace) которое вы создали в шаг 2 в раскрывающемся списке. -
Выберите Add binding чтобы развернуть привязку.
4. Работа с пространством имён KV
Вы можете взаимодействовать со своим пространством имён KV через Wrangler или напрямую из вашего Workers приложение.
4.1. Запись значения
Чтобы записать значение в пустое пространство имён KV с помощью Wrangler:
-
Выполните
wrangler kv key putподкоманду в терминале и введите ваш ключ и значение соответственно.<KEY>и<VALUE>это значения на ваш выбор.npx wrangler kv key put --binding=<BINDING_NAME> "<KEY>" "<VALUE>"В этом руководстве вы добавите ключ
user_1со значениемenabledк пространству имён KV, созданному в шаг 2.npx wrangler kv key put --binding=USERS_NOTIFICATION_CONFIG "user_1" "enabled"Writing the value "enabled" to key "user_1" on namespace <BINDING_ID>.
-
На панели управления Cloudflare перейдите к разделу Workers KV страницу.
Перейдите в Workers KV ↗ -
Выберите пространство имен KV, которое вы создали (
kv_tutorial_namespace). -
Перейдите в KV Pairs на вкладке.
-
Введите
<KEY>по вашему выбору. -
Введите
<VALUE>по вашему выбору. -
Выберите Добавить запись.
4.2. Получение значения
Чтобы получить значение из пространства имён KV с помощью Wrangler:
-
Выполните
wrangler kv key getподкоманду в терминале и введите значение ключа:npx wrangler kv key get --binding=<BINDING_NAME> "<KEY>"В этом руководстве вы получите значение ключа
user_1из пространства имён KV, которое вы создали в шаг 2.npx wrangler kv key get --binding=USERS_NOTIFICATION_CONFIG "user_1" --textАналогично
putкоманды,getкоманду также можно использовать для доступа к пространству имён KV двумя способами: с помощью--bindingили--namespace-id:
См. kv bulk документация чтобы записать файл с несколькими парами ключ-значение в указанное пространство имён KV.
Вы можете просматривать пары «ключ-значение» прямо из панели управления.
-
На панели управления Cloudflare перейдите к разделу Workers KV страницу.
Перейдите в Workers KV ↗ -
Перейдите в пространство имён KV, которое вы создали (
kv_tutorial_namespace). -
Перейдите в KV Pairs на вкладке.
5. Доступ к пространству имён KV из Worker
-
В скрипте Worker добавьте свою привязку KV в
Envинтерфейс. Если ваш проект создан на JavaScript, этот шаг не требуется.interface Env { USERS_NOTIFICATION_CONFIG: KVNamespace; // ... other binding types } -
Используйте
put()метод дляUSERS_NOTIFICATION_CONFIGдля создания новой пары ключ-значение. Вы добавите новый ключuser_2со значениемdisabledв ваше пространство имён KV.let value = await env.USERS_NOTIFICATION_CONFIG.put("user_2", "disabled"); -
Используйте KV
get()метод для получения данных, сохранённых в вашем пространстве имен KV. Вы получите значение ключаuser_2из вашего пространства имён KV.let value = await env.USERS_NOTIFICATION_CONFIG.get("user_2");
Код Worker должен выглядеть следующим образом:
export default {
async fetch(request, env, ctx) {
try {
await env.USERS_NOTIFICATION_CONFIG.put("user_2", "disabled");
const value = await env.USERS_NOTIFICATION_CONFIG.get("user_2");
if (value === null) {
return new Response("Value not found", { status: 404 });
}
return new Response(value);
} catch (err) {
console.error(`KV returned error:`, err);
const errorMessage =
err instanceof Error
? err.message
: "An unknown error occurred when accessing KV storage";
return new Response(errorMessage, {
status: 500,
headers: { "Content-Type": "text/plain" },
});
}
},
};export interface Env {
USERS_NOTIFICATION_CONFIG: KVNamespace;
}
export default {
async fetch(request, env, ctx): Promise<Response> {
try {
await env.USERS_NOTIFICATION_CONFIG.put("user_2", "disabled");
const value = await env.USERS_NOTIFICATION_CONFIG.get("user_2");
if (value === null) {
return new Response("Value not found", { status: 404 });
}
return new Response(value);
} catch (err) {
console.error(`KV returned error:`, err);
const errorMessage =
err instanceof Error
? err.message
: "An unknown error occurred when accessing KV storage";
return new Response(errorMessage, {
status: 500,
headers: { "Content-Type": "text/plain" },
});
}
},
} satisfies ExportedHandler<Env>;Код выше:
- Записывает ключ в ваше пространство имён KV с помощью
put()метод. - Считывает тот же ключ, используя KV
get()метод. - Проверяет, равен ли ключ null, и возвращает
404ответ, если это так. - Если ключ не равен null, возвращается значение этого ключа.
- Использует JavaScript
try...catch↗ обработку исключений для перехвата возможных ошибок. При записи в любой сервис или чтении из него, например Workers KV или внешние API, с использованиемfetch(), следует явно обрабатывать исключения.
-
На панели управления Cloudflare перейдите к разделу Workers & Pages страницу.
Перейдите в Workers & Pages ↗ -
Перейдите в
kv-tutorialWorker, который вы создали. -
Выберите Edit Code.
-
Очистите всё содержимое
workers.jsфайл и вставьте в него следующий код.export default { async fetch(request, env, ctx) { try { await env.USERS_NOTIFICATION_CONFIG.put("user_2", "disabled"); const value = await env.USERS_NOTIFICATION_CONFIG.get("user_2"); if (value === null) { return new Response("Value not found", { status: 404 }); } return new Response(value); } catch (err) { console.error(`KV returned error:`, err); const errorMessage = err instanceof Error ? err.message : "An unknown error occurred when accessing KV storage"; return new Response(errorMessage, { status: 500, headers: { "Content-Type": "text/plain" }, }); } }, };export interface Env { USERS_NOTIFICATION_CONFIG: KVNamespace; } export default { async fetch(request, env, ctx): Promise<Response> { try { await env.USERS_NOTIFICATION_CONFIG.put("user_2", "disabled"); const value = await env.USERS_NOTIFICATION_CONFIG.get("user_2"); if (value === null) { return new Response("Value not found", { status: 404 }); } return new Response(value); } catch (err) { console.error(`KV returned error:`, err); const errorMessage = err instanceof Error ? err.message : "An unknown error occurred when accessing KV storage"; return new Response(errorMessage, { status: 500, headers: { "Content-Type": "text/plain" }, }); } }, } satisfies ExportedHandler<Env>;Код выше:
- Записывает ключ в
BINDING_NAMEс помощью KVput()метод. - Считывает тот же ключ, используя KV
get()метод и возвращает ошибку, если ключ равен null (или если ключ не задан либо не существует). - Использует JavaScript
try...catch↗ обработку исключений для перехвата возможных ошибок. При записи в любой сервис или чтении из него, например Workers KV или внешние API, с использованиемfetch(), следует явно обрабатывать исключения.
Браузер должен просто вернуть
VALUEсоответствующийKEYуказанных с помощьюget()метод. - Записывает ключ в
-
Нажмите на стрелку раскрывающегося списка рядом с Развернуть и выберите Save.
6. Разверните Worker
Разверните Worker в глобальной сети Cloudflare.
-
Выполните следующую команду, чтобы развернуть KV в глобальной сети Cloudflare:
npm run deploy -
Перейдите по URL-адресу вашего нового приложения Workers KV.
Например, если URL вашего нового Worker равен
kv-tutorial.<YOUR_SUBDOMAIN>.workers.dev, обращаясь кhttps://kv-tutorial.<YOUR_SUBDOMAIN>.workers.dev/отправляет запрос вашему Worker, который записывает данные в Workers KV (и считывает их оттуда).
-
На панели управления Cloudflare перейдите к разделу Workers & Pages страницу.
Перейдите в Workers & Pages ↗ -
Выберите свой
kv-tutorialWorker. -
Выберите Развёртывания.
-
Из раздела История версий таблицу, выберите Deploy version.
-
Из раздела Deploy version странице выберите Развернуть.
Это разворачивает последнюю версию кода Worker в продакшене.
Сводка
После завершения этого руководства вы:
- Создали пространство имён KV
- Создали Worker, который записывает данные в это пространство имён и читает из него
- Развернули проект по всему миру.
Следующие шаги
Если у вас есть пожелания по функциям или вы заметили ошибку, поделитесь отзывом напрямую с командой Cloudflare, присоединившись к Сообщество разработчиков Cloudflare в Discord ↗.
- Подробнее о KV API.
- Узнайте, как использовать Окружения с помощью Workers KV.
- Ознакомьтесь с Wrangler
kvдокументацию по команде.