Table of Contents
-
About The Project
-
Getting Started
- Usage
- FAQs
- Roadmap
- Contributing
- License
- Acknowledgments
About The Project
Features
- 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
.
Test coverage
Statements |
Branches |
Functions |
Lines |
|
|
|
|
Getting Started
Prerequisites
This lib requires Node.js >=16.13.0, NestJS ^10.0.0, ioredis ^5.0.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.
Node-Redis
If you prefre node-redis, check out [this guide](), but it is in working progress.
Installation
# with npm
npm install @liaoliaots/nestjs-redis ioredis
# with yarn
yarn add @liaoliaots/nestjs-redis ioredis
# with pnpm
pnpm add @liaoliaots/nestjs-redis ioredis
Usage
Legacy
FAQs
Circular dependency ⚠️
Click to expand
[A circular dependency](https://docs.nestjs.com/fundamentals/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](https://github.com/nestjs/nest/issues/1181#issuecomment-430197191).
"Cannot resolve dependency" error
Click to expand
If you encountered an error like this:
```
Nest can't resolve dependencies of the (?). Please make sure that the argument at index [] is available in the context.
Potential solutions:
- If is a provider, is it part of the current ?
- If is exported from a separate @Module, is that module imported within ?
@Module({
imports: [ /* the Module containing */ ]
})
```
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:
```ts
// redis-config.service.ts
import { Injectable } from '@nestjs/common';
import { RedisModuleOptions, RedisOptionsFactory } from '@liaoliaots/nestjs-redis';
@Injectable()
export class RedisConfigService implements RedisOptionsFactory {
createRedisOptions(): RedisModuleOptions {
return {
readyLog: true,
config: {
host: 'localhost',
port: 6379,
password: 'authpassword'
}
};
}
}
```
### ✅ Correct
```ts
// app.module.ts
import { Module } from '@nestjs/common';
import { RedisModule } from '@liaoliaots/nestjs-redis';
import { RedisConfigService } from './redis-config.service';
@Module({
imports: [
RedisModule.forRootAsync({
useClass: RedisConfigService
})
]
})
export class AppModule {}
```
### ❌ Incorrect
```ts
// my-redis.module.ts
import { Module } from '@nestjs/common';
import { RedisModule } from '@liaoliaots/nestjs-redis';
import { RedisConfigService } from './redis-config.service';
@Module({
imports: [
RedisModule.forRootAsync({
useClass: RedisConfigService
})
]
})
export class MyRedisModule {}
```
```ts
// app.module.ts
import { Module } from '@nestjs/common';
import { MyRedisModule } from './my-redis.module';
@Module({
imports: [MyRedisModule]
})
export class AppModule {}
```
Contributing
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
License
Distributed under the MIT License. See LICENSE
for more information.
Acknowledgments