Lua引用模块与包点击查看菜鸟教程
简单配置如下
代码语言:javascript复制#LUA_PATH
# 文件路径以 ";" 号分隔,最后的 2 个 ";;" 表示新加的路径后面加上原来的默认路径,路径可以自定义的,我这里是把lua模块放到了"/data/www/code/lua/util/"下面。
export LUA_PATH="/data/www/code/lua/util/?.lua;;"
# 更新环境变量参数,使之立即生效
source ~/.profile
假如你已经配置好了lua模块默认路径
调用
代码语言:javascript复制-- require("<模块名>")
-- 或者
-- require "<模块名>"
-- 我这里以加载字符串分割为例演示
local strsplit = require("strsplit");
local ta = strsplit.split("122sd_lsdjfdh_sasasa_rrt", "_");
print("类型:" .. type(ta));
for k, v in ipairs(ta) do
print("键:" .. k, "值:" .. v);
end
-- 运行lua run.lua 输出结果
-- 类型:table
-- 键:1 值:122sd
-- 键:2 值:lsdjfdh
-- 键:3 值:sasasa
-- 键:4 值:rrt
字符串分割(strsplit.lua)
代码语言:javascript复制local _M = {}
function _M.split(str, delim)
if type(delim) ~= "string" or string.len(delim) <= 0 then
return
end
local start = 1
local tab = {}
while true do
local pos = string.find(str, delim, start, true)
if not pos then
break
end
table.insert(tab, string.sub(str, start, pos - 1))
start = pos string.len(delim)
end
table.insert(tab, string.sub(str, start))
return tab
end
return _M
nginx 共享缓存get以及set
openResty的nginx.conf配置
代码语言:javascript复制worker_processes 1;
error_log logs/error.log;
events {
worker_connections 1024;
}
http {
# 设置纯 Lua 扩展库的搜寻路径(';;' 是默认路径)
lua_package_path "/data/www/code/nginx lua/config/lua_p/?.lua;;";
# 设置 C 编写的 Lua 扩展模块的搜寻路径(也可以用 ';;')
lua_package_cpath "/data/www/code/nginx lua/config/lua_p_c/?.so;;";
# 内存共享 缓存大小5m
lua_shared_dict my_limit_store 5m;
server {
listen 8080;
location /share {
lua_code_cache off;
content_by_lua_file ./config/lua/share.lua;
charset utf-8;
}
}
}
ngxshare.lua模块
代码语言:javascript复制local _M = {}
function _M.shared_dic_get(dic, key)
local value = dic:get(key);
return value;
end
function _M.shared_dic_set(dic, key, value, exptime)
if not exptime then
exptime = 0;
end
local succ, err = dic:set(key, value, exptime);
return succ;
end
return _M
share.lua文件
代码语言:javascript复制-- 引入模块
local ngxshare = require("resty.ngxshare");
-- 设置参数
ngxshare.shared_dic_set(ngx.shared.my_limit_store, 'limit_store', 1, 0);
-- 获取参数
ngx.say(ngxshare.shared_dic_get(ngx.shared.my_limit_store, 'limit_store'));
-- 测试 http://192.168.56.2:8080/share
# 1