-- 相关定时器操作等
local _worker_id = ngx.worker.id()
local timer_at = ngx.timer.at
local ngx_log = ngx.log
local ngx_ERR = ngx.ERR
local redis = require "resty.redis"
redis.add_commands("flushdb")
local red
local handler_zero
local function redis_action()
red = red or redis:new()
red:set_timeout(2000) -- 2 sec
local ip = "127.0.0.1"
local Port = "6379"
local Password = "gfg3443434334"
local re, err = red:connect(ip, Port)
if not re then
return ngx_log(ngx_ERR, err)
end
local function redisKeepalive()
local ok, err = red:set_keepalive(60000, 200)
if not ok then
ngx_log(ngx_ERR,"failed to set keepalive: ",err)
end
end
-- 请注意这里 auth 的调用过程
local count, err = red:get_reused_times()
if 0 == count then
if Password ~= "" then
local re, err = red:auth(redis_mod.Password)
if not re then
local _msg = "failed to auth: "..tostring(err)
return ngx_log(ngx_ERR, _msg)
end
end
elseif err then
local _msg = "failed to get reused times: "..tostring(err)
return ngx_log(ngx_ERR, _msg)
end
local tmpbase = red:get("testaaa")
if not tmpbase then
--- do something
end
if tmpbase == ngx.null then
--- do something
end
redisKeepalive()
end
handler_zero = function ()
local _timeAt = 5
redis_action()
some_action()
local ok, err = timer_at(_timeAt, handler_zero)
if not ok then
ngx_log(ngx_ERR, "failed to startup handler_zero worker...", err)
end
end
handler = function()
if _worker_id == 0 then
handler_zero()
end
end
-- 启动立刻执行一次
local ok, err = timer_at(0, handler)
if not ok then
ngx_log(ngx_ERR, "failed to startup handler worker...", err)
end