操作系统: 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