shared.dict 非队列性质
非队列性质
-- [ngx.thread.spawn](https://github.com/openresty/lua-nginx-module#ngxthreadspawn) #1 存储线程,理解为生产者
....
local cache_str = string.format([[%s&%s&%s&%s&%s&%s&%s]], net, name, ip,
mac, ngx.var.remote_addr, method, md5)
local ok, err = ngx_nf_data:safe_set(mac, cache_str, 60*60) --这些是缓存数据
if not ok then
ngx.log(ngx.ERR, "stored nf report data error: "..err)
end
....
-- [ngx.thread.spawn](https://github.com/openresty/lua-nginx-module#ngxthreadspawn) #2 读取线程,理解为消费者
while not ngx.worker.exiting() do
local keys = ngx_share:get_keys(50) -- 一秒处理50个数据
for index, key in pairs(keys) do
str = ((nil ~= str) and str..[[#]]..ngx_share:get(key)) or ngx_share:get(key)
ngx_share:delete(key) --干掉这个key
end
.... --一些消费过程,看官不要在意
ngx.sleep(1)
end问题解决
Last updated