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