Configure Redis Publisher and Subscriber

Create src/config/redis.js.

We need two Redis connections because the adapter uses Pub/Sub.

The publisher client sends messages, while the subscriber client listens for messages.

The subscriber is created by duplicating the publisher client configuration.

src/config/redis.js
import { createClient } from 'redis';

const redisUrl = process.env.REDIS_URL || 'redis://localhost:6379';

export const pubClient = createClient({
  url: redisUrl
});

export const subClient = pubClient.duplicate();

pubClient.on('error', (error) => {
  console.error('Redis publisher error:', error);
});

subClient.on('error', (error) => {
  console.error('Redis subscriber error:', error);
});

export async function connectRedis() {
  await Promise.all([
    pubClient.connect(),
    subClient.connect()
  ]);

  console.log('Redis publisher and subscriber connected');
}

Creates separate publisher and subscriber clients, registers error listeners, and exposes a connection function.

Key Takeaways
  • The Redis adapter requires publisher and subscriber connections.

  • The subscriber can be created using duplicate().

  • Wait for Redis connections before starting the application.