redis2_literal_raw_query

Директива `redis2_literal_raw_query` позволяет напрямую задавать необработанные команды Redis в конфигурации NGINX.

Синтаксисredis2_literal_raw_query literal_string;
По умолчаниюnone
Контекстlocation, if in location
Аргументы1

Описание

Директива redis2_literal_raw_query используется в контексте модуля Redis upstream для NGINX для отправки буквальной необработанной команды Redis напрямую серверу Redis. Данная директива уникальна тем, что позволяет администратору обходить любую интерполяцию переменных, напрямую задавая точную команду Redis в виде строки. Это особенно полезно для команд, которые требуют специфического форматирования или которые нелегко сформировать с помощью других директив запросов, предоставляемых модулем.

Директива принимает ровно один аргумент: буквальную команду Redis, которая будет отправлена. Важно, чтобы эта команда была правильно отформатирована в соответствии с протоколом Redis, который обычно требует использования символов возврата каретки и перевода строки (CRLF) для завершения команд. Например, команда PING в сыром формате должна быть представлена как *1\r\n$4\r\nping\r\n. Директива должна располагаться внутри блока location или внутри условного оператора if, находящегося в блоке location.

Одним из распространённых вариантов использования redis2_literal_raw_query является ситуация, когда требуется выполнить конкретный запрос, который нельзя сгенерировать динамически или который потребовал бы чрезмерной сложности при создании с помощью переменных NGINX. Используя эту директиву, администраторы могут быть уверены, что отправляемая в Redis команда будет точно соответствовать намерению без каких-либо дополнительных преобразований или кодирования, которые могут происходить при использовании других директив, таких как redis2_query. Хотя redis2_raw_query может принимать переменные для динамических запросов, в случаях, когда нужен неизменённый запрос, предпочтительнее использовать redis2_literal_raw_query.

Пример конфига

location = /bar {
    redis2_literal_raw_query '*1\r\n$4\r\nping\r\n';
    redis2_pass 127.0.0.1:6379;
}

Убедитесь, что raw query правильно отформатирован в соответствии с протоколом Redis, чтобы избежать ошибок.

Правильное использование CRLF крайне важно; если запрос не будет корректно отформатирован, он завершится с ошибкой.

Строка не должна содержать никаких переменных, поскольку она предназначена как буквальная команда.

← Ко всем директивам