A comprehensive Redis health indicator for NestJS applications using the Terminus health check library
npm install @nestjs-redis/health-indicator
Redis health indicator for NestJS with first-class Terminus integration.




 
---
- Plug-and-play Terminus health checks
- Works with existing @nestjs-redis/client connections
- Supports multiple Redis instances
- Type-safe, production-ready
``bash`
npm install @nestjs-redis/health-indicator @nestjs-redis/client redis
The recommended approach is to use RedisModule from @nestjs-redis/client so Redis connections are lifecycle-managed by Nest (connect/disconnect with your app). Alternatively, you can pass your own Redis client (e.g. created with createClient() from redis) and manage its lifecycle yourself.
`typescript
// app.module.ts
import { Module } from '@nestjs/common';
import { TerminusModule } from '@nestjs/terminus';
import { RedisModule } from '@nestjs-redis/client';
import { RedisHealthIndicator } from '@nestjs-redis/health-indicator';
@Module({
imports: [
RedisModule.forRoot({
type: 'client',
options: { url: 'redis://localhost:6379' },
}),
TerminusModule,
],
providers: [RedisHealthIndicator],
})
export class AppModule {}
`
`typescript
// health.controller.ts
import { Controller, Get } from '@nestjs/common';
import { HealthCheck, HealthCheckService } from '@nestjs/terminus';
import { InjectRedis } from '@nestjs-redis/client';
import { RedisHealthIndicator } from '@nestjs-redis/health-indicator';
import type { RedisClientType } from 'redis';
@Controller('health')
export class HealthController {
constructor(
private readonly health: HealthCheckService,
private readonly redis: RedisHealthIndicator,
@InjectRedis() private readonly redisClient: RedisClientType,
) {}
@Get()
@HealthCheck()
check() {
return this.health.check([
() => this.redis.isHealthy('redis', { client: this.redisClient }),
]);
}
}
`
`typescript
@Controller('health')
export class HealthController {
constructor(
private readonly health: HealthCheckService,
private readonly redis: RedisHealthIndicator,
@InjectRedis() private readonly mainRedis: RedisClientType,
@InjectRedis('cache') private readonly cacheRedis: RedisClientType,
) {}
@Get()
@HealthCheck()
check() {
return this.health.check([
() => this.redis.isHealthy('redis-main', { client: this.mainRedis }),
() => this.redis.isHealthy('redis-cache', { client: this.cacheRedis }),
]);
}
}
``
- Root repo: CSenshi/nestjs-redis
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Please see the root contributing guidelines.
MIT © CSenshi