fatty-cli-js
Version:
Fatty client for node.js
206 lines (198 loc) • 3.17 kB
JavaScript
var zerorpc = require('zerorpc-fork');
// 数据访问层客户端
var cacheClient = module.exports = function(opts) {
this.opts = opts || {};
this.opts.host = this.opts.host || '127.0.0.1';
this.opts.port = this.opts.port || 6500;
this.opts.timeout = this.opts.timeout || 5;
this.conn = new zerorpc.Client({timeout: this.opts.timeout});
this.conn.connect('tcp://' + this.opts.host + ':' + this.opts.port);
// 指定可调用的方法
var self = this;
var cmds = [
"append",
"auth",
"bgrewriteaof",
"bgsave",
"bitcount",
"bitop",
"bitpos",
"blpop",
"brpop",
"brpoplpush",
"client kill",
"client list",
"client getname",
"client pause",
"client setname",
"config get",
"config rewrite",
"config set",
"config resetstat",
"dbsize",
"debug object",
"debug segfault",
"decr",
"decrby",
"del",
"discard",
"dump",
"echo",
"eval",
"evalsha",
"exec",
"exists",
"expire",
"expireat",
"flushall",
"flushdb",
"get",
"getbit",
"getrange",
"getset",
"hdel",
"hexists",
"hget",
"hgetall",
"hincrby",
"hincrbyfloat",
"hkeys",
"hlen",
"hmget",
"hmset",
"hset",
"hsetnx",
"hvals",
"incr",
"incrby",
"incrbyfloat",
"info",
"keys",
"lastsave",
"lindex",
"linsert",
"llen",
"lpop",
"lpush",
"lpushx",
"lrange",
"lrem",
"lset",
"ltrim",
"mget",
"migrate",
"monitor",
"move",
"mset",
"msetnx",
"multi",
"object",
"persist",
"pexpire",
"pexpireat",
"pfadd",
"pfcount",
"pfmerge",
"ping",
"psetex",
"psubscribe",
"pubsub",
"pttl",
"publish",
"punsubscribe",
"quit",
"randomkey",
"rename",
"renamenx",
"restore",
"rpop",
"rpoplpush",
"rpush",
"rpushx",
"sadd",
"save",
"scard",
"script exists",
"script flush",
"script kill",
"script load",
"sdiff",
"sdiffstore",
"select",
"set",
"setbit",
"setex",
"setnx",
"setrange",
"shutdown",
"sinter",
"sinterstore",
"sismember",
"slaveof",
"slowlog",
"smembers",
"smove",
"sort",
"spop",
"srandmember",
"srem",
"strlen",
"subscribe",
"sunion",
"sunionstore",
"sync",
"time",
"ttl",
"type",
"unsubscribe",
"unwatch",
"watch",
"zadd",
"zcard",
"zcount",
"zincrby",
"zinterstore",
"zlexcount",
"zrange",
"zrangebylex",
"zrangebyscore",
"zrank",
"zrem",
"zremrangebylex",
"zremrangebyrank",
"zremrangebyscore",
"zrevrange",
"zrevrangebyscore",
"zrevrank",
"zscore",
"zunionstore",
"scan",
"sscan",
"hscan",
"zscan"
];
for (var i = 0; i < cmds.length; i++) {
(function(cmd) {
self[cmd] = function(key, value, callback) {
self.query(cmd, key, value, callback);
}
})(cmds[i]);
}
}
// 执行指令
cacheClient.prototype.query = function(cmd, key, value, callback) {
if (typeof value === 'function') {
callback = value;
value = undefined;
}
callback = callback || function() {};
var query = {};
query.cmd = cmd;
query.key = key;
if (value !== undefined) {
query.value = value;
}
this.conn.invoke('query', query, function(err, res) {
callback(err, err ? null : res);
});
}