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 |