UNPKG

@srsl/tools

Version:

JavaScript tools for common interfaces

32 lines (29 loc) 896 B
const bluebird = require('bluebird') const { createClient, RedisClient, Multi } = require('redis') const { sleep } = require('../utils') module.exports = async ( attempts = Infinity, interval = 3000, onError = (e) => console.error('[Redis] Connection Error', e), host = process.env.REDIS_HOST, port = process.env.REDIS_PORT ) => { console.log(`[Redis] Connecting to redis host ${host}:${port}...`) try { /* Use promises for Redis methods */ bluebird.promisifyAll(RedisClient.prototype) bluebird.promisifyAll(Multi.prototype) const client = await createClient({ host, port, }) client.on('error', err => console.error('[Redis] Error:', err)) console.log('[Redis] Connected.') return client } catch (e) { onError(e) await sleep(interval) if (attempts === 0) return onError() return run(attempts, interval, onError) } }