daemonize yes
pidfile /var/run/redis.pid
timeout 0
tcp-keepalive 0
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
dbfilename dump.rdb
dir DBSTORE
logfile DBLOG
port PORT
bind 127.0.0.1 local redis = require "resty.redis"
ip = "127.0.0.1"
port = g_env.db_port
db_cache = {}
setmetatable(db_cache, {__mode="kv"})
get = function()
local co = coroutine.running()
local db = db_cache[co]
if db then
if db:ping() ~= "PONG" then
db = nil
print("[DB] connection closed, remove it")
end
end
if not db then
db = redis:new()
db:set_timeout(0)
local ok, err = db:connect(ip, port)
if not ok then
print("[DB] connect fail",ip,port,err)
return
end
db_cache[co] = db
end
return db
end recv = function( key, timeout )
local db = redis.get()
if not db then return false, "can't open db" end
--timeout = timeout or 10
print("chan.recv for", key, timeout, os.daytime())
local msg, err = db:blpop( key, timeout or 0 )
if err then
printf("[DB] err:%s when read channel; %s", err, os.daytime())
return false, err
end
if db_null(msg) then
return true, nil
else
print("chan.recv get", unpack(msg))
return true, msg[2]
end
end