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.
211 lines
4.4 KiB
Lua
211 lines
4.4 KiB
Lua
local skynet = require "skynet"
|
|
require "skynet.manager"
|
|
local redis = require "skynet.db.redis"
|
|
|
|
|
|
local CMD = {}
|
|
local db = nil
|
|
|
|
|
|
function CMD.start(cnf)
|
|
DEBUG("redis slave cnf = ", DUMP(cnf))
|
|
local ok, d = pcall(redis.connect, cnf)
|
|
if ok then
|
|
db = d
|
|
-- db:flushall()
|
|
else
|
|
ERROR("---redis connect error---", inspect(cnf) )
|
|
end
|
|
skynet.fork(function()
|
|
while true do
|
|
local ping = db:ping()
|
|
-- DEBUG("ping = ", ping)
|
|
skynet.sleep(1000)
|
|
end
|
|
end)
|
|
end
|
|
|
|
function CMD.set(key, value, type, time)
|
|
if type ~= nil then
|
|
return db:set(key, value, type, time)
|
|
else
|
|
return db:set(key,value)
|
|
end
|
|
end
|
|
|
|
function CMD.expire(key, ex)
|
|
return db:expire(key, ex)
|
|
end
|
|
|
|
function CMD.get(key)
|
|
return db:get(key)
|
|
end
|
|
|
|
function CMD.hmset(key, t)
|
|
local data = {}
|
|
for k, v in pairs(t) do
|
|
table.insert(data, k)
|
|
table.insert(data, v)
|
|
end
|
|
return db:hmset(key, table.unpack(data))
|
|
end
|
|
|
|
function CMD.hmget(key, ...)
|
|
return db:hmget(key, ...)
|
|
end
|
|
|
|
function CMD.hset(key, filed, value)
|
|
return db:hset(key,filed,value)
|
|
end
|
|
|
|
function CMD.hget(key, filed)
|
|
return db:hget(key, filed)
|
|
end
|
|
|
|
function CMD.hgetall(key)
|
|
return db:hgetall(key)
|
|
end
|
|
|
|
function CMD.zadd(...)
|
|
return db:zadd(...)
|
|
end
|
|
|
|
function CMD.keys(key)
|
|
return db:keys(key)
|
|
end
|
|
|
|
function CMD.zrange(key, from, to, scores)
|
|
if not scores then
|
|
return db:zrange(key, from, to)
|
|
else
|
|
return db:zrange(key, from, to, scores)
|
|
end
|
|
end
|
|
|
|
function CMD.zincrby(key, score, member)
|
|
return db:zincrby(key, score, member)
|
|
end
|
|
|
|
function CMD.zrevrange(key, from, to, scores)
|
|
if not scores then
|
|
return db:zrevrange(key,from,to)
|
|
else
|
|
return db:zrevrange(key,from,to,scores)
|
|
end
|
|
end
|
|
|
|
function CMD.zrangebyscore(key, from, to, scores, limit, offset, count)
|
|
if not scores then
|
|
if not limit then
|
|
return db:zrangebyscore(key,from,to)
|
|
else
|
|
return db:zrangebyscore(key,from,to, limit,offset, count)
|
|
end
|
|
else
|
|
if not limit then
|
|
return db:zrangebyscore(key,from,to,scores)
|
|
else
|
|
return db:zrangebyscore(key,from,to,scores,limit, offset, count)
|
|
end
|
|
end
|
|
end
|
|
|
|
function CMD.zrevrangebyscore(key, max, min, scores, limit, offset, count)
|
|
if not scores then
|
|
if not limit then
|
|
return db:zrevrangebyscore(key, max, min)
|
|
else
|
|
return db:zrevrangebyscore(key,max, min, limit, offset, count)
|
|
end
|
|
else
|
|
if not limit then
|
|
return db:zrevrangebyscore(key,max, min,scores)
|
|
else
|
|
return db:zrevrangebyscore(key,max, min,scores,limit, offset, count)
|
|
end
|
|
end
|
|
end
|
|
|
|
function CMD.zrank(key, member)
|
|
return db:zrank(key,member)
|
|
end
|
|
|
|
function CMD.zrevrank(key, member)
|
|
return db:zrevrank(key,member)
|
|
end
|
|
|
|
function CMD.zscore(key, member)
|
|
return db:zscore(key, member)
|
|
end
|
|
|
|
function CMD.zcount(key, from, to)
|
|
return db:zcount(key,from,to)
|
|
end
|
|
|
|
function CMD.zcard(key)
|
|
return db:zcard(key)
|
|
end
|
|
|
|
function CMD.incr(key)
|
|
return db:incr(key)
|
|
end
|
|
|
|
function CMD.del(key)
|
|
return db:del(key)
|
|
end
|
|
|
|
function CMD.hexists(key )
|
|
local r = db:hexists(key)
|
|
return r == 1 and true or false
|
|
end
|
|
|
|
function CMD.exists(key)
|
|
return db:exists(key) == 1
|
|
end
|
|
|
|
function CMD.hdel(... )
|
|
return db:hdel(...)
|
|
end
|
|
|
|
function CMD.hincrby(key, field, increment)
|
|
return tonumber(db:hincrby(key, field, increment))
|
|
end
|
|
|
|
function CMD.incrby(key, increment)
|
|
return tonumber(db:incrby(key, increment))
|
|
end
|
|
|
|
function CMD.setnx(key, value)
|
|
return db:setnx(key, value) == 1
|
|
end
|
|
|
|
function CMD.hsetnx(key, field, value)
|
|
return db:hsetnx(key, field, value) == 1
|
|
end
|
|
|
|
function CMD.hkeys(key)
|
|
return db:hkeys(key)
|
|
end
|
|
|
|
function CMD.getbit(key, offset)
|
|
return db:getbit(key, offset)
|
|
end
|
|
|
|
|
|
function CMD.setbit(key, offset, value)
|
|
return db:setbit(key, offset, value)
|
|
end
|
|
|
|
|
|
function CMD.eval(...)
|
|
return db:eval(...)
|
|
end
|
|
|
|
skynet.start(function()
|
|
skynet.dispatch("lua", function(_, _, cmd, ...)
|
|
-- DEBUG("redis slave cmd = ", cmd)
|
|
local f = assert(CMD[cmd], cmd .. " not found")
|
|
skynet.retpack(f(...))
|
|
end)
|
|
end)
|