import IORedis, { Redis } from 'ioredis' function fixUrl(url: string) { if (!url) { return '' } if (url.startsWith('redis://') && !url.startsWith('redis://:')) { return url.replace('redis://', 'redis://:') } if (url.startsWith('rediss://') && !url.startsWith('rediss://:')) { return url.replace('rediss://', 'rediss://:') } return url } class ClientRedis { static instance: Redis constructor() { throw new Error('Use Singleton.getInstance()') } static getInstance(): Redis | null { if (!ClientRedis.instance) { ClientRedis.instance = new IORedis(fixUrl(process.env.REDIS_URL!)) } return ClientRedis.instance } } export default ClientRedis.getInstance()