Cloud
Инструменты для управления состоянием, планирования задач и взаимодействия с хранилищами «ключ—значение».
Например: Deno.openKv, Deno.cron
класс Deno.AtomicOperation
Операция над Deno.Kv, которую можно выполнить атомарно. Атомарные операции не фиксируются автоматически; для их фиксации необходимо явно вызвать метод commit.
Атомарные операции позволяют выполнять несколько изменений в хранилище KV в рамках одной атомарной транзакции. Они также позволяют выполнять условные изменения, задавая одну или несколько проверок Deno.AtomicCheck, которые гарантируют, что изменение будет выполнено только в том случае, если пара «ключ—значение» в KV имеет определённую метку версии. Если какая-либо проверка не пройдёт, вся операция завершится неудачей и изменения не будут внесены.
Порядок изменений гарантированно совпадает с порядком, в котором они указаны в операции. Проверки выполняются до любых изменений. Порядок проверок не наблюдаем.
Атомарные операции можно использовать для реализации оптимистической блокировки, при которой изменение выполняется только в том случае, если пара «ключ—значение» в хранилище KV не менялась с момента последнего чтения. Для этого задаётся проверка, гарантирующая, что метка версии пары «ключ—значение» совпадает с прочитанной меткой версии. Если проверка не пройдёт, изменение не будет выполнено и операция завершится неудачей. В этом случае можно повторять операцию чтения-изменения-записи в цикле, пока она не завершится успешно.
Метод commit атомарной операции возвращает значение, указывающее, прошли ли проверки и были ли выполнены изменения. Если операция завершилась неудачей из-за проваленной проверки, возвращаемым значением будет Deno.KvCommitError со свойством ok: false. Если операция завершилась неудачей по любой другой причине (ошибка хранилища, недопустимое значение и т. д.), будет выброшено исключение. Если операция выполнена успешно, возвращаемым значением будет объект Deno.KvCommitResult со свойством ok: true и меткой версии значения, зафиксированного в KV.
Методы
check(...checks: AtomicCheck[]): this Добавляет в операцию проверку, гарантирующую, что метка версии пары «ключ—значение» в хранилище KV совпадает с заданной меткой версии. Если проверка не пройдёт, вся операция завершится неудачей и при фиксации изменения не будут выполнены.
commit(): Promise<KvCommitResult | KvCommitError> Фиксирует операцию в хранилище KV. Возвращает значение, указывающее, прошли ли проверки и были ли выполнены изменения. Если операция завершилась неудачей из-за проваленной проверки, возвращаемым значением будет Deno.KvCommitError со свойством ok: false. Если операция завершилась неудачей по любой другой причине (ошибка хранилища, недопустимое значение и т. д.), будет выброшено исключение. Если операция выполнена успешно, возвращаемым значением будет объект Deno.KvCommitResult со свойством ok: true и меткой версии значения, зафиксированного в KV.
Если фиксация возвращает ok: false, можно создать новую атомарную операцию с обновлёнными проверками и изменениями и повторить попытку фиксации. См. примечание об оптимистической блокировке в документации для Deno.AtomicOperation.
Добавляет в операцию изменение, удаляющее указанный ключ, если при фиксации пройдут все проверки.
enqueue(
value: unknown,
options?: { delay?: number; keysIfUndelivered?: KvKey[]; backoffSchedule?: number[]; },
): this Добавляет в операцию изменение, помещающее значение в очередь, если при фиксации пройдут все проверки.
Сокращённый способ создания изменения max. Этот метод оборачивает n в Deno.KvU64, поэтому значение n должно находиться в диапазоне [0, 2^64-1].
Сокращённый способ создания изменения min. Этот метод оборачивает n в Deno.KvU64, поэтому значение n должно находиться в диапазоне [0, 2^64-1].
mutate(...mutations: KvMutation[]): this Добавляет в операцию изменение, выполняющее указанное изменение для указанного ключа, если при фиксации пройдут все проверки. Типы и семантика всех доступных изменений описаны в документации для Deno.KvMutation.
Добавляет в операцию изменение, устанавливающее для указанного ключа заданное значение, если при фиксации пройдут все проверки.
При необходимости можно указать параметр expireIn, чтобы задать время жизни (TTL) ключа. TTL задаётся в миллисекундах; ключ будет удалён из базы данных не ранее чем по истечении указанного количества миллисекунд. По истечении указанного времени ключ может оставаться видимым ещё некоторое время. Если параметр expireIn не указан, срок действия ключа не истечёт.
Сокращённый способ создания изменения sum. Этот метод оборачивает n в Deno.KvU64, поэтому значение n должно находиться в диапазоне [0, 2^64-1].
класс Deno.Kv
База данных «ключ—значение» для хранения и получения данных.
Данные хранятся в виде пар «ключ—значение», где ключ — это Deno.KvKey, а значение — произвольное структурно-сериализуемое значение JavaScript. Порядок ключей лексикографический, как описано в документации для Deno.KvKey. В пределах базы данных ключи уникальны; при чтении ключа возвращается последнее заданное для него значение. Ключи можно удалять из базы данных, после чего они больше не будут возвращаться при чтении.
Значениями могут быть любые структурно-сериализуемые значения JavaScript (объекты, массивы, строки, числа и т. д.). Специальное значение Deno.KvU64 позволяет хранить в базе данных 64-разрядные беззнаковые целые числа. Это специальное значение нельзя вкладывать в другие объекты или массивы. Помимо обычных операций изменения базы данных, для беззнаковых 64-разрядных целых чисел также поддерживаются изменения sum, max и min.
При записи ключам присваиваются возрастающие метки версии. Метка версии обозначает версию пары «ключ—значение» в базе данных в определённый момент времени и позволяет выполнять транзакционные операции с базой данных без блокировок. Это обеспечивается атомарными операциями, для которых можно задать условия, гарантирующие успешное выполнение операции только при совпадении метки версии пары «ключ—значение» с ожидаемой меткой версии.
Максимальная длина ключей после сериализации составляет 2048 байт. Максимальная длина значений после сериализации составляет 64 КиБ. Сериализация ключей и значений устроена не вполне прозрачно, но обычно можно считать, что сериализованное значение имеет примерно ту же длину, что и строка, полученная при сериализации этого значения в JSON. Если эти ограничения будут превышены, будет выброшено исключение.
Методы
[Symbol.dispose](): void Создаёт новый объект Deno.AtomicOperation, который можно использовать для выполнения атомарной транзакции с базой данных. При этом никаких операций с базой данных не выполняется — атомарную транзакцию необходимо явно зафиксировать методом Deno.AtomicOperation.commit после добавления в операцию всех проверок и изменений.
close(): void Закрывает подключение к базе данных. Это запрещает дальнейшие операции с базой данных и немедленно прерывает все выполняющиеся операции.
commitVersionstamp(): symbol Возвращает символ, обозначающий метку версии текущей атомарной операции. Этот символ можно использовать в качестве последней части ключа в .set() — как непосредственно в объекте Kv, так и в объекте AtomicOperation, созданном на основе этого экземпляра Kv.
Удаляет из базы данных значение для заданного ключа. Если для ключа нет значения, операция ничего не делает.
const db = await Deno.openKv();
await db.delete(["foo"]);
enqueue(
value: unknown,
options?: { delay?: number; keysIfUndelivered?: KvKey[]; backoffSchedule?: number[]; },
): Promise<KvCommitResult> Добавляет значение в очередь базы данных для доставки обработчику очереди через Deno.Kv.listenQueue.
const db = await Deno.openKv();
await db.enqueue("bar");
Параметр delay позволяет указать задержку (в миллисекундах) перед доставкой значения. Задержка по умолчанию равна 0, то есть доставка выполняется немедленно.
const db = await Deno.openKv();
await db.enqueue("bar", { delay: 60000 });
Параметр keysIfUndelivered позволяет указать ключи, значения для которых будут установлены, если после нескольких попыток значение не удастся доставить обработчику очереди. Для этих ключей устанавливаются значения сообщения из очереди.
Параметр backoffSchedule позволяет задать политику повторных попыток при неудачной доставке сообщения. Каждый элемент массива задаёт время ожидания в миллисекундах перед повторной попыткой доставки. Например, [1000, 5000, 10000] означает, что неудачная доставка будет повторена не более трёх раз с задержками в 1, 5 и 10 секунд между попытками.
const db = await Deno.openKv();
await db.enqueue("bar", {
keysIfUndelivered: [["foo", "bar"]],
backoffSchedule: [1000, 5000, 10000],
});
get<T = unknown>(
key: KvKey,
options?: { consistency?: KvConsistencyLevel; },
): Promise<KvEntryMaybe<T>> Получает из базы данных значение и метку версии для заданного ключа в виде Deno.KvEntryMaybe. Если для ключа нет значения, возвращаемая запись будет содержать значение и метку версии null.
const db = await Deno.openKv();
const result = await db.get(["foo"]);
result.key; // ["foo"]
result.value; // "bar"
result.versionstamp; // "00000000000000010000"
Параметр consistency позволяет указать уровень согласованности для операции чтения. По умолчанию используется строгий уровень согласованности. В некоторых случаях можно использовать менее строгий уровень. Подробнее об уровнях согласованности см. в документации для Deno.KvConsistencyLevel.
getMany<T extends readonly unknown[]>(
keys: readonly [...[K in keyof T]: KvKey],
options?: { consistency?: KvConsistencyLevel; },
): Promise<[K in keyof T]: KvEntryMaybe<T[K]>> Получает из базы данных несколько значений и меток версий в виде массива объектов Deno.KvEntryMaybe. Длина возвращаемого массива совпадает с длиной массива keys, а записи расположены в том же порядке, что и ключи. Если для какого-либо ключа нет значения, возвращаемая запись будет содержать значение и метку версии null.
const db = await Deno.openKv();
const result = await db.getMany([["foo"], ["baz"]]);
result[0].key; // ["foo"]
result[0].value; // "bar"
result[0].versionstamp; // "00000000000000010000"
result[1].key; // ["baz"]
result[1].value; // null
result[1].versionstamp; // null
Параметр consistency позволяет указать уровень согласованности для операции чтения. По умолчанию используется строгий уровень согласованности. В некоторых случаях можно использовать менее строгий уровень. Подробнее об уровнях согласованности см. в документации для Deno.KvConsistencyLevel.
list<T = unknown>(
selector: KvListSelector,
options?: KvListOptions,
): KvListIterator<T> Получает список ключей в базе данных. Возвращаемый список представляет собой Deno.KvListIterator, который можно использовать для перебора записей в базе данных.
Для каждой операции получения списка необходимо указать селектор, задающий диапазон возвращаемых ключей. Селектор может задавать префикс или диапазон:
- Селектор префикса выбирает все ключи, начинающиеся с заданного префикса, состоящего из частей ключа. Например, селектор
["users"]выберет все ключи, начинающиеся с префикса["users"], например["users", "alice"]и["users", "bob"]. Обратите внимание: частичное совпадение части ключа невозможно, поэтому селектор["users", "a"]не выберет ключ["users", "alice"]. Селектор префикса может задавать ключstart, позволяющий пропускать ключи, лексикографически меньшие начального ключа. - Селектор диапазона выбирает все ключи, лексикографически расположенные между заданными начальным и конечным ключами (начальный включается, конечный не включается). Например, селектор
["users", "a"], ["users", "n"]выберет все ключи, начинающиеся с префикса["users"], у которых вторая часть ключа лексикографически расположена междуaиn, например["users", "alice"],["users", "bob"]и["users", "mike"], но не["users", "noa"]или["users", "zoe"].
const db = await Deno.openKv();
const entries = db.list({ prefix: ["users"] });
for await (const entry of entries) {
entry.key; // ["users", "alice"]
entry.value; // { name: "Alice" }
entry.versionstamp; // "00000000000000010000"
}
Аргумент options позволяет задать дополнительные параметры операции получения списка. Подробнее см. документацию для Deno.KvListOptions.
listenQueue(handler: (value: any) => Promise<void> | void): Promise<void> Ожидает доставки значений из очереди базы данных, помещённых в неё с помощью Deno.Kv.enqueue. Указанный callback-обработчик вызывается для каждого извлечённого из очереди значения. Если вызов callback завершается неудачей, он автоматически повторяется несколько раз — до успешного выполнения или достижения максимального количества повторных попыток.
const db = await Deno.openKv();
db.listenQueue(async (msg: unknown) => {
await db.set(["foo"], msg);
});
set(): Promise<KvCommitResult> Задаёт значение для указанного ключа в базе данных. Если для ключа уже существует значение, оно будет перезаписано.
const db = await Deno.openKv();
await db.set(["foo"], "bar");
При необходимости можно указать параметр expireIn, чтобы задать время жизни (TTL) ключа. TTL задаётся в миллисекундах; ключ будет удалён из базы данных не ранее чем по истечении указанного количества миллисекунд. По истечении указанного времени ключ может оставаться видимым ещё некоторое время. Если параметр expireIn не указан, срок действия ключа не истечёт.
watch<T extends readonly unknown[]>(
keys: readonly [...[K in keyof T]: KvKey],
options?: { raw?: boolean; },
): ReadableStream<[K in keyof T]: KvEntryMaybe<T[K]>> Отслеживает изменения заданных ключей в базе данных. Возвращаемый поток — это ReadableStream, выдающий новое значение каждый раз, когда меняется метка версии любого из отслеживаемых ключей. Выдаваемое значение представляет собой массив объектов Deno.KvEntryMaybe той же длины и в том же порядке, что и массив keys. Если для какого-либо ключа нет значения, возвращаемая запись будет содержать значение и метку версии null.
Возвращаемый поток не передаёт каждое промежуточное состояние отслеживаемых ключей, а только поддерживает актуальность их последнего состояния. Это означает, что при быстром многократном изменении ключа вы можете не получить уведомление о каждом изменении, а получить только последнее состояние ключа.
const db = await Deno.openKv();
const stream = db.watch([["foo"], ["bar"]]);
for await (const entries of stream) {
entries[0].key; // ["foo"]
entries[0].value; // "bar"
entries[0].versionstamp; // "00000000000000010000"
entries[1].key; // ["bar"]
entries[1].value; // null
entries[1].versionstamp; // null
}
Аргумент options позволяет задать дополнительные параметры операции отслеживания. Параметр raw позволяет указать, нужно ли выдавать новое значение при каждом изменении любого из отслеживаемых ключей (даже если значение ключа не меняется, например при удалении уже удалённого ключа) или только при наблюдаемом изменении записей. При использовании raw: true поток может иногда выдавать значения, даже если отслеживаемые ключи не изменялись. Значение этого параметра по умолчанию — false.
класс Deno.KvListIterator
Итератор по диапазону записей данных в Deno.Kv.
Геттер cursor возвращает курсор, который позволяет в будущем продолжить перебор с текущей позиции.
Параметры типа
T Свойства
cursor: string Возвращает курсор текущей позиции при переборе. В будущем с его помощью можно продолжить перебор с текущей позиции, передав курсор в параметр cursor метода list.
Методы
класс Deno.KvU64
Тип-обёртка для 64-разрядных беззнаковых целых чисел, используемых в качестве значений в Deno.Kv.
Конструкторы
KvU64(value: bigint) Создаёт новый экземпляр KvU64 из заданного значения bigint. Если значение знаковое или превышает 64 бита, будет выброшена ошибка.
Свойства
value: bigint Значение этого 64-разрядного беззнакового целого числа, представленное как bigint.
функция Deno.cron
Перегрузка 1
cron(): Promise<void>Создаёт задачу cron, которая будет периодически выполнять предоставленный callback-обработчик согласно указанному расписанию.
Это нестабильный API; для его использования при запуске Deno необходимо передать флаг --unstable-cron.
Deno.cron("sample cron", "20 * * * *", () => {
console.log("cron job executed");
});
Deno.cron("sample cron", { hour: { every: 6 } }, () => {
console.log("cron job executed");
});
schedule может быть строкой в формате Unix cron или в формате JSON, заданном интерфейсом CronSchedule, где время указывается в часовом поясе UTC.
Вызов Deno.cron регистрирует задачу и немедленно возвращает управление. Не следует ожидать завершения возвращённого промиса, чтобы дождаться запуска задачи: он предназначен только для обработки ошибок регистрации. Задача продолжает выполняться в фоновом режиме, пока работает процесс. Чтобы остановить задачу cron (например, при корректном завершении работы), используйте перегрузку, которая принимает объект options с AbortSignal.
Параметры
Тип возвращаемого значения
Promise<void> Перегрузка 2
cron(
name: string,
schedule: string | CronSchedule,
options: { backoffSchedule?: number[]; signal?: AbortSignal; },
handler: () => Promise<void> | void,
): Promise<void>Создаёт задачу cron, которая будет периодически выполнять предоставленный callback-обработчик согласно указанному расписанию.
Deno.cron("sample cron", "20 * * * *", {
backoffSchedule: [10, 20]
}, () => {
console.log("cron job executed");
});
schedule может быть строкой в формате Unix cron или в формате JSON, заданном интерфейсом CronSchedule, где время указывается в часовом поясе UTC.
Параметр backoffSchedule позволяет задать политику повторных попыток для неудачных запусков. Каждый элемент массива задаёт количество миллисекунд ожидания перед повторным запуском. Например, [1000, 5000, 10000] означает, что неудачный запуск будет повторён не более 3 раз с задержкой в 1 секунду, 5 секунд и 10 секунд между попытками. Допускается не более 5 повторных попыток, а максимальный интервал составляет 1 час (3600000 миллисекунд).
Параметр signal позволяет остановить задачу cron: для этого передайте объект AbortSignal и прервите его. Это полезно при реализации корректного завершения работы, поскольку прерывание сигнала снимает задачу с регистрации:
const ac = new AbortController();
Deno.cron("sample cron", "20 * * * *", { signal: ac.signal }, () => {
console.log("cron job executed");
});
// Later, stop the cron job from running again.
ac.abort();
Параметры
name: string schedule: string | CronSchedule options: { backoffSchedule?: number[]; signal?: AbortSignal; } handler: () => Promise<void> | void Тип возвращаемого значения
Promise<void> функция Deno.openKv
openKv(path?: string): Promise<Kv>Открывает новое подключение Deno.Kv для сохранения данных.
Это нестабильный API; для его использования при запуске Deno необходимо передать флаг --unstable-kv.
Аргумент path принимает несколько форм:
- Путь к локальному файлу базы данных SQLite (не к каталогу). Если файл или какие-либо родительские каталоги отсутствуют, они будут созданы. Например,
Deno.openKv("./my_database.sqlite"). Необходим доступ на чтение и запись файла. - Специальное значение
":memory:"для открытия базы данных в памяти, которая будет удалена при завершении процесса. - URL-адрес
http://илиhttps://, указывающий на удалённую базу данных KV, например размещённую в Deno Deploy.
Если путь не указан, база данных будет открыта по пути по умолчанию для текущего скрипта. Это расположение сохраняется между запусками скрипта и определяется ключом хранилища источника (тем же ключом, который используется для определения сохранения localStorage). Дополнительные сведения о ключе хранилища источника см. в руководстве Deno.
// Open (or create) a database backed by a local file.
const kv = await Deno.openKv("./my_database.sqlite");
await kv.set(["users", "alice"], { name: "Alice" });
const entry = await kv.get(["users", "alice"]);
console.log(entry.value); // { name: "Alice" }
kv.close();
Параметры
path: string Тип возвращаемого значения
Promise<Kv> интерфейс Deno.AtomicCheck
Проверка, выполняемая в рамках Deno.AtomicOperation. Проверка завершится неудачей, если версия пары ключ-значение в хранилище KV не совпадает с указанной версией. Проверка с версией null подтверждает, что такая пара ключ-значение в хранилище KV в данный момент отсутствует.
Свойства
versionstamp: string | null интерфейс Deno.CronSchedule
CronSchedule — это интерфейс, используемый для представления расписания cron в формате JSON schedule.
Свойства
minute: CronScheduleExpression hour: CronScheduleExpression dayOfMonth: CronScheduleExpression month: CronScheduleExpression dayOfWeek: CronScheduleExpression интерфейс Deno.KvCommitResult
Свойства
ok: true versionstamp: string Версия значения, зафиксированного в KV.
интерфейс Deno.KvEntry
Версионированная пара ключ-значение в Deno.Kv.
versionstamp — это строка, представляющая текущую версию пары ключ-значение. Её можно использовать для выполнения атомарных операций над хранилищем KV, передав её в метод check объекта Deno.AtomicOperation.
Параметры типа
T Свойства
интерфейс Deno.KvListOptions
Параметры для перечисления пар ключ-значение в Deno.Kv.
Свойства
limit: number Максимальное число возвращаемых пар ключ-значение. Если параметр не указан, будут возвращены все подходящие пары ключ-значение.
cursor: string Курсор, с которого следует продолжить итерацию. Если параметр не указан, итерация начнётся с начала.
reverse: boolean Нужно ли изменить порядок возвращаемых пар ключ-значение на обратный. Если параметр не указан, пары будут упорядочены по возрастанию от начала диапазона согласно лексикографическому порядку ключей. Если true, порядок будет убывающим от конца диапазона.
Значение по умолчанию — false.
consistency: KvConsistencyLevel Уровень согласованности операции перечисления. По умолчанию используется строгий уровень согласованности. Для некоторых сценариев может быть полезен более слабый уровень согласованности. Дополнительные сведения об уровнях согласованности см. в документации по Deno.KvConsistencyLevel.
Операции перечисления выполняются пакетами (размером, указанным в параметре batchSize). Уровень согласованности операции применяется к каждому пакету отдельно. Это означает, что каждый пакет гарантированно согласован сам по себе, но вся операция перечисления может быть несогласованной между пакетами: изменение пары ключ-значение может произойти между пакетами, в пакете, уже возвращённом операцией перечисления.
batchSize: number Размер пакетов, которыми выполняется операция перечисления. В зависимости от конкретного сценария использования и поведения итерации увеличение или уменьшение размера пакета может как повысить, так и снизить производительность операции перечисления. Для медленно выполняющихся запросов с итерацией может быть полезен меньший размер пакета, повышающий общую согласованность, а для быстро выполняющихся запросов с итерацией — больший размер пакета, улучшающий производительность.
Размер пакета по умолчанию равен значению параметра limit или 100, если он не задан. Максимальное значение этого параметра — 500. Более высокие значения будут ограничены этим пределом.
псевдоним типа Deno.CronScheduleExpression
CronScheduleExpression используется как тип для minute, hour, dayOfMonth, month и dayOfWeek в CronSchedule.
Определение
number
| { exact: number | number[]; }
| { start?: number; end?: number; every?: number; }
псевдоним типа Deno.KvConsistencyLevel
Уровень согласованности операции KV.
-
strong— эта операция должна обеспечивать строгую согласованность. -
eventual— допускается eventual consistency.
Определение
"strong" | "eventual" псевдоним типа Deno.KvEntryMaybe
псевдоним типа Deno.KvKey
Ключ для сохранения в Deno.Kv. Ключ представляет собой последовательность из Deno.KvKeyPart.
Ключи упорядочиваются лексикографически по их частям. Первая часть имеет наибольший вес, последняя — наименьший. Порядок частей определяется как их типом, так и значением. Относительный приоритет типов описан в документации по типу Deno.KvKeyPart.
Максимальный сериализованный размер ключа — 2048 байт. Если размер ключа превышает это ограничение, операция, которой передан этот ключ, вызовет ошибку.
Определение
readonly KvKeyPart[] псевдоним типа Deno.KvKeyPart
Отдельная часть Deno.KvKey. Части упорядочиваются лексикографически: сначала по типу, а затем по значению внутри данного типа.
Типы упорядочиваются следующим образом:
Uint8Arraystringnumberbigintboolean
Порядок значений внутри каждого типа:
-
Uint8Arrayупорядочивается по байтовому порядку массива -
stringупорядочивается по байтовому порядку UTF-8-кодировки строки -
numberупорядочивается по следующему шаблону:-NaN<-Infinity<-100.0<-1.0< -0.5<-0.0<0.0<0.5<1.0<100.0<Infinity<NaN -
bigintупорядочивается математически: наименьшим считается наибольшее отрицательное число, а последним — наибольшее положительное число -
booleanупорядочивается по правилуfalse<true
Это означает, что часть 1.0 (число) расположена перед частью 2.0 (тоже числом), но после части 0n (bigint), поскольку 1.0 — это число, а 0n — bigint; порядок типов имеет приоритет над порядком значений внутри типа.
Определение
Uint8Array
| string
| number
| bigint
| boolean
| symbol
псевдоним типа Deno.KvListSelector
Селектор, определяющий диапазон данных, возвращаемых операцией перечисления в Deno.Kv.
Селектор может быть селектором префикса или селектором диапазона. Селектор префикса выбирает все ключи, начинающиеся с указанного префикса (при необходимости — начиная с указанного ключа). Селектор диапазона выбирает все ключи, лексикографически расположенные между указанными начальным и конечным ключами.
Определение
псевдоним типа Deno.KvMutation
Мутация ключа в Deno.Kv. Мутация представляет собой сочетание ключа, значения и типа. Тип определяет, как мутация применяется к ключу.
-
set— устанавливает для ключа заданное значение, перезаписывая любое существующее значение. При желании можно указать параметрexpireIn, чтобы установить время жизни (TTL) ключа. TTL указывается в миллисекундах, и ключ будет удалён из базы данных не ранее чем по истечении указанного количества миллисекунд. По истечении указанного срока ключ может оставаться видимым ещё некоторое время. Если параметрexpireInне указан, срок действия ключа не истечёт. -
delete— удаляет ключ из базы данных. Если ключ не существует, мутация ничего не делает. -
sum— добавляет заданное значение к существующему значению ключа. И заданное в мутации значение, и любое существующее значение должны иметь типDeno.KvU64. Если ключ не существует, для него устанавливается заданное значение (сумма этого значения и 0). Если результат сложения выходит за пределы беззнакового 64-разрядного целого числа, происходит циклический переход к началу диапазона. -
max— устанавливает для ключа максимальное из существующего и заданного значений. И заданное в мутации значение, и любое существующее значение должны иметь типDeno.KvU64. Если ключ не существует, для него устанавливается заданное значение. -
min— устанавливает для ключа минимальное из существующего и заданного значений. И заданное в мутации значение, и любое существующее значение должны иметь типDeno.KvU64. Если ключ не существует, для него устанавливается заданное значение.
Определение
© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/api/deno/cloud