123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 |
- 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)
|