"use strict";
/**
 * ioredis客户端模块
 * @date 2022-03
 * @author 何华东
 */
Object.defineProperty(exports, "__esModule", { value: true });
exports.redisClient = exports.config = void 0;
var mslib_1 = require("mslib");
var Contants_1 = require("./Contants");
var IORedis = require("ioredis");
/**
 * 测试环境配置
 */
var test_config = {
    host: 'r-bp1qmwd11yi1ujmfbq.redis.rds.aliyuncs.com',
    port: 6379,
    password: 'Keytop123',
    database: 50
};
/**
 * 正式环境配置
 */
var prod_config = {
    host: 'r-bp117e21a00ae2e4.redis.rds.aliyuncs.com',
    port: 6379,
    password: 'Keytop123',
    database: 111
};
/**
 * 默认配置，插件默认连接本机配置，可以不用配
 */
var defaults = {};
exports.config = null;
if (Contants_1.default.IS_PROD)
    exports.config = prod_config;
else if (Contants_1.default.IS_LOCAL_DEBUG)
    exports.config = defaults;
else if (Contants_1.default.IS_TEST || Contants_1.default.IS_DEBUG)
    exports.config = test_config;
else
    exports.config = defaults;
exports.config = Object.assign(exports.config, {
    /**
        https://www.npmjs.com/package/ioredis
        默认情况下，每重试 20 次，所有挂起的命令都会被刷新并显示一个错误。这样可以确保在连接断开时命令不会永远等待。
        将 maxRetriesPerRequest 设置null为禁用此行为，并且每个命令将永远等待，直到连接再次处于活动状态（这是 ioredis v4 之前的默认行为）。
     */
    maxRetriesPerRequest: 0,
    lazyConnect: true,
    /**
        当 Redis 无法处理命令时（在ready事件之前发送），默认情况下将其添加到离线队列中，当它可以处理时执行。
        enableOfflineQueue 您可以通过将选项设置为来禁用此功能false
     */
    enableOfflineQueue: false
});
/**
 * redis客户端实例,基于ioredis插件
 */
exports.redisClient = new IORedis(exports.config);
exports.redisClient.on("error", function (error) {
    //如果服务器没有开，会一直触发异常
    if (error.code === 'ECONNREFUSED')
        return;
    mslib_1.logger.error(error);
});
//# sourceMappingURL=IORedisClient.js.map