• -------------------------------------------------------------
  • ====================================

nginx+lua+redis构建高并发应用

nginx_lua dewbay 6年前 (2019-04-12) 2815次浏览 已收录 0个评论 扫描二维码

ngx_lualua嵌入到 nginx,让 nginx 执行lua脚本,高并发,非阻塞的处理各种请求。

url 请求 nginx 服务器,然后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 http://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”]

http://www.ttlsa.com

作者:笑天居士
来源:CSDN
原文:https://blog.csdn.net/jiao_fuyou/article/details/36186485
版权声明:本文为博主原创文章,转载请附上博文链接!


露水湾 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:nginx+lua+redis构建高并发应用
喜欢 (0)
[]
分享 (0)
关于作者:
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址