在nginx中使用lua直接访问mysql和memcaced达到数据接口的统一

Nginx+lua+mysql实时存日志 Nginx+lua+mysql实时存日志准备材料 Nginx.1.12安装包下载 mysql 自行安装 Lua 相关包 LuaJIT 下载 ngx_devel_kit 下载 ngx_lua 下载 pcre 下载 lua_mysql 下载 安装 LuaJIT 安装tar zxf LuaJIT-2.0.5.tar.gz cd LuaJIT-2.0.5 make make install PREFIX= 阅读详情

安装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 http://app.ca-sim.com/getinfo?appleid=jfy

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

结果已被缓存


nginx 集成lua操作mysql 阅读详情

相关推荐

Paraview:Python Calculator Filter

python calculator过滤器 from paraview.simple import * connection = servermanager.Connect('localhost',11111) er = servermanager.sources.EnSightreader(CaseFileName='/.../data.case') er.PointArrays = ['x_velocity','1','y_velocity','1','z_velocity','1','cp','1']

haimianjie2012的专栏 3495

使用lua脚本模拟http接口返回数据

Nginx 的lua脚本模拟服务端向请求

shujie5202的博客 1165

AICodeing:AI驱动的全栈开发革命

作为阿里/字节跳动的资深Java工程师,我们正站在研发效能革命的临界点上。本文将深入探讨如何利用AI技术重构全栈开发流程,实现从需求到上线的量子级提速。

weixin_43290370的博客 1134

nginx使用lua通过request_body按条件开放访问权限

需求:当我们的请求在我们条件内的主机上时只允许balance.query和asset.list请求,其余主机不受限制。此时测试也符合要求,在条件主机和非条件主机对应的两个接口都不受影响。1、在条件内的不同主机上执行balance.query请求。非条件请求asset.summary在条件主机上的请求。上面已经测试了条件请求在条件主机上能正常请求。在条件主机上:192.168.1.159。在非条件主机192.168.1.36。3、测试非条件请求在条件主机上的测试。4、条件主机上的不同请求。

云深海阔专栏 1984

V.PhyloMaker实战:从物种列表到维管束植物系统发育树的完整流程

本文详细介绍了使用V.PhyloMaker工具包,从物种列表快速构建维管束植物系统发育树的完整实战流程。内容涵盖R包安装、物种名标准化、核心函数phylo.maker的三种构建方案选择、结果树的可视化与导出,以及与picante包的联动分析,为生态学和生物地理学研究提供了高效解决方案。

weixin_29057237的博客 374

Python量化交易实战:从零搭建你的第一个多因子选股模型(附完整代码)

本文是一份详细的Python量化交易入门实战指南,手把手教你从零搭建第一个多因子选股模型。内容涵盖环境配置、数据获取、因子挖掘与有效性检验、多因子合成以及完整的策略回测与绩效评估,并附有可直接运行的完整代码,帮助初学者快速掌握量化交易的基本概念与实践流程。

resnet7explorer的博客 931

nginx lua连接mysql_OpenResty的安装和在nginx中使用lua直接访问mysql达到数据接口的统一...

OpenResty 它打包了标准的 Nginx 核心,很多的常用的第三方模块,以及它们的大多数依赖项。如果需要nginx的第三方库的时候,可以考虑OpenResty,可以少掉很多安装的麻烦,OpenResty基本上安装了常用的nginx第三方库。OpenResty的安装:安装nginx 中 rewrite模块等需要的插件:apt-get install libreadline-dev libpcr...

weixin_42114041的博客 270

【老生谈算法】可视化通道流中瞬时涡量场的算法实现与MATLAB源码分析——瞬时涡量场

本文旨在探讨可视化通道流中瞬时涡量场的方法,并通过MATLAB编程实现这一过程。涡量场作为描述流体旋涡强度和方向的重要物理量,对于理解复杂流体运动具有重要意义。本文首先介绍了涡量场的基本概念,随后详细阐述了从测量数据收集到涡量场可视化的完整流程,并给出了相应的MATLAB源码。通过实际运行该源码,我们展示了涡量场的可视化结果,并讨论了其在流动结构识别和动力学行为理解中的应用。关键词: 涡量场;流体运动;MATLAB;可视化;PIV一、引言。

m0_53407570的博客 1124

lua nginx mysql_在nginx中使用lua直接訪问mysql和memcaced达到数据接口的统一

对于訪问接口的统一有非常多的处理方式,这里介绍使用nginx lua 訪问mysql并用memcache缓存起来。配置例如以下:...location /getinfo {default_type 'text/plain';content_by_lua 'local args = ngx.req.get_uri_args()if args["appleid"] == nil thenngx.say...

weixin_29800917的博客 155

DAGGER vs 传统模仿学习:为什么数据聚合能提升模型性能?

本文深入对比了DAGGER与传统模仿学习,揭示了传统方法因“分布不匹配”导致性能下降的根源。DAGGER通过动态的**数据聚合**机制,在智能体自身策略产生的状态分布上收集专家数据,从根本上解决了误差累积问题,从而显著提升了模型在实际部署中的鲁棒性和性能。

weixin_29170327的博客 234

北京大学MuMo多模态肿瘤分类模型复现与迁移学习

本项目复现了北京大学MuMo多模态肿瘤分类模型,并针对特定医学影像数据集进行迁移学习。MuMo模型通过整合CT、MRI、PET等多模态医学影像数据,显著提升了肿瘤分类准确性。项目内容包括环境配置(Python 3.8+、PyTorch 1.9+)、数据预处理(DICOM/NIfTI格式处理、强度归一化)、多模态数据集类实现,以及训练验证测试集划分。关键特点是采用MONAI医学影像处理库,实现三维医学影像的标准化预处理流程,并支持多种模态数据的并行加载与联合训练,为后续模型复现和迁移学习奠定基础。

max500600的博客 1240

nginx lua连接mysql_nginx lua mysql redis设置

对于开发来说需要有好的生态开发库来辅助我们快速开发,而Lua中也有大多数我们需要的第三方开发库如Redis、Memcached、Mysql、Http客户端、JSON、模板引擎等。Redis客户端lua-resty-redis是为基于cosocket API的ngx_lua提供的Lua redis客户端,通过它可以完成Redis的操作。默认安装OpenResty时已经自带了该模块,使用文档可参考ht...

weixin_34688784的博客 359

风控域——知识图谱相关原理

本文全面介绍了知识图谱在风控领域的应用原理。从基础知识入手,阐述了知识图谱的定义、概念及应用场景,重点聚焦于金融风控。进一步讲解了知识图谱的技术架构,涵盖计算、融合与构建等方面。深入探讨了知识表示、建模、抽取、挖掘、存储、融合、检索和推理等关键技术原理,并结合金融风控实际需求,详细说明了各技术环节的具体应用方法与流程,为构建高效风控知识图谱提供了理论与实践指导。

庄小焱 606

lua nginx mysql_在nginx中使用lua直接访问mysql和memcaced达到数据接口的统一_MySQL

NginxbitsCN.com安装nginx参见《nginx+lua+redis构建高并发应用》让nginx 中的nginx_lua_module支持mysql 和memcache下载https://github.com/agentzh/lua-resty-memcachedhttps://github.com/agentzh/lua-resty-mysql对于访问接口的统一有很多的处理方式,这里...

weixin_33897085的博客 164

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

在nginx中使用lua直接訪问mysql和memcaced达到数据接口的统一

安装nginx參见《nginx+lua+redis构建高并发应用》 让nginx 中的nginx_lua_module支持mysql 和memcache 下载 https://github.com/agentzh/lua-resty-memcached https://github.com/agentzh/lua-resty-mysql 对于訪问接口...

weixin_30877181的博客 66

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

日常运维(五)NGINX lua调用

在很多应用中,会在NGINX做一下简单的数据拦截,主要采用lua脚本进行拦截,在采用这种方案时,可以使用openresty,会对整个整体比较友好,本案例实现一个NGINX把接口的数据放到数据库。(一)nginx.conf配置,通过lua_package_path配置lua脚本扫描的路径信息。body_filter_by_lua*:在请求响应阶段,这个阶段不能直接对资源进行操作,需用异步。content_by_lua*:处理请求和响应的主阶段,可自由进行网络操作。(二)连接池构建,以及常用数据库连接代码。

LiMianDeRen的博客 376

Nginx+Lua+MySQL/Redis实现高性能动态网页展现

Nginx结合Lua脚本,直接绕过Tomcat应用服务器,连接MySQL/Redis直接获取数据,再结合Lua中Template组件,直接写入动态数据,渲染成页面,响应前端,一次请求响应过程结束。最终达到下图的一个效果。 OpenResty组件 OpenResty的自带组件库默认已经集成了相当实用的组件,http://openresty.org/cn/components.html,如下所

新技术革命 4395

NGINX + LUA实现复杂的控制

转自http://outofmemory.cn/code-snippet/14396/nginx-and-lua lua_nginx_module 可以一步步的安装,也可以直接用淘宝的OpenResty Centos和debian的安装就简单了。。 这里说下freebsd的安装: fetch http://www.lua.org/ftp/lua-5.1.4.tar.gz tar

hh544的专栏 4311

setTimeout()的参数问题

setTimeout()的参数问题 执行时间 setTimeout()方法接收两个参数,第一个参数可以是包含JavaScript代码的字符串,或者是一个函数。第二个参数表示等待多长时间的毫秒数将当前任务添加到队列中。 setTimeout(“go()”, 1000); //等待1000毫秒执行go函数 setTimeout(go, 1000); //等待1000毫秒执行go函数 setTimeout(go(), 1000); //立即执行go函数,这种情况会忽略后面的等待时间 带引号

无知的圆的博客 1932

实战:Nginx集成Lua脚本并调用memcached

之前在阿里云的centos系统上已经安装过nginx,但是没有安装lua所需的模块,因此重新编译nginx来扩展lua模块。 ngx_lua_module 是一个nginx http模块,它把 lua 解析器内嵌到 nginx,用来解析并执行lua 语言编写的网页后台脚本。这里主要是示范一下,如何在Nginx下安装lua-nginx-module模块 首先先安装好: yum -y i...

五山口老法师 968

Nginx服务器的配置,使用Lua语言在MySQL数据交互

一    Nginx简单配置 Nginx和MySQL数据库的的链接配置 http协议中的一台服务配置:监听端口、服务器名、关闭lua_code_cache(调试不同重启Nginx)、根目录设置、默认页面、以及session密钥等 二    从html发送登录信息到Nginx,Nginx读取MySQL并判断 1    cookies没有登录信息就转到登录页面

quickKnower技术学习天地 2773

Openresty最佳案例 | 第6篇:OpenResty连接Mysql

centos 安装myslCentos系统下安装mysql,先下载mysql-community-release-el7-5.noarch.rpm,然后通过yum安装,安装过程一直确定【Y】即可。cd /usr/downloads/wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpmrpm -ivh mysql-

方志朋的专栏 4万+

Nginx进程模型

1. Nginx进程模型 Nginx采用多进程模型,单Master—多Worker,由Master处理外部信号、配置文件的读取及Worker的初始化,Worker进程采用单线程、非阻塞的事件模型(Event Loop,事件循环)来实现端口的监听及客户端请求的处理和响应,同时Worker还要处理来自Master的信号。由于Worker使用单线程处理各种事件,所以一定要保证主循环是非阻塞的,否则会大

每天积累一点,一年后你会发现,自己变化很大 1053

ngx_lua调用mysql

ngx_lua调用mysql auth yufei 2016-07-21 ngx_lua调用mysql 来源于春哥的开源https://github.com/openresty/lua-resty-mysql function F.check_session() local uid = args["uid"] local session = args["session"] ...

一方 511
上一篇: memc_nginx+srcache_nginx+memcached构建透明的动态页面缓存
下一篇: Nginx之http_image_filter_module模块使用
笑天居士
博客等级 码龄24年 292粉丝 136原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值