| 1 | import { createClient } from 'redis' |
| 2 | |
| 3 | export const buildRedisClientOptions = (): Parameters<typeof createClient>[0] => { |
| 4 | const keepAliveRaw = process.env.REDIS_KEEP_ALIVE |
| 5 | const keepAliveMs = keepAliveRaw && !isNaN(parseInt(keepAliveRaw, 10)) ? parseInt(keepAliveRaw, 10) : undefined |
| 6 | |
| 7 | if (process.env.REDIS_URL) { |
| 8 | return { |
| 9 | url: process.env.REDIS_URL, |
| 10 | socket: { keepAlive: keepAliveMs }, |
| 11 | pingInterval: keepAliveMs |
| 12 | } |
| 13 | } |
| 14 | |
| 15 | return { |
| 16 | username: process.env.REDIS_USERNAME || undefined, |
| 17 | password: process.env.REDIS_PASSWORD || undefined, |
| 18 | socket: { |
| 19 | host: process.env.REDIS_HOST || 'localhost', |
| 20 | port: parseInt(process.env.REDIS_PORT || '6379'), |
| 21 | tls: process.env.REDIS_TLS === 'true', |
| 22 | cert: process.env.REDIS_CERT ? Buffer.from(process.env.REDIS_CERT, 'base64') : undefined, |
| 23 | key: process.env.REDIS_KEY ? Buffer.from(process.env.REDIS_KEY, 'base64') : undefined, |
| 24 | ca: process.env.REDIS_CA ? Buffer.from(process.env.REDIS_CA, 'base64') : undefined, |
| 25 | keepAlive: keepAliveMs |
| 26 | }, |
| 27 | pingInterval: keepAliveMs |
| 28 | } |
| 29 | } |
| 30 | |
| 31 | /** |
| 32 | * Convenience wrapper that returns a fresh, **un-connected** node-redis client built |