1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/iresty-lua-resty-etcd

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
api_v3.md 23 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 16.03.2025 18:46 11d6cd1

API V3

Метод

new

syntax: cli, err = etcd.new([options: table])- option:table

  • protocol: string - v3.
  • http_host: string - по умолчанию http://127.0.0.1:2379
  • ttl: int - по умолчанию -1 значение времени жизни ключа по умолчанию. Установите -1, чтобы отключить время жизни.
  • key_prefix: string добавляет это префиксное строковое значение пути к URL операции с ключом.
  • timeout: int значение по умолчанию для таймаута запроса в секундах.
  • api_prefix: string для соответствия API шлюза etcd v3. если этот параметр пустой, он будет автоматически заполнен путём получения версии etcd.
  • ssl_verify: boolean - указывает, следует ли проверять сертификат etcd при создании TLS соединения с etcd (если вы хотите общаться с etcd через TLS соединение, используйте схему https в вашем http_host). По умолчанию установлено значение true.
  • ssl_cert_path: string - путь до клиента сертификата
  • ssl_key_path: string - путь до клиента ключа
  • ssl_cert: string - содержимое клиента сертификата
  • ssl_key: string - содержимое клиента ключа
  • serializer: string - тип сериализатора, по умолчанию json. Также поддерживаются raw, чтобы сохранить первоначальное строковое значение.
  • extra_headers: table - добавление пользовательских заголовков для запросов etcd.
  • sni: string - добавление пользовательского SNI для запросов TLS etcd.
  • unix_socket_proxy: string - путь Unix сокета, который будет использоваться для прокси-соединения с etcd.Метод клиентской стороны возвращает объект etcd или строку ошибки.
local cli, err = require("resty.etcd").new({protocol = "v3"})

Дополнительные детали можно найти в документации API etcd - https://github.com/coreos/etcd

Назад к началу

get

syntax: res, err = cli:get(key:string[, opts])

  • key: строковое значение.
  • opts: опциональные параметры.
    • timeout: (int) время ожидания запроса в секундах. Установка значения равным 0 приведёт к использованию lua_socket_connect_timeout как времени ожидания.
    • revision: (int) редакция — это момент времени ключ-значение хранилища, используемый для диапазона. Если редакция меньше или равна нулю, диапазон будет применяться к самому новому ключ-значению хранилищу. Если редакция была сжата, будет возвращена ошибка ErrCompacted в ответ. Чтобы получить значение ключа.
local res, err = cli:get('/path/to/key')

Назад к вершине

set

syntax: res, err = cli:set(key:строка, value:JSON значение [, options:таблица])* ключ: строковое значение.

  • значение: значение, которое может быть закодировано с помощью JSON.
  • опции: опциональные параметры.
    • таймаут: (целое число) время ожидания запроса в секундах. Установка значения в 0 использует lua_socket_connect_timeout как время ожидания.
    • лиз: (целое число) идентификатор лицензии, связываемый с ключом в хранилище ключей.
    • пред_кв: (логическое значение) если установлено, etcd получает предыдущее значение ключа перед его изменением. Предыдущее значение ключа будет возвращено в ответе на запись.
    • игнорировать_значение: (логическое значение) если установлено, etcd обновляет ключ, используя текущее значение. Возвращает ошибку, если ключ отсутствует.
    • игнорировать_лиз: (логическое значение) если установлено, etcd обновляет ключ, используя текущую лицензию. Возвращает ошибку, если ключ отсутствует.Для установки пары ключ-значение.
local res, err = cli:set('/path/to/key', 'value', 10)

Назад к вершине

setnx

синтаксис: res, err = cli:setnx(ключ:строка, значение:JSON_значение [, опции:таблица])

  • ключ: строковое значение.
  • значение: значение, которое может быть закодировано с помощью JSON.
  • опции: опциональные параметры.
    • таймаут: (целое число) время ожидания запроса в секундах. Установка значения в 0 использует lua_socket_connect_timeout как время ожидания.

Для установки пары ключ-значение, если такой ключ еще не существует.

local res, err = cli:setnx('/path/to/key', 'value', 10)

Назад к вершине

setx

синтаксис: res, err = cli:setx(ключ:строка, значение:JSON_значение [, опции:таблица])

  • ключ: строковое значение.
  • значение: значение, которое может быть закодировано с помощью JSON.
  • опции: опциональные параметры.
    • таймаут: (целое число) время ожидания запроса в секундах. Установка значения в 0 использует lua_socket_connect_timeout как время ожидания.

Для установки пары ключ-значение, если такой ключ уже существует.

local res, err = cli:setx('/path/to/key', 'value', 10)

Назад к вершине

удалить

синтаксис: res, err = cli:delete(ключ:строка [, опции:таблица])* key: строковое значение.

  • options: опциональные параметры.
    • timeout: (целое число) время ожидания запроса в секундах. Установка значения в 0 использует lua_socket_connect_timeout как время ожидания.
    • prev_kv: (логическое значение) если установлено, etcd получает предыдущие значения ключей перед их удалением. Предыдущие значения ключей будут возвращены в ответе на удаление. Чтобы удалить пару ключ-значение.```lua local res, err = cli:delete('/путь/к/ключу')

[Назад к вершине](#api-v3)


### observe

`syntax: res, err = cli:observe(ключ:строка [, опции:таблица])`* `ключ`: строковое значение.
 * `опции`: опциональные параметры.
     * `таймаут`: (целое число) тайм-аут запроса в секундах. Установка значения на 0 приведёт к использованию `lua_socket_connect_timeout` как тайм-аута.
     * `начальная_ревизия`: (целое число) начальная ревизия — это опциональная ревизия для наблюдения с момента её применения (включительно). Отсутствие начальной ревизии равно значению "сейчас".
     * `уведомление_о_прогрессе`: (логическое значение) если установлено, сервер etcd периодически будет отправлять ответ с событиями, если нет недавних событий.
     * `фильтры`: (слайс из (перечисление FilterType {NOPUT = 0; NODELETE = 1;}))) фильтры отсеивают события на стороне сервера перед отправкой обратно наблюдателю.
     * `предыдущий_k_v`: (логическое значение) если установлено, созданный наблюдатель получает предыдущее K/V до того, как произойдет событие. Если предыдущее K/V уже компактировано, ничего не будет возвращено.
     * `идентификатор_наблюдателя`: (целое число) если предоставлен и отличен от нуля, он будет назначен этому наблюдателю. Поскольку создание наблюдателя в etcd не является синхронной операцией, это можно использовать для обеспечения правильного порядка при создании нескольких наблюдателей на одном потоке. Создание наблюдателя с идентификатором, который уже используется на потоке, вызовет ошибку.    * `fragmentation`: (логическое значение) фрагментация позволяет разделить большие ревизии на несколько ответов наблюдателя.
     * `requirement_to_cancel`: (логическое значение) если наблюдение требует отмены, наблюдатель вернет HTTP-клиент для дальнейшей отмены. Подробнее см. [observercancel](#observercancel).Для наблюдения за обновлением ключа.

```lua
local res, err = cli:observe('/путь/к/ключу')

Назад к вершине

observe_cancel

syntax: res, err = cli:observe_cancel(http_cli:таблица)

  • http_cli: HTTP-клиент, который требуется отменить.

Для отмены наблюдения до истечения его срока действия. Нужно установить require_cancel, чтобы получить HTTP-клиент для отмены.

local res, err, http_cli = cli:observe('/путь/к/ключу', {require_cancel = true})
res = cli:observe_cancel(http_cli)

Назад к вершине

readdir```markdown

syntax: res, err = cli:readdir(директория:строка [, опции:таблица])*

  • key: строковое значение.
  • opts: опциональные параметры.
    • timeout: (int) время ожидания запроса в секундах. Установка значения равной нулю приведёт к использованию lua_socket_connect_timeout как времени ожидания.
    • revision: (int) редакция — это момент времени ключ-значение для использования в диапазоне. Если редакция меньше или равна нулю, диапазон будет применяться к самому новому ключ-значению. Если редакция была сжата, будет возвращён ответ с ошибкой ErrCompacted.
    • limit: (int) ограничение на количество ключей, возвращаемых для запроса. Когда лимит установлен равным нулю, он рассматривается как отсутствие ограничения.
    • sort_order: (int [SortNone:0, SortAscend:1, SortDescend:2]) порядок сортировки для возвращаемого отсортированного результата.
    • sort_target: (int [SortByKey:0, SortByVersion:1, SortByCreateRevision:2, SortByModRevision:3, SortByValue:4]) поле ключ-значение для использования при сортировке.
    • keys_only: (bool) когда установлено, возвращает только ключи, а не значения.
    • count_only: (bool) когда установлено, возвращает только количество ключей в диапазоне. Чтобы прочитать содержимое директории.
```lua
local res, err = cli:readdir('/путь/к/директории')

Назад к вершине

watchdir

синтаксис: res, err = cli:watchdir(папка:string [, опции:таблица]) ```* ключ: строковое значение.

  • опции: опциональные параметры.
    • таймаут: (целое число) время ожидания запроса в секундах. Установка значения в 0 приведёт к использованию lua_socket_connect_timeout как времени ожидания.
    • начальная_ревизия: (целое число) начальная ревизия — это опциональная ревизия для отслеживания (включительно). Отсутствие начальной ревизии равно значению "сейчас".
    • уведомление_о_процессе: (логическое значение) если установлено, сервер etcd периодически будет отправлять ответ с пустыми событиями новому наблюдателю, если недавних событий нет.
    • фильтры: (массив типов фильтров [enum FilterType {NOPUT = 0; NODELETE = 1;}]) фильтры фильтруют события на стороне сервера перед отправкой обратно наблюдателю.
    • предыдущий_k_v: (логическое значение) если установлено, созданный наблюдатель получает предыдущие ключ-значение до события. Если предыдущее ключ-значение уже компактировано, ничего не будет возвращено.
    • идентификатор_наблюдателя: (целое число) если предоставлен и отличен от нуля, он будет назначен этому наблюдателю. Поскольку создание наблюдателя в etcd не является синхронной операцией, это можно использовать для обеспечения правильного порядка при создании нескольких наблюдателей на одном потоке. Создание наблюдателя с идентификатором, который уже используется на потоке, вызовет ошибку. * фрагментация: (логическое значение) если включена, позволяет разделить большие ревизии на несколько ответов наблюдателя.Чтобы наблюдать за обновлением директории.
local res, err = cli:watchdir('/путь/к/директории')

Назад к вершине

rmdir

синтаксис: res, err = cli:rmdir(папка:string [, опции:таблица])

  • ключ: строковое значение.
  • опции: опциональные параметры.
    • таймаут: (целое число) время ожидания запроса в секундах. Установка значения в 0 приведёт к использованию lua_socket_connect_timeout как времени ожидания.
    • предыдущий_k_v: (логическое значение) если установлено, etcd получает предыдущие ключ-значение перед удалением. Предыдущие ключ-значения будут возвращены в ответе на удаление.

Чтобы удалить директорию.

local res, err = cli:rmdir('/путь/к/директории')

Назад к вершине

txn

синтаксис: res, err = cli:txn(сравнение:массив, успех:массив, неудача:массив [, опции:таблица])

  • compare: массив объектов типа таблица.
  • success: массив объектов типа таблица.
  • failure: массив объектов типа таблица.
  • opts: опциональные параметры.
    • таймаут: (целое число) время ожидания запроса в секундах. Установка значения 0 приведёт к использованию значения lua_socket_connect_timeout как времени ожидания.

Транзакция.```lua local compare = {} compare[1] = {} compare[1].target = "CREATE" compare[1].key = encode_base64("test") compare[1].createRevision = 0

local success = {} success[1] = {} success[1].requestPut = {} success[1].requestPut.key = encode_base64("test")

local res, err = cli:txn(compare, success, nil)


[Назад к вершине](#api-v3)


### версия

`синтаксис: res, err = cli:version()`

Для получения информации о версии etcd.

[Назад к вершине](#api-v3)

### выделение

`синтаксис: res, err = cli:grant(TTL: int [, ID: int])`

- `TTL`: рекомендуемое время жизни в секундах.
- `ID`: запрошенный идентификатор для аренды. Если ID установлен равным 0, арендатор выбирает идентификатор.

Для создания аренды, которая истекает, если сервер не получит запрос на продление аренды в течение указанного периода времени. Все ключи, прикрепленные к аренде, будут удалены после её истечения. Каждый истёкший ключ генерирует событие удаления в истории событий.

```lua
-- создание аренды с TTL 5 секунд
local res, err = cli:grant(5)

-- прикрепление ключа к аренде, чей ID будет содержаться в res
local data, err = etcd:set('/path/to/key', 'val', {lease = res.body.ID})

Назад к вершине

отзыв аренды

синтаксис: res, err = cli:revoke(ID: int)

  • ID: идентификатор аренды для отзыва. Когда ID отзываем, все связанные ключи будут удалены.

Для отзыва аренды. Все ключи, прикрепленные к ней, будут удалены после её истечения.

local res, err = cli:grant(5)
local data, err = etcd:set('/path/to/key', 'val', {lease = res.body.ID})

local data, err = etcd:revoke(res.body.ID)
local data, err = cli:get('/path/to/key')
-- ответ не будет содержать kvs
```[Назад к вершине](#api-v3)

### Продление аренды

`синтаксис: res, err = cli:keepalive(ID:int)`

- `ID`: идентификатор аренды для продления.

Для продления аренды путём отправки запросов на продление аренды от клиента к серверу и получения ответов от сервера.

[Назад к вершине](#api-v3)

### Время до истечения

`синтаксис: res, err = cli:timetolive(ID:int [, keys: bool])`

- `ID`: идентификатор аренды.
- `keys`: если true, то запрос всех ключей, прикрепленных к этой аренде.

Для получения информации об аренде.

[Назад к вершине](#api-v3)

### Список аренд

`синтаксис: res, err = cli:leases()`

Для получения списка всех существующих арен.

[Назад к вершине](#api-v3)

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/iresty-lua-resty-etcd.git
git@api.gitlife.ru:oschina-mirror/iresty-lua-resty-etcd.git
oschina-mirror
iresty-lua-resty-etcd
iresty-lua-resty-etcd
master