Nginx 配置。

[plain] view plaincopy
  1. lua_package_path "/usr/local/share/luajit-2.0.2/jit?.lua;;";
  2. lua_shared_dict devicedb 45m;
  3. location /query {
  4. default_type 'text/plain';
  5. content_by_lua '
  6. local args = ngx.req.get_uri_args()
  7. local devicetype = args["device"]
  8. local devicedb = ngx.shared.devicedb
  9. local res = devicedb:get(devicetype)
  10. ngx.say(res)
  11. ';
  12. }
  13. location /update {
  14. default_type 'text/plain';
  15. content_by_lua '
  16. local devicedb = ngx.shared.devicedb
  17. for item in io.lines("/usr/local/nginx-1.4.2/data/rule.txt") do
  18. _,_,device_type, device_rule = string.find(item, "^(%a+)--(%a+)$")
  19. devicedb:set(device_type,device_rule)
  20. end
  21. ngx.say("ok")
  22. ';
  23. }

rule.txt文件格式。

[plain] view plaincopy
  1. SAMSUNG--samRule
  2. APPLE--appRule
  3. 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

来源:http://blog.csdn.net/lxb_champagne/article/details/17099383

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

  1. Nginx之共享内存与slab机制

    1. 共享内存 在 Nginx 里,一块完整的共享内存以结构体 ngx_shm_zone_t来封装,如下: typedef struct ngx_shm_zone_s ngx_shm_zone_t;t ...

  2. c++动态内存的几个简单例子

    文件functions.cc #include <string> #include <iostream> #include <memory> #include &l ...

  3. 【oracle】查询===Oracle数据库 子查询(嵌套查询)简单例子

    例如: 查询工资比Simth工资高的员工信息 第一步:查询Smith的工资数 select salary from s_emp where last_name='Smith'; 结果: SALARY ...

  4. Nginx源码阅读:共享内存ngx_shm_t和它的组织方式ngx_shm_zone_t、ngx_list_t

    Nginx源码阅读:共享内存ngx_shm_t和它的组织方式ngx_shm_zone_t.ngx_list_t 一.Nginx中共享内存的结构图 二.Nginx中实现共享内存的部分 1.共享内存配置信 ...

  5. Linux进程间通信六 Posix 共享内存简介与示例

    1. 共享内存简介 共享内存主要用于不同进程之间相互通信,因为操作的是同一块地址,不需要内核和用户层之间数据拷贝,属于最快的进程间通信方式,不过,为了防止读写冲突,一般需要额外的同步手段.之前介绍了S ...

  6. Android 匿名共享内存驱动源码分析

    原址 Android系统的匿名共享内存Ashmem驱动程序利用了Linux的共享内存子系统导出的接口来实现,本文通过源码分析方式详细介绍Android系统的匿名共享内存机制.在Android系统中,匿 ...

  7. boost库中共享内存的使用

    什么是共享内存 共享内存是最快速的进程间通信机制.操作系统在几个进程的地址空间上映射一段内存,然后这几个进程可以在不需要调用操作系统函数的情况下在那段内存上进行读/写操作.但是,在进程读写共享内存时, ...

  8. linux平台 使用dlopen接口调用HelloWorld动态库简单实例

    动态库(libxxx.so)一种调用方式是在编译的时候的时候指定库名 -lxxx,另一种调用方式是通过dlopen在程序里加载动态库,然后调用相关接口.相关接口比较简单,包括打开动态库,解析库里提供的 ...

  9. linux shared,从 0 开始学习 Linux 系列之「22.共享内存 Shared Memory」

    共享内存 版权声明:本文为 cdeveloper 原创文章,可以随意转载,但必须在明确位置注明出处! 共享内存 Shared Memory 这次我们来学习在 Linux 中最快的一种 IPC 方式:共 ...

最新文章

  1. 深度强化学习入门到精通--资料综述
  2. iOS SDWEBImage和collectionView的组合,以及collectionView的随意间距设置
  3. Java 中商业运算必备的精确运算类:BigDecimal
  4. 封装、继承和构造函数
  5. 【Android】Mac Android adb 配置
  6. 如何让自己时刻冷静的方法_如何锻炼自己的口才及沟通技巧?这5个方法让你受用一辈子...
  7. 自定义DrawableTextView——实现TextView左上右下的点击监听
  8. jQuery 属性和CSS
  9. php53 php55区别,详解 PHP 中的三大经典模式
  10. linux看硬件配置命令,Linux查看硬件配置命令
  11. php判断平年和闰年,平年和闰年的三种判断方法
  12. cocos2d(背景图片循环滚动)
  13. android 内存对齐,Go struct 内存对齐
  14. Machine Learning - XVIII. Application Example Photo OCR应用实例-照片OCR(Week10)
  15. 极限理论总结04:Delta方法
  16. java fastfds操作文件
  17. 深度可分离卷积(Depthwise seperable convolution)
  18. Java回炉学习(七)
  19. initramfs学习
  20. 海盗分赃问题-----简化问题,分而治之

热门文章

  1. 「Apollo」直接在docker内部安装miniconda失败
  2. 17,18_常见函数梯度,激活函数梯度(Sigmoid、Tanh、ReLu)
  3. 01_[pathlib]内置pathlib库的常用属性和方法
  4. 用于大数据开发的Centos7操作系统安装过程中遇到的问题总结
  5. Scala编译器安装,开发工具安装,通过IDEA创建scala的工程代码,Scala SDK的设置
  6. 2.Cocos2d-x-3.2编写3d打飞机,项目代码总结
  7. windows下安装Oracle10G
  8. Qt学习笔记之 字符串类型小结
  9. Faster R-CNN改进篇(二): RFCN ● RON
  10. Springboot——HelloWorld