Skip to main content

Redis Configuration Guide

Overview

This guide provides detailed information about configuring the Redis service for optimal performance and reliability in the Gradiant application.

Basic Configuration

  1. Set up environment variables in your .env file:
    REDIS_URL=redis://localhost:6379
    REDIS_KEY_PREFIX="gradiant:"
    
  2. Create a configuration object:
    import { RedisServiceConfig } from '@/lib/services/redis/types'
    
    const config: RedisServiceConfig = {
      url: process.env.REDIS_URL,
      keyPrefix: process.env.REDIS_KEY_PREFIX,
    }
    
  3. Initialize the service:
    import { RedisService } from '@/lib/services/redis'
    
    const redis = new RedisService(config)
    await redis.connect()
    

Configuration Options

Connection Settings

OptionDescriptionDefaultRecommended
urlRedis connection URLRequired-
keyPrefixPrefix for all keysundefined"app:"
maxRetriesMaximum retry attempts33-5
retryDelayDelay between retries (ms)10001000-5000
connectTimeoutConnection timeout (ms)50005000-10000

Connection Pool Settings

OptionDescriptionDefaultRecommended
maxConnectionsMaximum connections1010-50
minConnectionsMinimum connections22-5
healthCheckIntervalHealth check interval (ms)3000030000-60000

Environment-Specific Configurations

Development

const devConfig: RedisServiceConfig = {
  url: 'redis://localhost:6379',
  keyPrefix: 'dev:',
  maxRetries: 3,
  retryDelay: 1000,
  connectTimeout: 5000,
  maxConnections: 10,
  minConnections: 2,
  healthCheckInterval: 30000,
}

Production

const prodConfig: RedisServiceConfig = {
  url: process.env.REDIS_URL,
  keyPrefix: 'prod:',
  maxRetries: 5,
  retryDelay: 2000,
  connectTimeout: 10000,
  maxConnections: 50,
  minConnections: 5,
  healthCheckInterval: 30000,
}

Testing

const testConfig: RedisServiceConfig = {
  url: 'redis://localhost:6379',
  keyPrefix: 'test:',
  maxRetries: 1,
  retryDelay: 100,
  connectTimeout: 1000,
  maxConnections: 5,
  minConnections: 1,
  healthCheckInterval: 5000,
}

Performance Tuning

Connection Pool Sizing

The connection pool size should be configured based on your application’s needs:
const config: RedisServiceConfig = {
  // ... other options
  maxConnections: Math.max(10, Math.ceil(os.cpus().length * 2)),
  minConnections: Math.max(2, Math.ceil(os.cpus().length / 2)),
}

Health Check Configuration

Adjust health check frequency based on your reliability requirements:
const config: RedisServiceConfig = {
  // ... other options
  healthCheckInterval:
    process.env.NODE_ENV === 'production'
      ? 30000 // 30 seconds in production
      : 60000, // 1 minute in development
}