appactive-gateway/nginx-plugin/etc/nginx/conf/lua/kv/kv_util.lua (35 lines of code) (raw):
local cjson = require("cjson.safe")
local storePath = ngx.config.prefix().."/store/"
local kvShared = ngx.shared.kv_shared_dict
if not kvShared then
ngx.log(ngx.ERR, "[kv] kv_shared_dict not found")
end
local _M = {
storePath = storePath,
kvShared = kvShared,
versionKey = "_rule_version"
}
function _M.print(msg, code)
local ret = {}
ret["code"] = code
ret["msg"] = msg
ngx.status = code
ngx.say(cjson.encode(ret))
ngx.log(ngx.WARN, "code: ", code, ", msg: ", msg)
return ngx.exit(ngx.status)
end
function _M.get(key)
local value = _M[key]
local now = ngx.now()
if not value or not value.last_update_time or now - value.last_update_time > 1 then
local new_data = kvShared:get(key)
_M[key] = { data = new_data, last_update_time = now }
return new_data
else
return value.data
end
end
function _M.raw_get(key)
return kvShared:get(key)
end
return _M