Redis 연동

Redis 연동

카테고리
Nest.js
날짜
2024년 07월 09일
작성자
JeongjungsikJeongjungsik
태그
redis
💡
최근 버전에서 연동하는 방식

버전

"@nestjs/cache-manager": "^2.2.2", "@types/cache-manager": "^4.0.6", "cache-manager-redis-store": "2.0.0", "@types/cache-manager-redis-store": "^2.0.4", "cache-manager": "^5.7.1",
 

install

yarn instlal @nestjs/cache-manager cache-manager-redis-store@2.0.0 yarn install -D @types/cache-manager @types/cache-manager-redis-store
💡
cache-manager-redis-store만큼은 2.0.0으로 설치줘야 한다. 그래야 redisStore에대한 타입에러가 안남.
 

코드

  • app.module.ts
// ... 생략 import { CacheModule } from '@nestjs/cache-manager'; import { CacheConfigService } from './common/cacheConfig.service'; @Module({ imports: [ // ... 생략 CacheModule.registerAsync({ isGlobal: true, useClass: CacheConfigService }), ], }) export class AppModule {}
 
  • cache-config.service
import { CacheModuleOptions, CacheOptionsFactory } from '@nestjs/cache-manager'; import { Injectable } from '@nestjs/common'; import redisStore from 'cache-manager-redis-store'; @Injectable() export class CacheConfigService implements CacheOptionsFactory { createCacheOptions(): CacheModuleOptions { const config: CacheModuleOptions = { store: redisStore, host: 'localhost', port: 6379, ttl: 60, }; return config; } }
 
💡
아래부터는 예시 코드
  • boards-resolver.ts
import { Args, Mutation, Query, Resolver } from '@nestjs/graphql'; import { BoardsService } from './boards.service'; import { CreateBoardInput } from './dto/create-board.input'; import { Cache } from 'cache-manager'; import { Inject } from '@nestjs/common'; import { CACHE_MANAGER } from '@nestjs/cache-manager'; @Resolver() export class BoardsResolver { constructor( private readonly boardsService: BoardsService, // redis관련 코드 @Inject(CACHE_MANAGER) private readonly cacheManager: Cache, ) {} // redis관련 코드 @Query(() => String, { nullable: true }) async fetchBoards(): Promise<string> { const mycache = await this.cacheManager.get('qqq'); console.log(mycache); return '캐시에서 조회 완료!!'; } // redis관련 코드 @Mutation(() => String) async createBoard( @Args('createBoardInput') createBoardInput: CreateBoardInput, ): Promise<string> { await this.cacheManager.set('qqq', createBoardInput, 0); return '캐시에 등록 완료!!'; } }
 

댓글

guest