redis2_literal_raw_query

该 `redis2_literal_raw_query` 指令允许在 NGINX 配置中直接指定原始 Redis 命令。

语法redis2_literal_raw_query literal_string;
默认值none
上下文location, if in location
参数1

说明

在 NGINX 的 Redis upstream 模块上下文中,redis2_literal_raw_query 指令用于将字面形式的原始 Redis 命令直接发送到 Redis 服务器。该指令的独特之处在于它允许管理员通过直接定义作为字符串的精确 Redis 命令来绕过任何变量插值。这对于需要特定格式或无法通过该模块提供的其他查询指令轻松构造的命令尤其有用。

该指令恰好接受一个参数:要发送的字面 Redis 命令。根据 Redis 协议,必须正确格式化该命令,通常涉及使用回车和换行 (CRLF) 来终止命令。例如,像 PING 这样的命令在原始格式中需要表示为 *1\r\n$4\r\nping\r\n。该指令必须放置在 location 块内,或放在 location 块内的条件 if 语句中。

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;
}

确保原始查询根据 Redis 协议正确格式化以避免错误。

正确使用 CRLF 至关重要;如果未正确格式化查询,将导致请求失败。

该字符串不得包含任何变量,因为它应当是一个字面命令。

← 返回所有指令