关闭

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

标签: nginxlua查询共享内存高并发
10948人阅读 评论(0) 收藏 举报
分类:

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。


参考文章:

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

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



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:186918次
    • 积分:2523
    • 等级:
    • 排名:第15117名
    • 原创:70篇
    • 转载:21篇
    • 译文:1篇
    • 评论:20条
    最新评论