nginx+lua+redis搭建,nginxredis


操作系统: Ubuntu

一、安装Nginx

这里采用OpenResty的方式安装:

http://www.openresty.org/cn/index.html

1) apt-get install libreadline-dev libpcre3-dev libssl-dev perl

2) 从OpenResty的网站下载最新的安装文件,这里使用的是ngx_openresty-1.7.7.2.tar.gz

3) 执行./configure --prefix= --with-luajit

默认会安装到/usr/local/openresty,如果想指定安装目录,需要通过--prefix参数指定

4)执行make, make install

5)  设置环境变量:

vi ~/.bashrc  在其最后添加

export PATH=/usr/local/openresty/nginx/sbin:$PATH

6) 配置nginx

nginx默认是用80端口,但是普通用户无权使用,可以改用其他端口比如8080

vi  /usr/local/openresty/nginx/conf/nginx.conf,配置


 

7) 启动,直接在命令行输入nginx启动,打开浏览器,输入localhost:8080验证成功页面

 

二、安装Redis

1) 下载

wget http://download.redis.io/releases/redis-3.0.0.tar.gz

2) 解压安装配置

make, sudo make install

3) 运行redis

配置文件:redis.conf可以编辑相关内容,默认端口是6379

cd src

./redis-server & 使其后台运行

 

4) 客户端连接

 

退出的话在客户端执行shutdown命令:

 

三、Nginx操作Redis

要想在nginx里访问redis,需要HttpRedis模块或 HttpRedis2Module模块 或 HttpLuaModule模块的lua-resty-redis库。具体可以参考http://www.it165.net/database/html/201302/3543.html

1) 关于HttpRedis2Module的介绍可以参考http://wiki.nginx.org/HttpRedis2Module

在conf/nginx.conf里编辑添加以下内容可以实现简单的get/set:


2) 连接池配置

以上配置每次查询都会建立连接,可以配置连接池:

在配置文件的 http {

.....

里添加:

upstream redis_pool {

    server 127.0.0.1:6379

    keepalive 1024;

}

 

然后将具体的查询连接替换为使用连接池:

将redis2_passlocalhost:6379替换为 redis2_pass redis_pool

 

测试如下:

首先通过redis-cli设置变量:set foo 123

然后通过http查询

curl http://localhost:8080/get?key=foo

结果如下:

$3

123

即结果的长度和结果本身。

3)采用HttpRedis2Module的redis响应时原生响应,可以结合LuaRedisModule解析这个响应,配置如下:


 

配置文件里的lua脚本也可以写在一个单独文件里,例如

在/usr/local/openresty/nginx/下创建一个文件get.lua,内容为:


 

然后将nginx.conf配置为:


测试如下:

curl http://localhost:8080/lua_get?key=foo

返回结果:

123

 

4)采用lua-resty-redis方式

先创建一个lua文件:/usr/local/openresty/nginx/lua/redis.lua,内容如下:

 

然后配置nginx.conf:

location /lua_resty_get {

    content_by_lua_file 'usr/local/openresty/nginx/lua/redis.lua';

}

 

测试如下:

curl http://localhost:8080/lua_resty_get?key=foo

结果:123

 

 

参考文档:

http://wiki.nginx.org/HttpRedis2Module

http://huoding.com/2012/08/31/156

http://m.blog.csdn.net/blog/chengfangang/44153849

http://www.it165.net/database/html/201302/3543.html

http://wiki.nginx.org/HttpUpstreamKeepaliveModule

https://github.com/openresty/lua-resty-redis

相关内容

    暂无相关文章