您的位置:首页 > 数据库 > Redis

nginx+lua+redis搭建

2015-07-18 14:14 731 查看
操作系统: 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: