跳转至

NPM Downloads Stargazers Issues Vulnerabilities [License]license-url

Nest Logo

Nest Redis Health Module

Redis(ioredis) health checks module for Nest framework (node.js).
Explore the docs »

Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Settings
  5. License
  6. Package dependency overview

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

Statements Branches Functions Lines
Statements Branches Functions Lines

Getting Started

Prerequisites

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

Installation

1
2
3
4
5
6
# with npm
npm install @nestjs/terminus @liaoliaots/nestjs-redis-health ioredis
# with yarn
yarn add @nestjs/terminus @liaoliaots/nestjs-redis-health ioredis
# with pnpm
pnpm add @nestjs/terminus @liaoliaots/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 "@liaoliaots/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 "@liaoliaots/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

Name Type Default Required Description
type 'redis' undefined true Server type. You must specify what Redis server type you use. Possible values are "redis", "cluster".
client Redis undefined true The client which the health check should get executed.
timeout number 1000 false The amount of time the check should require in ms.
memoryThreshold number undefined false The maximum amount of memory used by redis in bytes.

Cluster

Name Type Default Required Description
type 'cluster' undefined true Server type. You must specify what Redis server type you use. Possible values are "redis", "cluster".
client Cluster undefined true The client which the health check should get executed.

License

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