Chinaunix首页 | 论坛 | 博客
  • 博客访问: 219787
  • 博文数量: 53
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1506
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-25 10:52
文章分类
文章存档

2014年(22)

2013年(31)

我的朋友

分类: Web开发

2014-01-13 13:54:18

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

  一、安装

  1、安装lua-redis-parser

  .代码如下:

  #git clone

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

  #make CC=gcc

  #make install CC=gcc

  2、安装json

  .代码如下:

  #wget

  #unzip json4lua-0.9.50.zip

  #cp json4lua-0.9.50/json/json.lua /usr/share/lua/5.1/

  3、安装redis-lua

  .代码如下:

  #git clone

  #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 mail mail.joyvc.cn

  3、开始测试

  .代码如下:

  #curl ''

  ["www", "", "mail", "mail.joyvc.cn"]

  关于用Nginx+Lua+Redis来构建高并发Web应用,更多软件定制开发方面的信息记得找我们哟
阅读(7005) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~