小知识:Nginx+Lua+Redis构建高并发Web应用

本文介绍如何用Nginx+Lua+Redis来构建高并发Web应用,Curl请求Nginx,Nginx通过Lua查询Redis,返回json数据。

一、安装

1、安装luaredis-parser
复制代码代码如下:

#git clone https://github.com/agentzh/lua-redis-parser.git

 #export LUA_INCLUDE_DIR=/usr/include/lua5.1

 #make CC=gcc

 #make install CC=gcc

2、安装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/share/lua/5.1/

3、安装redis-lua

复制代码代码如下:

#git clone https://github.com/nrk/redis-lua.git

 #cp redis-lua/src/redis.lua /usr/share/lua/5.1/

二、配置

复制代码代码如下:

        #vi /etc/nginx/nginx.conf

        http {

            include mime.types;

            default_type application/octet-stream;

            access_log logs/access.log;

            sendfile on;

            tcp_nopush on;

            tcp_nodelay on;

            keepalive_timeout 60;

            types_hash_max_size 2048;

            server_tokens off;

            lua_code_cache on;

            upstream redis_pool {

                server 192.168.1.105:6379;

                keepalive 1024 single; 

                //定义连接池大小,当连接数达到此数后,后续的连接为短连接

            }

            server {

                listen 80;

                server_name 192.168.1.104;

                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_redis.lua;

                }

            }

        }

三、测试

1、编写脚本

        编写上面配置中的test_redis.lua脚本
复制代码代码如下:

        #vi test_redis.lua

        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

2、构造数据

复制代码代码如下:

        #redis-cli -h 192.168.1.105 -p 6379

        redis 192.168.1.105:6379>HMSET testnlr www www.tuohang.net bbs bbs.tuohang.net

3、开始测试

复制代码代码如下:

        #curl http://192.168.1.104/json?key=testnlr

        [“www”, “www.tuohang.net”, “bbs”, “bbs.tuohang.net”]
声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:Linux 下rpm命令参数详解

2023-5-11 2:19:17

建站知识

小知识:Linux tar命令使用列子

2023-5-11 2:27:34

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索