@ashu_guo/nest-redis
TypeScript icon, indicating that this package has built-in type declarations

1.0.5 • Public • Published

Nest Logo

A progressive Node.js framework for building efficient and scalable server-side applications.

Description

ioredis utilities module for nestjs framework

Installation

$ npm i --save @ashu_guo/nest-redis

Usage

Import RedisModule:

import {RedisModule} from '@ashu_guo/nest-redis';

@Module({
    imports: [RedisModule.register({
        host: 'localhost',
        port: 6379,
        username: 'xxxxx',
        password: '*****',
    })],
    providers: [...],
})
export class UsersModule {
}

Inject RedisClient:

import {InjectRedisClient, RedisClient} from '@ashu_guo/nest-redis';

@Injectable()
export class UsersService {
    constructor(@InjectRedisClient() private readonly redisClient: RedisClient) {
    }
}

Async options

Quite often you might want to asynchronously pass your module options instead of passing them beforehand. In such case, use registerAsync() method, that provides a couple of various ways to deal with async data.

1. Use factory

@Module({
    imports: [
        RedisModule.registerAsync({
            useFactory: () => ({
                host: 'localhost',
                port: 6379,
                username: 'xxxxx',
                password: '*****',
            })
        })
    ]
})

export class AppModule {
}

Obviously, our factory behaves like every other one (might be async and is able to inject dependencies through inject).

RedisModule.registerAsync({
    imports: [ConfigModule],
    useFactory: async (configService: ConfigService) => ({
        host: configService.get<string>('REDIS_HOST'),
        port: configService.get<number>('REDIS_PORT'),
        username: configService.get<string>('REDIS_USERNAME'),
        password: configService.get<string>('REDIS_PASSWORD'),
    }),
    inject: [ConfigService],
})

2. Use class

RedisModule.registerAsync({
    useClass: RedisConfigService
});

Above construction will instantiate RedisConfigService inside RedisModule and will leverage it to create options object.

import {RedisOptionsFactory} from '@ashu_guo/nest-redis';
import {RedisOptions} from 'ioredis';

export class RedisConfigService implements RedisOptionsFactory {
    createRedisOptions(): RedisOptions {
        return {
            host: 'localhost',
            port: 6379,
            username: 'xxxxxx',
            password: '******',
        };
    }
}

3. Use existing

RedisModule.registerAsync({
    imports: [ConfigModule],
    useExisting: ConfigService,
})

It works the same as useClass with one critical difference - RedisModule will lookup imported modules to reuse already created ConfigService, instead of instantiating it on its own.

Used By

API Spec

The RedisModule takes an options object:

License

Nest is MIT licensed.

Readme

Keywords

Package Sidebar

Install

npm i @ashu_guo/nest-redis

Weekly Downloads

0

Version

1.0.5

License

MIT

Unpacked Size

17 kB

Total Files

31

Last publish

Collaborators

  • ashu_guo