Я работаю с open-resty и lua, чтобы создать сервер для перенаправления запросов. Перенаправления выполняются на основе некоторых данных из структуры дерева данных lua (вложенные таблицы).
Я ищу способ заполнить эти данные один раз при запуске, а затем поделиться данными между работниками.
ngx.ctx может сохранять произвольные данные, но сохраняется только во время запроса. Shared dict длится до конца, но может сохранять только список примитивов.
Я читал, что можно обмениваться данными между модулями 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"))
}
}
Потокобезопасна ли эта третья возможность? Есть ли что-то еще, что может достичь этого?
Документации по этому поводу не так много, поэтому разместил ее здесь. Любая информация поможет, спасибо