✅오늘학습 Keyword
2023.06.05 - [프로젝트] - 230607 실전프로젝트8 [Node.js/Nest.js_redis 적용하기]
230607 실전프로젝트8 [Node.js/Nest.js_redis 적용하기]
✅오늘학습 Keyword 2023.06.05 - [개념정리, 유용한팁] - Redis란 무엇인가? 윈도우에서 Redis 설치하기 Redis란 무엇인가? 윈도우에서 Redis 설치하기 ✅Redis를 써보고자 한 이유 2023.06.05 - [분류 전체보기] -
veritas-crystal.tistory.com
레디스를 어떻게 연동시켜야하는지까지 방법을 파악했고 db가 정상적으로 저장되는지 확인해야한다.
✅오늘 겪은 문제
1. import 할 CacheModule, CACHE_MANAGER가 version에 따라 다른 library에서 다른 이름으로 추출된다.
version에 맞게 수정해줬더니 해결되었다.
수정 전
수정 후
2. db연결 문제..
redis-cli로 monitor하여 살펴보면 연결은 제대로 되고 있는데, 여전히 db가 실제로 저장되진 않는다.
정말 많은 시도를 해봤지만 이 문제는 계속 해결하지 못하고있다 ..
모듈에서 redis 연결 부분에 useFactory를 빼보기도, 넣어보기도 하고 registerAsync로 했다가 지워보기도 하고 구글링해서 찾아본 모든 방법을 총 동원했으나 연결이 되지않고있다. cache-manager, cache-manager-redis-store 의 버전도 낮춰봤지만 안된다.
monitor를 켜놓고 애플리케이션에서 db를 지정해줬더니 아래와 같이 출력됐다.
확실히 연결은 되어 있는 것 같다!
✅오늘 알게된 점 및 추후 학습 계획
우선 redis 연결문제는 나 혼자서 도저히 해결이 안될 것 같단 생각이 들어서 팀원들과 본격적으로 논의해보고 찾아보기로 했다. 대체 왜 연결이 안될까 .. . 하지만 한편으론 이런 에러들을 겪으면서 redis 연결에 대해 좀 더 자세히 파악하게 된 것 같아서 좋다~~
1. nest.js에서 redis 연동과정
https://docs.nestjs.com/techniques/caching
Documentation | NestJS - A progressive Node.js framework
Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Rea
docs.nestjs.com
레디스를 애플리케이션에 통합하기 위해서, cache-manager-redis-store라는 패키지를 설치한다.
# npm i cache-manager-redis-store
레디스의 store를 지정해줌 (저장소의 호스트, 포트)
redisStore from 'cache-manager-redis-store
Redis
- 데이터의 원래 소스보다 더 빠르게 액세스할 수 있는 임시 데이터 저장소
- 주로 변하지 않는 데이터, 반복적으로 액세스하는 같은 데이터를 캐시에 저장
- 단순한 key-value 구조
- In-memory 데이터 저장소
- 서버 재시작 시 모든 데이터 유실
- 복제 기능을 사용해도 실수 발생 시 데이터 복원 불가💀
- Redis를 캐시 이외의 용도로 사용한다면 적절한 데이터 백업이 필요
- 데이터를 영구 저장하는 방법
- RDB
- 바이너리 파일 형태로 저장된다.
- 저장 당시 메모리에 있는 데이터 그대로를 사진 찍듯이 snapshot 방식으로 저장
- 자동 👉 redis.conf 파일에서 SAVE 옵션(시간 기준)
- 수동 👉 BGSAVE 커맨드를 이용해 cli 창에서 수동으로 RDB 파일 저장
- SAVE 커맨드는 절대 사용 ❌
- AOF(Append Only File)
- 모든 명령어를 다 저장
- Redis 프로토콜 형태로 저장된다.
- 자동 👉 redis.conf 파일에서 auto-aof-rewrite-percentage 옵션(크기 기준)
- 수동 👉 BGREWRITEAOF 커맨드를 이용해 CLI 창에서 수동으로 AOF 파일 재작성
- RDB
https://pika-chu.tistory.com/1554
2. nest.js에서 Dto와 entity의 차이는?
DTO-데이터의 전송과 관련된 로직을 캡슐화하기 위해 사용된다. 주로 클라이언트와 서버간의 데이터교환에 사용되며, API 요청 및 응답에 대한 데이터를 정의하고 유효성 검사등의 데이터 변환 등을 처리한다.
ENTITY-데이터베이스의 테이블이나 컬렉션과 관련된 모델을 나타낸다. 주로 데이터의 영구 저장 및 검색을 위해 사용된다.
즉 서로 다른 역할을 하는 것이며, 데이터의 전송과 관련된 로직은 DTO에, 데이터베이스와의 상호작용은 ENTITY에 집중된다.
'개발 > 프로젝트-식당 웨이팅 앱 FOOD LINE' 카테고리의 다른 글
230612 실전프로젝트12 [Node.js/Nest.js_redis 적용하기4] (0) | 2023.06.12 |
---|---|
230610 실전프로젝트11 [Node.js/Nest.js_redis 적용하기3] (0) | 2023.06.10 |
230607 실전프로젝트9 [Node.js/Nest.js_redis 적용하기] (0) | 2023.06.05 |
230603 실전프로젝트8 [Node.js/Nest.js_sort별 목록조회 api 보완] (0) | 2023.06.05 |
230602 실전프로젝트7 [Node.js/Nest.js_sort별 목록조회, 에러] (0) | 2023.06.03 |