keyval

`keyval` 指令定义了一个变量,该变量根据给定的键值对从键值存储中检索值。

语法keyval $key $variable zone=zone_name;
默认值none
上下文stream
参数3

说明

keyval 指令用于创建一个命名变量,该变量会动态填充来自预定义键值对的数据,这些键值对存储在共享内存或 Redis 后端中。该指令接受三个参数——第一个参数表示键,键可以是静态字符串和 NGINX 变量的组合;第二个参数指定变量名,键对应的值将被赋给该变量。与键一起存储的值可能具有生存时间 (TTL) 到期,使其适合需要短暂数据存储的用例。此外,第三个参数允许指定存储键值对的共享内存区域,从而通过利用 NGINX 内置的内存管理功能来提升可扩展性和性能。

配置示例

http {
    keyval_zone zone=one:32k;
    keyval $arg_text $text zone=one;

    server {
        listen 80;

        location / {
            return 200 $text;
        }
    }
}

确保使用 zone= 指定的内存区域已正确定义;否则,值可能无法检索。

在键中使用动态变量时,请验证它们不会被求值为空;否则可能导致意外行为。

键名在指定区域内必须唯一,以防止数据冲突。

← 返回所有指令