| 
					
				 | 
			
			
				@@ -0,0 +1,219 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Created by chen on 2017/8/21. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+let Redis = require('ioredis'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    config=require('./config'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    redis = new Redis({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        port: config.redis_qa.port,          // Redis port 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        host: config.redis_qa.server,   // Redis host 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        family: 4,           // 4 (IPv4) or 6 (IPv6) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        password:config.redis_qa.pwd, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        db: 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+let client={}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+redis.on('ready',function(res){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    console.log('ready'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+redis.on("error", function (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    console.log("Error " + err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+client.redis = redis; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//redis.hmset('测试',{12525:55,'a':'aaaa',b:"bbbbb"}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//var stream = redis.scanStream({  match: '测*'}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/*redis.hmset('RATION',{12525:55,'a':'aaaa',b:"bbbbb"}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+redis.hgetall("RATION",function (err,result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    console.log(result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+})*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+client.scan = function(options,callback){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var stream = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if(options){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        stream = redis.scanStream(options); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        stream = redis.scanStream(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var keys = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    stream.on('data', function (resultKeys) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // `resultKeys` is an array of strings representing key names 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (var i = 0; i < resultKeys.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            keys.push(resultKeys[i]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    stream.on('end', function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        console.log('done with the keys: ', keys); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        callback(keys); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+client.set = function(key, value, expire, callback){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return redis.set(key, value, function(err, result){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            console.log(err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            callback(err,null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!isNaN(expire) && expire > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            redis.expire(key, parseInt(expire)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(callback){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            callback(null,result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+client.get = function(key, callback){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return redis.get(key, function(err,result){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            console.log(err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            callback(err,null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(callback){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            callback(null,result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+client.hmset = function(key, value, expire, callback){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return redis.hmset(key, value, function(err, result){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            console.log(err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            callback(err,null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!isNaN(expire) && expire > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            redis.expire(key, parseInt(expire)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(callback){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            callback(null,result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+client.hmget = function (key,fields,callback) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return redis.hmget(key,fields,function(err,result){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            console.log(err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            callback(err,null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(callback){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            callback(null,result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+client.hgetall = function (key,callback) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return redis.hgetall(key,function (err,result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            console.log(err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            callback(err,null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        callback(null,result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+client.hscan = function (key,options) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var stream = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if(options){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        stream = redis.hscanStream(key,options); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        stream = redis.hscanStream(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var fields = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    stream.on('data', function (resultFields) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // `resultKeys` is an array of strings representing key names 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (var i = 0; i < resultFields.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fields.push(resultFields[i]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    stream.on('end', function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        console.log('done with the keys: ', fields); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        callback(fields); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+client.rpush = function(key,value,expire, callback){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return redis.rpush(key, value, function(err, result){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            console.log(err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            callback(err,null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!isNaN(expire) && expire > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            redis.expire(key, parseInt(expire)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(callback){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            callback(null,result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+client.lrange= function (key,start,end,callback) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   return redis.lrange(key,start,end,callback);//获取列表在给定范围上的所有值 array lrange('key', 0, -1) (返回所有值) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+client.lindex =function (key,index,callback) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return redis.lindex(key,index,callback);//获取列表在给定位置上的单个元素 lindex('key', 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+client.lpop = function (key,callback) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return redis.lpop(key,callback);//从列表左端弹出一个值,并返回被弹出的值lpop('key') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+client.rpop = function (key,callback) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return redis.rpop(key,callback);//从列表右端弹出一个值,并返回被弹出的值rpop('key') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+client.ltrim = function (key,start,end,callback) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return redis.ltrim(key,start,end,callback);//将列表按指定的index范围裁减 ltrim('key', 'start', 'end') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+client.del = function (keys,callback) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return redis.del(keys,callback);// 删除一个(或多个)keys return 被删除的keys的数量  del('key1'[, 'key2', ...]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+client.exists = function (key,callback) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return redis.exists(key,callback);// 查询一个key是否存在  1/0 exists('key') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+client.multi = function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return redis.multi();//用于开启一个事务,它总是返回 OK 。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+client.exec =function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   return redis.exec();//执行所有事务块内的命令 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+client.application_init = function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    redis.flushdb();//清空所有keys 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // load datas -- to do 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /*data=[{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     method:'hmset', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     key:'ration:25555', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     value:{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     name:'aaa', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     quantily:255 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     expire:2000,//options 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     callback:function, //option 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     }] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     for(let data of datas){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     client[data.method](data.key,data.value,data.expire,data.callback); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+module.exports = client 
			 |