You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
930 B
Lua

local skynet = require "skynet"
local redis = require "skynet.db.redis"
local util = require "store_util"
require "skynet.manager"
local traceback = debug.traceback
local tunpack = table.unpack
local tconcat = table.concat
local dbkey, index = ...
local db
local CMD = {}
function CMD.init(conf)
db = redis.connect(conf)
return true
end
function CMD.exec_one(cmd, ...)
local ok, ret = xpcall(db[cmd], traceback, db, ...)
if not ok then
assert(false, ("cmd=[%s %s] ret=[%s]"):format(cmd, tconcat({...}, " "), ret))
return
end
return ret
end
function CMD.exec(cmds)
for _, cmd in pairs(cmds) do
xpcall(CMD.exec_one, traceback, tunpack(cmd))
end
end
skynet.start(function()
skynet.dispatch("lua", function(_, _, cmd, ...)
local f = CMD[cmd]
assert(f, cmd)
skynet.retpack(f(...))
end)
end)
skynet.register(util.redis_sname(dbkey, index))