10.0.0 • Published 10 months ago

@songkeys/nestjs-redis-health v10.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

NPM Downloads Stargazers Issues Vulnerabilities License

About The Project

Features

  • Both redis & cluster are supported.
  • Health: Checks health of redis & cluster server.
  • Rigorously tested: With 20+ tests and 100% code coverage.

Test coverage

StatementsBranchesFunctionsLines
StatementsBranchesFunctionsLines

Getting Started

Prerequisites

This lib requires Node.js >=12.22.0, NestJS ^9.0.0, ioredis ^5.0.0.

Installation

# with npm
npm install @nestjs/terminus @songkeys/nestjs-redis-health ioredis
# with yarn
yarn add @nestjs/terminus @songkeys/nestjs-redis-health ioredis
# with pnpm
pnpm add @nestjs/terminus @songkeys/nestjs-redis-health ioredis

Usage

1, import TerminusModule and RedisHealthModule into the imports array:

// app.module.ts
import { Module } from '@nestjs/common';
import { TerminusModule } from '@nestjs/terminus';
import { RedisHealthModule } from '@songkeys/nestjs-redis-health';
import { AppController } from './app.controller';

@Module({
  imports: [TerminusModule, RedisHealthModule],
  controllers: [AppController]
})
export class AppModule {}

2, let's setup AppController:

// app.controller.ts
import { Controller, Get } from '@nestjs/common';
import { HealthCheckService, HealthCheck, HealthCheckResult } from '@nestjs/terminus';
import { RedisHealthIndicator } from '@songkeys/nestjs-redis-health';
import Redis from 'ioredis';

@Controller()
export class AppController {
  private readonly redis: Redis;

  constructor(private readonly health: HealthCheckService, private readonly redisIndicator: RedisHealthIndicator) {
    this.redis = new Redis({ host: 'localhost', port: 6379, password: 'authpassword' });
  }

  @Get('health')
  @HealthCheck()
  async healthChecks(): Promise<HealthCheckResult> {
    return await this.health.check([
      () => this.redisIndicator.checkHealth('redis', { type: 'redis', client: this.redis, timeout: 500 })
    ]);
  }
}

3, if your redis server is reachable, you should now see the following JSON-result when requesting http://localhost:3000/health with a GET request:

{
  "status": "ok",
  "info": {
    "redis": {
      "status": "up"
    }
  },
  "error": {},
  "details": {
    "redis": {
      "status": "up"
    }
  }
}

INFO: Read more about @nestjs/terminus here.

HINT: Both TerminusModule and RedisHealthModule are not global modules.

Settings

Redis

NameTypeDefaultRequiredDescription
type'redis'undefinedtrueServer type. You must specify what Redis server type you use. Possible values are "redis", "cluster".
clientRedisundefinedtrueThe client which the health check should get executed.
timeoutnumber1000falseThe amount of time the check should require in ms.
memoryThresholdnumberundefinedfalseThe maximum amount of memory used by redis in bytes.

Cluster

NameTypeDefaultRequiredDescription
type'cluster'undefinedtrueServer type. You must specify what Redis server type you use. Possible values are "redis", "cluster".
clientClusterundefinedtrueThe client which the health check should get executed.

License

Distributed under the MIT License. See LICENSE for more information.