본문 바로가기

nodejs/nestjs

@nestjs-modules/ioredis로 redis queue 사용하기

redis in nestjs 로 검색하면 많은 정보가 나오는데 거의다 cache로 사용하는 예제이다.

그런데 최근에 nestjs팀에서 ioredis 전용 라이브러리를 업데이트 해주셨다.

덕분에 아주 간단하게 연결해서 사용할수 있었다. 짧게 연결 법부터 적용 방법을 기록한다 !

 

라이브러리 설치

$ yarn add @nestjs-modules/ioredis ioredis

 

연결하기

import { RedisModule } from '@nestjs-modules/ioredis';

@Module({
  imports: [
    RedisModule.forRoot({
      config: {
        url: `redis://${process.env.REDIS_HOST}:${process.env.REDIS_PORT}`,
        password: process.env.REDIS_PASSWD,
      },
    }),
    ...
  ]
})

 

의존성 주입 및 client 생성

import { InjectRedis, Redis } from '@nestjs-modules/ioredis';
import { Injectable } from '@nestjs/common';

@Injectable()
export class RedisService {
  constructor(
    @InjectRedis()
    private readonly redisClient: Redis,
  )
  
 
   example() {
     // ioredis 에서 사용하듯이 사용하면 된다 !
     const value = await this.redisClient.get('key');
   }
}

 

 

unhandled error event: error: connect etimedout 에러

잘 사용하던중에, 뜬금없이 해당 에러를 만났다.

변경한 부분은 ioredis 부분이 아닌, typeorm 설정 부분을 변경했는데 ioredis 연결이 안됐다.

forRoot를 forRootAsync 로 사용하여, 비동기식으로 옵션 값을 전달했더니 정상적으로 연결이 됐다.

    RedisModule.forRootAsync({
      useFactory: () => ({
        config: {
          url: `redis://${process.env.REDIS_HOST}:${process.env.REDIS_PORT}`,
          password: process.env.REDIS_PASSWD,
        },
      }),
    }),
반응형

'nodejs > nestjs' 카테고리의 다른 글

jwt role guard 적용기  (0) 2022.02.07
eslint-plugin-import in nestjs  (0) 2022.01.26
ip filter middleware  (0) 2021.08.26
custom repository  (0) 2021.08.24
dto에서 type 변환 적용하기  (0) 2021.08.24