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
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')
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)
синтаксис: res, err = cli:setnx(ключ:строка, значение:JSON_значение [, опции:таблица])
ключ
: строковое значение.значение
: значение, которое может быть закодировано с помощью JSON.опции
: опциональные параметры.
таймаут
: (целое число) время ожидания запроса в секундах. Установка значения в 0 использует lua_socket_connect_timeout
как время ожидания.Для установки пары ключ-значение, если такой ключ еще не существует.
local res, err = cli:setnx('/path/to/key', 'value', 10)
синтаксис: 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('/путь/к/ключу')
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)
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('/путь/к/директории')
синтаксис: 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('/путь/к/директории')
синтаксис: res, err = cli:rmdir(папка:string [, опции:таблица])
ключ
: строковое значение.опции
: опциональные параметры.
таймаут
: (целое число) время ожидания запроса в секундах. Установка значения в 0 приведёт к использованию lua_socket_connect_timeout
как времени ожидания.предыдущий_k_v
: (логическое значение) если установлено, etcd получает предыдущие ключ-значение перед удалением. Предыдущие ключ-значения будут возвращены в ответе на удаление.Чтобы удалить директорию.
local res, err = cli:rmdir('/путь/к/директории')
синтаксис: 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 )