我正在使用 open-resty 和 lua 创建一个用于重定向请求的服务器。重定向是基于来自 lua 数据树结构(嵌套表)的一些数据完成的
我正在寻找一种方法来在启动时填充这些数据,然后在工作人员之间共享数据。
ngx.ctx 可以保存任意数据,但仅在请求期间持续。共享字典持续到最后,但只能保存原语列表。
我读过可以跨 lua 模块共享数据。因为模块在启动时只被实例化一次。代码是这样的
local _M = {}
local data = {
dog = {"value1", "value4"},
cat = {"value2", "value5"},
pig = {"value3", "value6"}
}
function _M.get_age(name)
return data[name]
end
return _M
然后在 nginx.conf
location /lua {
content_by_lua_block {
local mydata = require "mydata"
ngx.say(mydata.get_age("dog"))
}
}
这第三种可能性线程安全吗?还有其他东西可以实现这一目标吗?
这方面的文档不多,这就是为什么在这里发布它。任何信息都会有所帮助,谢谢