前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >lua常用的工具类封装汇总

lua常用的工具类封装汇总

作者头像
友儿
发布2022-09-13 15:58:37
5950
发布2022-09-13 15:58:37
举报
文章被收录于专栏:友儿
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
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Lua引用模块与包点击查看菜鸟教程
  • 字符串分割(strsplit.lua)
  • nginx 共享缓存get以及set
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档