安装nginx參见《nginx+lua+redis构建高并发应用

让nginx 中的nginx_lua_module支持mysql 和memcache

下载

https://github.com/agentzh/lua-resty-memcached

https://github.com/agentzh/lua-resty-mysql

对于訪问接口的统一有非常多的处理方式,这里介绍使用nginx lua 訪问mysql并用memcache缓存起来。

配置例如以下:

        ...
location /getinfo {
default_type 'text/plain';
content_by_lua ' local args = ngx.req.get_uri_args() if args["appleid"] == nil then
ngx.say("param appleid is nil")
return
end local memcached = require "memcached"
local memc, err = memcached:new()
if not memc then
ngx.say("failed to instantiate memc: ", err)
return
end memc:set_timeout(1000) -- 1 sec local ok, err = memc:connect("172.16.18.114", 11211)
if not ok then
ngx.say("failed to connect: ", err)
return
end local res, flags, err = memc:get(args["appleid"])
if err then
ngx.say("failed to get memc: ", err)
return
end if not res then local mysql = require "mysql"
local db, err = mysql:new()
if not db then
ngx.say("failed to instantiate mysql: ", err)
return
end db:set_timeout(1000) -- 1 sec local ok, err, errno, sqlstate = db:connect{
host = "172.16.18.162",
port = 3306,
database = "test",
user = "root",
password = "cpyf",
max_packet_size = 1024 * 1024
} if not ok then
ngx.say("failed to connect: ", err, ": ", errno, " ", sqlstate)
return
end -- ngx.say("connected to mysql.") sql = "select * from tagval where tag = \'" .. args["appleid"] .. "\'" res, err, errno, sqlstate = db:query(sql)
if not res then
ngx.say("bad result: ", err, ": ", errno, ": ", sqlstate, ".")
return
end local json = require "json"
ngx.say("mysql found")
ngx.say(json.encode(res)) local ok, err = memc:set(args["appleid"], json.encode(res))
if not ok then
ngx.say("failed to set memc: ", err)
return
end local ok, err = db:set_keepalive(0, 100)
if not ok then
ngx.say("failed to set keepalive: ", err)
return
end return end ngx.say("memc found")
ngx.say(res) memc:set_keepalive(0, 100) ';
}
...

第二次执行:

curl --get http://app.ca-sim.com/getinfo?appleid=jfy

mysql found
[{"val":"123","tag":"jfy"}]

第二次后执行:

curl --get 

appleid=jfy">http://app.ca-sim.com/getinfo?

appleid=jfy

memc found
[{"val":"123","tag":"jfy"}]

结果已被缓存

在nginx中使用lua直接訪问mysql和memcaced达到数据接口的统一的更多相关文章

  1. CentOS6.4 安装OpenResty和Redis 并在Nginx中利用lua简单读取Redis数据

    1.下载OpenResty和Redis OpenResty下载地址:wget http://openresty.org/download/ngx_openresty-1.4.3.6.tar.gz Re ...

  2. 服务降级 托底预案 Nginx中使用Lua脚本检测CPU使用率,当达到阀值时开启限流,让用户排队

    https://mp.weixin.qq.com/s/FZAcQQAKomGEe95kln1HCQ 在京东我们是如何做服务降级的 https://mp.weixin.qq.com/s/FZAcQQAK ...

  3. PHP訪问MySql数据库 0基础篇

    在站点后台,常常要与数据库打交道.本文介绍怎样使用XAMPP来管理MySql数据库及怎样用PHP来訪问MySql数据库. 一.使用XAMPP来管理MySql数据库 首先使用XAMPP打开MySql的管 ...

  4. PHP的MySQL扩展:PHP訪问MySQL的经常使用扩展函数

    来源:http://www.ido321.com/1024.html 一.PHP连接数据库及基本操作 MySQL採用的是'客户机/server'架构.使用PHP安装的MySQL扩展函数,和直接使用cl ...

  5. mysql的安装、C++訪问mysql数据库、编码设置问题

    一.mysql的安装.这个相对简单,直接去官网下载mysql安装程序.就能够完毕安装过程,网上有非常多安装教程,这个没什么注意事项. 二.C++訪问mysql.主要是用到mysql定义的头文件,内部定 ...

  6. php訪问mysql数据库

    PHP訪问Mysql数据库 PHP能够通过mysql接口和mysqli接口訪问mysql数据库. 须要加入mysql和mysqli接口才干訪问mysql数据库. windows下配置amp: a.安装 ...

  7. 配置Nginx防止直接用IP訪问Webserver

    看了非常多Nginx的配置,好像都忽略了ip直接訪问Web的问题.这样理论上不利于SEO优化,所以我们希望能够避免直接用IP訪问站点.而是域名訪问.详细怎么做呢.看以下. 官方文档中提供的方法: If ...

  8. Java中怎么控制线程訪问资源的数量

    在API中是这样来描写叙述Semaphore 的 Semaphore 通经常使用于限制能够訪问某些资源(物理或逻辑的)的线程数目. 一个计数信号量.从概念上讲,信号量维护了一个许可集.如有必要,在许可 ...

  9. gcc的bug? c++模板类中友元函数的訪问权限问题

    原文地址:http://stackoverflow.com/q/23171337/3309790 在c++中,模板类中能够直接定义一个友元函数.该函数拥有訪问该模板类非public成员的权限. 比方: ...

随机推荐

  1. Django路由分配以及模版渲染

    路由上: 在网络上区分不同的电脑通过IP.端口和网卡的MAC地址等,在web框架中怎么区分不同的请求呢,就是通过 ‘url(路由)’ ,url 学名叫做全球统一资源定位符,其实就是一个网址 一个url ...

  2. Redis学习总结和相关资料

    因为别人都在用Redis,所以我不得不用Redis.  听起来感觉我很菜的样子,事实上和菜没有关系.  一是由于别人都用,作为后来者,没有"先发"优势,只能顺着别人的思路来做.当前 ...

  3. echarts统计图踩坑合集

    1:折线图条的颜色修改 series : [ { name : 'SBP(收缩压)', type : 'line', itemStyle : { normal : { lineStyle:{ colo ...

  4. 洛谷—— P1162 填涂颜色

    https://www.luogu.org/problem/show?pid=1162 题目描述 由数字0 组成的方阵中,有一任意形状闭合圈,闭合圈由数字1构成,围圈时只走上下左右4个方向.现要求把闭 ...

  5. 洛谷 P2873 [USACO07DEC]泥水坑Mud Puddles

    P2873 [USACO07DEC]泥水坑Mud Puddles 题目描述 Farmer John is leaving his house promptly at 6 AM for his dail ...

  6. ToggleButton控件

    ToggleButton 两种状态 ·状态button     -继承自CompoundButton ·主要属性:-Android:textOn    -Android:textOff ·主要方法: ...

  7. zeromq and jzmq

    install c test install jzmq java test Storm UI Cluster Summary Version Nimbus uptime Supervisors Use ...

  8. 原 HttpClient 4.3超时设置

    https://my.oschina.net/u/577453/blog/173724 http://blog.csdn.net/zh521zh/article/details/51994140

  9. 三星Galaxy Tab S2上市,压制苹果之心凸显

        平板市场正在迎来史上最为关键的一次PK,众所周知,平板市场的苹果和三星一直是行业的领头羊,而在激烈的竞争中.三星平板似乎后劲更足.众多性能优异的产品频频推出.平板之王的称谓呼之欲出. 去年三星 ...

  10. 微信支付v2开发(1) 微信支付URL配置

    本文介绍微信支付申请时如何设置授权目录及URL. 在申请微信支付时,第一项就会碰到下图的配置. 下面就对这一设置进行讲解! 一.选择支付类型 目前有两种支付类型 JS API网页支付 Native原生 ...