Nginx + Lua + redis (一)

来源:互联网 发布:手机知乎网页打不开 编辑:程序博客网 时间:2024/05/22 11:49

使用 Lua 脚本语言操作 Redis。

由于大量的 Lua 代码写在 Nginx中,会使配置文件显得很繁琐,所以这里使用 content_by_lua_file 来引入 Lua脚本文件。

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

安装介绍,猛击这里:nginx_lua_module


大神 章亦春 提供了一个很方便的开发包,如下:

git clone https://github.com/agentzh/lua-resty-redis.git

该包中,有一个 Lib 目录,将 Lib 目录下的文件和子目录拷贝至目录 /data/www/lua


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

注:加在 http 段里。

lua_package_path "/data/www/lua/?.lua;;";


为了使得 lua 脚本的修改能及时生效,需要加入一行代码,如下:

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

lua_code_cache off;

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

location /lua {    content_by_lua_file /data/www/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)        returnendres, err = cache:set("dog", "an aniaml")if not ok then        ngx.say("failed to set dog: ", err)        returnendngx.say("set result: ", res)local res, err = cache:get("dog")if not res then        ngx.say("failed to get dog: ", err)        returnendif res == ngx.null then        ngx.say("dog not found.")        returnendngx.say("dog: ", res)local ok, err = cache:close()if not ok then        ngx.say("failed to close:", err)        returnend

测试结果如下:

[root@localhost conf]# curl http://localhost/luaset result: OKdog: an aniaml

成功!



原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 魔兽世界怀旧服工程学攻略 魔兽世界怀旧服工程学 北京大学化学与分子工程学院 大连理工大学建设工程学部 北大化学与分子工程学院 工程宝 西安轩宝清洗工程有限公司 工程宝使用方法图解 工程宝的使用方法 工程宝app 中铁北京工程局 中铁广州工程局 广西水电工程局 中铁北京工程局集团有限公司 山东省水利工程局有限公司 中铁上海工程局集团有限公司 中铁上海工程局本科生待遇2018 中交机电工程局有限公司 中铁北京工程局应届生待遇 工程局郑建林被停职 中国建筑第八工程局 中国建筑第五工程局有限公司 中国建筑第五工程局 中国建筑第八工程局有限公司 中国建筑第二工程局 中国建筑第四工程局有限公司 中国建筑第二工程局有限公司 中国建筑第七工程局 中国建筑第四工程局 中国建筑第七工程局有限公司 中国建筑第三工程局有限公司 中国建筑第六工程局有限公司 中铁有多少个工程局 中国水利水电第三工程局 中国水利水电第七工程局 中国水利水电第十一工程局 中国水利水电第六工程局 水利水电第十一工程局 中国水利水电第五工程局 中国水利水电第十四工程局 工程师考试时间