NestJS 백엔드에 Redis 캐시 추가

3661 단어 dockerrediswebdevnode
안녕 스파르타!

이 기사에서는 Redis를 NestJS 백엔드에서 확장 가능한 캐시 시스템으로 사용하는 방법을 공유합니다.

전체 소스 코드와 문서를 사용할 수 있습니다here 🙂

이 캐시 시스템 모듈은 React/Node/MySQL 스타터의 맨 위에 추가됩니다. 이 스타터는 이미 에서 제공되었습니다.

3단어로 된 레디스



Redis는 캐시, 데이터베이스 또는 메시지 브로커(JMS 또는 RabbitMQ 등)로 사용할 수 있는 오픈 소스 인메모리 데이터 구조 저장소입니다. 중요한 애플리케이션에서도 Redis는 Redis Sentinels를 통해 고가용성을 제공하고 Redis 클러스터를 통해 자동 파티셔닝을 제공하므로 프로덕션에서 사용됩니다.

Redis를 사용하도록 NestJS 백엔드 구성



이 섹션은 NestJS의 official documentation을 웹 스타터에 적용하기 위한 맨 위에 있는 오버헤드입니다.
  • 다음 패키지를 설치해야 합니다.

  • npm install cache-manager
    npm install cache-manager-redis-store
    


  • 백엔드 환경 변수를 지정해야 합니다.

  •     export const environment = {
            ...,
            redis: {
                host: process.env.LOCAL_IP,
                port: process.env.REDIS_PORT,
                defaultTtl: 86400
            }
        };
    


  • 이제 서비스MyRedisCacheModule와 함께 NestJS 모듈MyRedisCacheService을 생성하여 cache-manager 를 통해 캐시와 상호 작용해야 합니다.
  • set : 캐시된 값을 설정할 수 있습니다.
    get : 값 검색을 허용합니다(TTL이 만료되면 정의되지 않음).
    del : 저장된 키를 삭제할 수 있습니다.

    컨트롤러 및 서비스:
  • Redis에서 캐시된 값을 얻음
  • Redis에 값을 저장함
  • 저장된 키를 삭제합니다
  • .

    컨트롤러와 서비스가 가능합니다here 🙂

    개발 환경용 Redis 설정


  • 초기 스타터docker-compose 파일은 로컬 데이터베이스(볼륨이 연결된 상태), 백엔드 및 프론트엔드를 시작합니다. docker-compose up 로 웹 앱을 시작할 때 로컬에서 redis 서버도 시작하도록 수정합니다.

  • services:
      db:
        ...
    
      back:
        ...
    
      cache:
        image: "redis:alpine"
        ports:
          - ${REDIS_PORT}:${REDIS_PORT}
        env_file: ./.env
    
      front:
        ...
    


    (선택 사항) 이 서비스에 대한 암호를 지정하려면 command: redis-server --requirepass yourpassworddocker-compose.yaml를 추가하고 백엔드redisStore: auth_pass: 'password'에도 암호를 추가할 수 있습니다.
  • .env 의 환경 변수는 docker-compose up 로 앱을 시작할 때 도커에 의해 로드됩니다. 이 파일에 사용하려는 redis 포트를 추가합니다.

  • ...
    REDIS_PORT = 6379
    ...
    


    귀하의 redis 캐시 시스템이 이제 로컬에서 활성화됩니다 🙂
    Postman으로 지난 섹션에서 만든 테스트 엔드포인트를 테스트할 수 있습니다!

    프로덕션에서 캐시 시스템을 사용하고 싶습니까? 다음 섹션으로 넘어갑시다.

    프로덕션 환경용 Redis 설정



    코드 관점에서 환경 변수를 조정하여 프로덕션 AWS ElastiCache로 라우팅하기만 하면 됩니다. Redis 인스턴스의 경우 대량의 데이터를 처리하지 않는 경우 클러스터되지 않은 모드로 충분해야 합니다. 이 단계에서 읽을 수 있는 가장 좋은 문서는 AWS for ElastiCache 에서 제공하는 훌륭한 문서입니다.

    결론



    이 모듈이 Redis 캐시로 백엔드 성능을 최적화하는 동안 시간을 ​​절약하는 데 도움이 되기를 바랍니다. 질문이 있으면 댓글 섹션에 평소와 같이 참석하겠습니다!

    연결:
  • 스타터 및 해당 모듈을 공유하는 플랫폼: Fast Modular Project
  • "Redis 및 NestJS를 사용한 확장 가능한 캐싱 시스템"모듈을 사용할 수 있습니다here.

  • 기사가 도움이 되었다면 주저하지 말고 핀과 좋아요를 눌러주세요 ❤️

    좋은 웹페이지 즐겨찾기