Lua脚本语言学习三(Redis)

aries 发表于 2015-08-19 1475 次浏览

使用 Lua 脚本语言操作 Redis。

由于大量的 Lua 代码写在 Nginx

中,会使配置文件显得很繁琐,所以这里使用 content_by_lua_file 来引入 Lua
脚本文件。

要使用 content_by_lua_file,需要安装 nginx_lua_module模块。


安装介绍,猛击这里:[nginx_lua_module](http://iw3c.com/archive/lua-study-env/) 


大神 **章亦春** 提供了一个很方便的开发包,如下:
git clone https://github.com/agentzh/lua-resty-redis.git
该包中,有一个 Lib 目录,将 

Lib 目录下的文件和子目录拷贝至目录 /home/wwwroot/lua

在 Nginx 配置文件中,需要加一行代码,以便引入redis.lua。


注:加在 http 段里。
lua_package_path "/home/wwwroot/lua/lib/?.lua;;";
为了使得 lua 脚本的修改能及时生效,需要加入一行代码,如下:


注:在 server 段里,加入代码,如果不加此代码或者设置为 on 时,则需要重启 Nginx。
lua_code_cache off;

在 Nginx 配置文件中,加入一个Location:

location /lua {
    content_by_lua_file /home/wwwroot/lua/test.lua;
}
注:引入 test.lua 脚本文件


Lua 脚本文件:test.lua。
local redis = require "resty.redis"
local cache = redis.new()
local ok, err = cache.connect(cache, '127.0.0.1', '6379')
cache:set_timeout(60000)
if not ok then
        ngx.say("failed to connect:", err)
        return
end
res, err = cache:set("dog", "an aniaml")
if not ok then
        ngx.say("failed to set dog: ", err)
        return
end
ngx.say("set result: ", res)
local res, err = cache:get("dog")
if not res then
        ngx.say("failed to get dog: ", err)
        return
end
if res == ngx.null then
        ngx.say("dog not found.")
        return
end
ngx.say("dog: ", res)
local ok, err = cache:close()
if not ok then
        ngx.say("failed to close:", err)
        return
end

测试结果如下:

[root@localhost conf]# curl http://192.168.0.202/lua
set result: OK
dog: an aniaml

0条评论

如需评论,请填写表单。
换一个

记住我的信息