✅오늘학습 Keyword
2023.06.05 - [프로젝트] - 230607 실전프로젝트8 [Node.js/Nest.js_redis 적용하기]
레디스를 어떻게 연동시켜야하는지까지 방법을 파악했고 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
레디스를 애플리케이션에 통합하기 위해서, 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 |