const _ = require('lodash'); const redis = require('redis'); const bluebird = require('bluebird'); const config = require('../config/common'); const monitor = global.yoho.monitorSender; let client; const timeout = 200; // redis 操作超时时间 try { client = redis.createClient(config.redis.connect); bluebird.promisifyAll(redis.RedisClient.prototype); bluebird.promisifyAll(redis.Multi.prototype); const monitorType = _.get(monitor, 'type.REDIS'); client.all = args => { if (!client.ready) { if (Array.isArray(args)) { return Promise.resolve(_.fill(args, false)); } else { return Promise.resolve(false); } } return client.multi.call(client, args).execAsync().timeout(timeout).then(res => { monitor && monitor.tallySuccess(monitorType); return res; }).catch((e)=>{ monitor && monitor.tallyFail(monitorType, e); return false; }); }; client.on('error', function() { global.yoho.redis = ''; }); client.on('connect', function() { global.yoho.redis = client; }); } catch (e) { global.yoho.redis = ''; } module.exports = client;