import { createLoggerBundle } from '@gongt/ts-stl-library/debug/create-logger'; import { createClient, RedisClient } from 'redis'; import { pushInitList } from '../boot/app-wait-start'; export interface RedisConfig { db: string|number; host: string; password?: string; port?: number; } const logger = createLoggerBundle('redis'); let guid = 0; export function connectToRedis({port, host, password, db}: RedisConfig): RedisClient { const client = createClient({ port, host, password, db, retry_strategy(options) { setTimeout(() => { process.exit(1); }, 1000); console.error(options.error); logger.error('redis client connect error:', options.error); if (options.error) { return new Error('redis connect fail: ' + options.error.code); } return new Error('redis disconnect - unknown reason.'); }, }); client.on('error', function (err) { logger.error('redis client issue error:', err); console.error(err); }); pushInitList('redis[' + guid + ']@' + host, new Promise((resolve, reject) => { client.on('error', reject); client.on('connect', () => resolve()); })); guid++; return client; }