redis2_query
Задает запрос команды Redis, который будет выполнен upstream-сервером Redis.
Описание
Директива redis2_query позволяет определить одну или несколько команд Redis, которые будут отправлены на upstream-сервер Redis для выполнения. Эта директива может использоваться внутри блоков location, позволяя задавать специальные обработчики для разных конечных точек. Основное преимущество использования redis2_query — возможность формировать команды Redis динамически на основе переменных, определённых в конфигурации. Можно объявить несколько экземпляров redis2_query, что позволяет организовать пакетные (pipelined) команды и повысить производительность за счёт уменьшения числа round trips к серверу Redis.
Каждый redis2_query вычисляется во время выполнения, то есть вы можете передавать переменные, установленные ранее в цикле обработки запроса. Это означает, что вы можете использовать её совместно с другими директивами, такими как set, для динамических значений или для получения параметров из строки запроса. При объединении нескольких запросов в одном блоке location вы можете выполнить несколько команд Redis, а затем с помощью директивы redis2_pass переслать запросы на указанный сервер Redis. Это обеспечивает гибкость и контроль над командами Redis, которые вы выполняете в ответ на клиентские запросы.
Пример конфига
location = /store {
set $item 'key';
set $value 'value';
redis2_query set $item $value;
redis2_query get $item;
redis2_pass 127.0.0.1:6379;
}Убедитесь, что переменные, используемые в запросе, правильно определены до того, как будет выполнена директива redis2_query.
Использование более чем одного redis2_query в одном блоке location может привести к непредвиденному поведению или снижению производительности, особенно если они не конвейеризованы корректно.
Неправильное форматирование Redis-команды или её аргументов может привести к ошибкам или к отправке некорректных команд на Redis-сервер.