redis.ts25 lines · main
1import Redis from 'ioredis';
2
3import { env } from '../env.js';
4
5/**
6 * Lazy ioredis singleton. Mirrors apps/api/src/lib/redis.ts so behaviour is
7 * consistent across services. Returns null when the URL isn't set — every
8 * caller must gracefully skip in that case.
9 */
10let _redis: Redis | null = null;
11
12export function getRedis(): Redis | null {
13 if (!env.BRIVEN_REDIS_URL) return null;
14 if (!_redis) {
15 _redis = new Redis(env.BRIVEN_REDIS_URL, {
16 maxRetriesPerRequest: 2,
17 enableReadyCheck: true,
18 lazyConnect: false,
19 });
20 _redis.on('error', (err) => {
21 console.warn('[runtime] redis error:', err.message);
22 });
23 }
24 return _redis;
25}