ngx_lua将lua嵌nginx,让nginx运行lua脚本。高并发,非堵塞过程中的各种请求。

url要求nginxserver,然后lua查询redis,返回json数据。

一.安装lua-nginx-module

參见《LNMLGC》架构

二.安装redis2-nginx-module模块

get https://github.com/openresty/echo-nginx-module

get https://github.com/openresty/redis2-nginx-module

get https://github.com/agentzh/set-misc-nginx-module.git



#

./configure --prefix=/usr/local/nginx   \

--with-debug                            \

--with-http_stub_status_module          \

--with-http_ssl_module                  \

--with-pcre=../pcre-8.21                \

--add-module=../ngx_devel_kit-0.2.19    \

--add-module=../lua-nginx-module-0.9.8  \

--add-module=../echo-nginx-module       \

--add-module=../redis2-nginx-module     \

--add-module=../set-misc-nginx-module



# make

# make install



三.安装lua-redis-parser

# git clone https:

//github.com/agentzh/lua-redis-parser.git

# export LUA_INCLUDE_DIR=/usr/local/include/luajit-2.0

# make CC=gcc

# make install CC=gcc



四.安装json

# wget http:

//files.luaforge.net/releases/json/json/0.9.50/json4lua-0.9.50.zip

# unzip json4lua-0.9.50.zip

# cp json4lua-0.9.50/json/json.lua /usr/local/lua/lib/



五.安装redis-lua

# git clone https:

//github.com/nrk/redis-lua.git

# cp redis-lua/src/redis.lua /usr/local/lua/lib/



六.配置

...
http {
...
upstream redis_pool {
server localhost:6379;
keepalive 1024 single;
//定义连接池大小,当连接数达到此数后。兴许的连接为短连接
}
server {
...
location /get_redis{
#internal;
set_unescape_uri $key $arg_key;
redis2_query hgetall $key;
redis2_pass redis_pool;
}
location /json {
content_by_lua_file conf/test.lua;
}
}
}

# vi test.lua,放在nginx.conf同文件夹下

local json = require("json")
local parser = require("redis.parser")
local res = ngx.location.capture("/get_redis",{
args = { key = ngx.var.arg_key }
})
if res.status == 200 then
reply = parser.parse_reply(res.body)
value = json.encode(reply)
ngx.say(value)
a = json.decode(value)
ngx.say(a[2])
end

七.測试

# redis-cli

127.0.0.1:6379> HMSET ttlsa www www.ttlsa.com mail mail.ttlsa.com

OK

127.0.0.1:6379> hgetall ttlsa

1) "www"

2) "www.ttlsa.com"

3) "mail"

4) "mail.ttlsa.com"



# curl http://localhost/json?

key=ttlsa

["www","www.ttlsa.com","mail","mail.ttlsa.com"]

www.ttlsa.com

nginx+lua+redis高并发应用建设的更多相关文章

  1. nginx+lua+redis构建高并发应用(转)

    nginx+lua+redis构建高并发应用 ngx_lua将lua嵌入到nginx,让nginx执行lua脚本,高并发,非阻塞的处理各种请求. url请求nginx服务器,然后lua查询redis, ...

  2. nginx lua redis 访问频率限制(转)

    1. 需求分析 Nginx来处理访问控制的方法有多种,实现的效果也有多种,访问IP段,访问内容限制,访问频率限制等. 用Nginx+Lua+Redis来做访问限制主要是考虑到高并发环境下快速访问控制的 ...

  3. 基于nginx+lua+redis高性能api应用实践

    基于nginx+lua+redis高性能api应用实践 前言 比较传统的服务端程序(PHP.FAST CGI等),大多都是通过每产生一个请求,都会有一个进程与之相对应,请求处理完毕后相关进程自动释放. ...

  4. nginx限制请求之三:Nginx+Lua+Redis 对请求进行限制

    相关文章: <高可用服务设计之二:Rate limiting 限流与降级> <nginx限制请求之一:(ngx_http_limit_conn_module)模块> <n ...

  5. Nginx+Lua+Redis 对请求进行限制

    Nginx+Lua+Redis 对请求进行限制 一.概述 需求:所有访问/myapi/**的请求必须是POST请求,而且根据请求参数过滤不符合规则的非法请求(黑名单), 这些请求一律不转发到后端服务器 ...

  6. Nginx+Lua+Redis整合实现高性能API接口 - 网站服务器 - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - Powered by Discuz!

    Nginx+Lua+Redis整合实现高性能API接口 - 网站服务器 - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - Powered by Disc ...

  7. nginx、swoole高并发原理初探

    阅前热身 为了更加形象的说明同步异步.阻塞非阻塞,我们以小明去买奶茶为例. 同步与异步 同步与异步的重点在消息通知的方式上,也就是调用结果通知的方式. 同步:当一个同步调用发出去后,调用者要一直等待调 ...

  8. Redis高并发和快速的原因

    一.Redis的高并发和快速原因 1.redis是基于内存的,内存的读写速度非常快: 2.redis是单线程的,省去了很多上下文切换线程的时间:   3.redis使用多路复用技术,可以处理并发的连接 ...

  9. nginx如何实现高并发

    nginx如何实现高并发 简单来讲,就是异步,非阻塞,使用了epoll和大量的底层代码优化. 稍微详细一点展开的话,就是nginx的特殊进程模型和事件模型的设计. 进程模型 nginx采用一个mast ...

随机推荐

  1. synchronized和进程间通信(转)

    关于JAVA多线程同步 JAVA多线程同步主要依赖于若干方法和关键字 1  wait方法: 该方法属于Object的方法,wait方法的作用是使得当前调用wait方法所在部分(代码块)的线程停止执行, ...

  2. UIViewAdditions(一个非常方便的工具类用它)

    我们在project在,改变或多或少控件的坐标-宽度-高度,然后,经常看到你的self.view.frame.origin.x,self.view.frame.size.width.........相 ...

  3. 采用Flume实时采集和处理数据

    它已成功安装Flume在...的基础上.本文将总结使用Flume实时采集和处理数据,详细过程,如下面: 第一步,在$FLUME_HOME/conf文件夹下,编写Flume的配置文件,命名为flume_ ...

  4. HDU 1505 City Game(01矩阵 dp)

    Problem Description Bob is a strategy game programming specialist. In his new city building game the ...

  5. 体验安装金蝶K/3 Wise 13.0(图像)

    金蝶13.0它提供windows7支持,而数据库也升级到SQL server 2008,有许多功能上的改善和增强.原本在位置低版本号需要时间来管理此功能,因为有这个模块没有原因一直没能起来,现在,新版 ...

  6. java基金会成立

    在java在,数据收集的操作,应使用非常.最近看了零星收集的小知识,在这里,一点点排序. 它基本上是四个常用的类操作点总结集合. 首先.集合大致分为两个方向.一种是普通的集合类型,通过接口collec ...

  7. PYTHON单元测试

    PYTHON开发入门与实战11-单元测试 1. 单元测试 本章节我们来讲讲django工程中如何实现单元测试,单元测试如何编写以及在可持续项目中单元测试的重要性. 下面是单元测试的定义: 单元测试是开 ...

  8. web富客户端应用下,前端架构问题。

    前言: 以前的工作大部分都是,前端做页面 稍微写几个js效果就算是 有复杂的效果 也没有涉及到 需要去调用后端数据的层面.总体来说,以前的页面逻辑会相对简单后端会做更多的事. 而现在,这些任务都抛给前 ...

  9. PowerDesigner设置

    sql语句中表名与字段名前的引号去除: 打开cdm的情况下,进入Tools-Model Options-Naming Convention,把Name和Code的标签的Charcter case选项设 ...

  10. P31RestKit.dll 2.0 Unity3d json

    using System.Collections.Generic; using UnityEngine; using System.Collections; using Prime31; public ...