VarsToSharedMap#
Помещает значения заданных переменных в разделяемый кэш. Работа с хранилищем shared map, построенном на базе Shared Memory в Nginx.
Параметры:
Название |
Обязательность |
Допустимые значения |
Описание |
|---|---|---|---|
operation |
+ |
ADD/REPLACE/INCREMENT |
Тип операции в случае, если операция не определена в правиле: ADD — добавление; REPLACE — замена; INCREMENT — увеличение существующего значения на заданную дельту (только для числовых значений) |
shared_store_name |
+ |
Строка, содержащая имя разделяемого хранилища |
Должно указываться имя ранее объявленного хранилища |
lifetime |
- |
Текстовое значение с суффиксом: ms — миллисекунды; s — секунды; m — минуты; h — часы; d — дни; w — недели; M — месяцы, 30 дней; y — годы, 365 дней |
Время жизни помещаемого в кэш значение, по истечении которого оно будет удалено. Используется, если параметр не задан в правиле |
rules |
+ |
Список правил вида: {var: имя_переменной, key: ключ, operation: ADD/REPLACE/INCREMENT, lifetime: время жизни, initvalue: начальное значение счетчика (для случая операции INCREMENT, ignore_already_exists - игнорировать ошибку в случае наличия ключа в кэше и операции PUT)} |
key: ключ элемента для вставки, изменения; var: имя переменной из которой берут значения; lifetime: время жизни. |
Примечание: в случае операции INCREMENT вычисленное значение параметра var правила используется как величина инкремента.
Заполняемые переменные:
Название |
Диапазон значений |
Описание |
|---|---|---|
clj_shared_map_error |
MESSAGE_UNKNOWN/DEFAULT_ERROR/EMPTY_QUEUE/ALREADY_EXISTS |
MESSAGE_UNKNOWN — попытка получить сообщение по ключу, который отсутствует в кэше; DEFAULT_ERROR — внутренняя ошибка; EMPTY_QUEUE - очередь/кэш пуст; ALREADY_EXISTS — сообщение с таким ключом уже есть в кэше |
Переменная заполняется только в случае ошибки.
Пример:
system:
storages:
- name: storage_1
services:
service_http_proxy:
- id: 1
chains:
- action: VarsToSharedMap
conditions:
- {var: request_method, value: PUT, operator: "="}
params:
shared_store_name: storage_1
rules:
- {var: $request_uri, key: last_request_uri, operation: REPLACE, lifetime: 24h}
- {var: $remote_addr, key: last_client_addr, operation: REPLACE, lifetime: 24h}
В примере, в разделяемый кэш помещаются значения ip адреса клиента, обратившегося последним и uri запроса, пришедшего последним.