Redis(ioredis & node-redis) module for Nest framework (node.js).
Explore the docs »
View Demos
·
Report Bug
·
Request Feature
Table of Contents
This project is forked from liaoliaots/nestjs-redis.
- Both redis & cluster are supported: You can also specify multiple instances.
- Health: Checks health of redis & cluster server.
- Rigorously tested: With 100+ tests and 100% code coverage.
- Services: Retrieves redis & cluster clients via
RedisManager,ClusterManager. - Multiple Redis clients: Support for ioredis only.
- Health checks: Dedicated health check module for Redis monitoring.
| Statements | Branches | Functions | Lines |
|---|---|---|---|
This lib requires Node.js >=16.13.0, NestJS ^10.0.0, ioredis ^5.0.0 or redis ^5.6.0.
- If you depend on ioredis 5 & NestJS 10, please use version 10 of the lib.
- If you depend on ioredis 5 & NestJS 9, please use version 9 of the lib.
- If you depend on ioredis 5, NestJS 7 or 8, please use version 8 of the lib.
- If you depend on ioredis 4, please use version 7 of the lib.
# with npm
npm install @nestjs-labs/nestjs-ioredis ioredis
# with yarn
yarn add @nestjs-labs/nestjs-ioredis ioredis
# with pnpm
pnpm add @nestjs-labs/nestjs-ioredis ioredis# with npm
npm install @nestjs-labs/nestjs-redis redis
# with yarn
yarn add @nestjs-labs/nestjs-redis redis
# with pnpm
pnpm add @nestjs-labs/nestjs-redis redis# with npm
npm install @nestjs/terminus @nestjs-labs/nestjs-redis-health ioredis
# with yarn
yarn add @nestjs/terminus @nestjs-labs/nestjs-redis-health ioredis
# with pnpm
pnpm add @nestjs/terminus @nestjs-labs/nestjs-redis-health ioredisThis monorepo contains three main packages:
Redis(ioredis) module for Nest framework (node.js).
Features:
- Full ioredis support with all features
- Redis cluster support
- Sentinel support
- Multiple instances support
- Comprehensive testing with 100% coverage
Installation:
npm install @nestjs-labs/nestjs-ioredis ioredisQuick Start:
import { Module } from '@nestjs/common';
import { RedisModule } from '@nestjs-labs/nestjs-ioredis';
@Module({
imports: [
RedisModule.forRoot({
config: {
host: 'localhost',
port: 6379,
password: 'authpassword'
}
}),
],
})
export class AppModule {}Redis(node-redis) module for Nest framework (node.js).
Features:
- Official node-redis client support
- Modern Redis client with latest features
- TypeScript support
- Simple and clean API
Installation:
npm install @nestjs-labs/nestjs-redis redisQuick Start:
import { Module } from '@nestjs/common';
import { RedisModule } from '@nestjs-labs/nestjs-redis';
@Module({
imports: [
RedisModule.forRoot({
url: 'redis://localhost:6379',
}),
],
})
export class AppModule {}Redis health checks module for Nest framework (node.js).
Features:
- Health checks for both Redis and Redis Cluster
- Integration with @nestjs/terminus
- Memory threshold monitoring
- Timeout configuration
- Comprehensive health indicators
Installation:
npm install @nestjs/terminus @nestjs-labs/nestjs-redis-health ioredisQuick Start:
import { Module } from '@nestjs/common';
import { TerminusModule } from '@nestjs/terminus';
import { RedisHealthModule } from '@nestjs-labs/nestjs-redis-health';
@Module({
imports: [TerminusModule, RedisHealthModule],
})
export class AppModule {}- version 7, click here
- version 8, click here
Click to expand
A circular dependency might also be caused when using "barrel files"/index.ts files to group imports. Barrel files should be omitted when it comes to module/provider classes. For example, barrel files should not be used when importing files within the same directory as the barrel file, i.e. cats/cats.controller should not import cats to import the cats/cats.service file. For more details please also see this github issue.
Click to expand
If you encountered an error like this:
Nest can't resolve dependencies of the <provider> (?). Please make sure that the argument <unknown_token> at index [<index>] is available in the <module> context.
Potential solutions:
- If <unknown_token> is a provider, is it part of the current <module>?
- If <unknown_token> is exported from a separate @Module, is that module imported within <module>?
@Module({
imports: [ /* the Module containing <unknown_token> */ ]
})
Please make sure that the RedisModule is added directly to the imports array of @Module() decorator of "Root Module"(if isGlobal is true) or "Feature Module"(if isGlobal is false).
Examples of code:
// redis-config.service.ts
import { Injectable } from '@nestjs/common';
import { RedisModuleOptions, RedisOptionsFactory } from '@nestjs-labs/nestjs-ioredis';
@Injectable()
export class RedisConfigService implements RedisOptionsFactory {
createRedisOptions(): RedisModuleOptions {
return {
readyLog: true,
config: {
host: 'localhost',
port: 6379,
password: 'authpassword'
}
};
}
}// app.module.ts
import { Module } from '@nestjs/common';
import { RedisModule } from '@nestjs-labs/nestjs-ioredis';
import { RedisConfigService } from './redis-config.service';
@Module({
imports: [
RedisModule.forRootAsync({
useClass: RedisConfigService
})
]
})
export class AppModule {}// my-redis.module.ts
import { Module } from '@nestjs/common';
import { RedisModule } from '@nestjs-labs/nestjs-ioredis';
import { RedisConfigService } from './redis-config.service';
@Module({
imports: [
RedisModule.forRootAsync({
useClass: RedisConfigService
})
]
})
export class MyRedisModule {}// app.module.ts
import { Module } from '@nestjs/common';
import { MyRedisModule } from './my-redis.module';
@Module({
imports: [MyRedisModule]
})
export class AppModule {}Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.