1. Redis 란?
: Key value 기반의 data 저장소(nosql) 이자, pub sub 이 지원 되는 Message Queue
2. 주요 특징
- Key, Value 구조에 TTL 세팅 가능
- 인메모리 기반 데이터저장소(속도가 빠름)
- String, Lists, Sets, Sorted Sets, Hashes 등의 다양한 자료 구조 지원
3. 속도비교
: 1ns(nano seconds) 는? 10의 -9승 = 0.000000001 초
(redis는 100ns!!)
1µs(microsecond) = 0.000001초.
RDB(Postgresql기준)는 1ms(millisecond) = 0.001 초
4. redis 자료구조
1) String
2) Sets
3) Sorted Sets
4) Hashes
5. Redis 공식 자료
https://redis.io/docs/latest/develop/get-started/
Quick starts
Redis quick start guides
redis.io
6. Redis docker 로 띄우기
#docker file
FROM redis:7.2.5-alpine3.20
EXPOSE 6379
CMD ["redis-server"]
(파일명의 확장자는 yaml 이다)
1) 먼저 빌드를 해주자!! (docker image 로 띄우는 과정이다)
docker build -f DockerFile.yaml . -t redis
2) 도커이미지를 실행하자 (컨테이너를 생성하는 단계이다.)
sudo docker run -p 6379:6379 redis
이렇게 하면 도커 컨테이너 까지 만들어졌을것이다.
(그냥 사용하면 된다는 소리다)
내부 6379를 외부 6379포트로 연결해서 띄웠기 때문에, localhost:6379 로 접속하면 연결이 될 것이다!
3) 추가로, redis 내부에 접속하고자 한다면, 아래의 명령어를 실행해서 redis cli 로 접속할 수 있다
docker exec -it ~~~~ /bin/sh
redis-cli
7. Nest js 에서 redis 연동
1) redis npm 설치
npm install ioredis or yarn add ioredis or pnpm i ioredis
npm install @nestjs-modules/ioredis
2) module 세팅 및 connection 정보 저장
8. 장바구니 로직 리펙토링 (최대한 서비스 이후레이어는 수정하지 않도록)
- redis의 여러 자료 구조중 Hashes 사용
- 장바구니 생성시 TTL 구성: 매번 스케줄러로 제거할 필요가 없다.
- 정상로직 처리 되었을 시 장바구니 삭제
(redis로 cart 처리시에는 꼭 필요한 정보만을 저장하여 memory 사용 최소화 전략 필요)
성능적으로 빨라짐을 확인할 수 있다.
9. redis Hash 주요 명령어
- hgetall
: ({ key: value }) 해시의 모든 필드와 그 값을 "key-value 쌍으로 반환" (객체)
- hkeys
: ([key1, key2, ...]) 해시의 모든 필드 "키만 배열"로 반환 (배열)
- hset
: 필드와 값을 설정
- hdel
: 특정필드 삭제
10. Todo
: cart repo 의 로직을 service 와 repo로 분리하기
'Node js > Nest js 강의 내용' 카테고리의 다른 글
(다음과정 미리보기) Graphql 사용하기 (0) | 2025.01.27 |
---|---|
9. Kafka 설명 & 연동 (한방에 해결하자) (0) | 2025.01.27 |
7. Docker (Nest js 로 개발한 서버를 docker로 띄워보자) (0) | 2025.01.27 |
6-2 비관적락을 이용한 동시성 제어(with Prisma) (0) | 2025.01.27 |
6-1 서비스 로직 완성 (0) | 2025.01.27 |