"use strict";
/**
 * ioredis客户端模块
 * @date 2022-03
 * @author 何华东
 */
Object.defineProperty(exports, "__esModule", { value: true });
exports.redisClient = void 0;
var mslib_1 = require("mslib");
var typescript_ioc_1 = require("typescript-ioc");
var IORedis = require("ioredis");
var config = typescript_ioc_1.Container.getValue('config.ioredis');
/**
 * redis客户端实例,基于ioredis插件
 *
 * 如果typescript-ioc有注册配置config.ioredis，那么会自动创建该实例，否则为空
 *
 * 配置参考插件ioredis
 */
exports.redisClient = null;
if (config) {
    exports.redisClient = new IORedis(Object.assign({
        /**
            https://www.npmjs.com/package/ioredis
            默认情况下，每重试 20 次，所有挂起的命令都会被刷新并显示一个错误。这样可以确保在连接断开时命令不会永远等待。
            将 maxRetriesPerRequest 设置null为禁用此行为，并且每个命令将永远等待，直到连接再次处于活动状态（这是 ioredis v4 之前的默认行为）。
         */
        maxRetriesPerRequest: 0,
        //懒连接
        lazyConnect: true,
        //关闭离线队列
        enableOfflineQueue: false
    }, config));
    exports.redisClient.on("error", function (error) {
        //服务器连接失败,会频繁触发异常
        if (error.code === 'ECONNREFUSED')
            return;
        mslib_1.logger.error(error);
    });
}
//# sourceMappingURL=IORedisClient.js.map