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

来源:互联网 发布:大数据用户画像 模型 编辑:程序博客网 时间:2024/06/13 10:44

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--samRuleAPPLE--appRuleXIAOMI--xiaRule


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

步骤2,访问query?device=XIAOMI,返回xiaRule

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

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

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


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


参考文章:

http://my.oschina.net/766/blog/158972

http://haili.me/archives/722.html



原创粉丝点击