您的位置:首页 > 运维架构 > Nginx

Nginx + Lua + 共享内存实现动态查询(简单例子)

2013-12-03 18:07 621 查看
Nginx 配置。

lua_package_path "/usr/local/share/luajit-2.0.2/jit?.lua;;";
lua_shared_dict devicedb 45m;
location /query {
default_type 'text/plain';
content_by_lua '
local args = ngx.req.get_uri_args()
local devicetype = args["device"]
local devicedb = ngx.shared.devicedb
local res = devicedb:get(devicetype)

ngx.say(res)
';
}

location /update {
default_type 'text/plain';
content_by_lua '
local devicedb = ngx.shared.devicedb

for item in io.lines("/usr/local/nginx-1.4.2/data/rule.txt") do
_,_,device_type, device_rule = string.find(item, "^(%a+)--(%a+)$")
devicedb:set(device_type,device_rule)
end

ngx.say("ok")
';
}


rule.txt文件格式。

SAMSUNG--samRule
APPLE--appRule
XIAOMI--xiaRule


步骤1,访问/update,更新共享内存devicedb
步骤2,访问query?device=XIAOMI,返回xiaRule

步骤3,修改rule.txt,将xiaRule改为xiaRuleaaaa

步骤4,访问/update,更新共享内存devicedb

步骤5,访问query?device=XIAOMI,返回xiaRuleaaaa

内网响应时间在5~10ms。

参考文章:

/article/3448560.html

http://haili.me/archives/722.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: