redis

NestJS

[NestJS | Redis | Docker] 용도별로 Redis 인스턴스 만들기

본 게시물은 이전에 운영하던 velog에서 작성됨 (2023년 4월 5일 작성) 레디스를 좋아요, 세션, 캐시 용도로 사용하고자 마음을 먹고 레디스 클라우드에서 제공해주는 무료 서버를 파서 사용했다. 사용하다보니 몇가지 비효율적인 부분이 생겼다. 레디스 클라우드와 커넥션할 때 굉장히 자주 타임 아웃이 발생하였다. 커넥션 타임을 늘려줘도 마찬가지였다. 레디스 클라우드 무료 인스턴스는 사용할 수 있는 최대 메모리 용량이 30MB 밖에 안된다. 다양한 데이터가 하나의 인스턴스에 저장되는 것은 싱글스레드로 작동하는 레디스의 성능에 문제를 끼칠 수 있을 것 같았다. 이러한 이유로 EC2 인스턴스를 하나 파서 용도별로 docker redis container를 띄워서 사용하기로 했다. EC2 프리티어는 총 1GB의..

NestJS

[NestJS | Redis] 데이터 캐싱하기 (Look-Aside)

본 게시물은 이전에 운영하던 velog에서 작성됨 (2023년 4월 6일 작성) 유튜브를 둘러보다가 'Redis 야무지게 사용하기'라는 영상을 보게 되었다. NHN FORWARD 2021 Redis 야무지게 사용하기 영상을 본지는 꽤 오래되었다. 영상 앞 부분에서 설명해주신 캐싱 읽기 전략을 직접 구현해보고 싶었는데, 이제서야 프로젝트에 적용하게 되었다. 💥 로직 전체적인 흐름은 다음과 같다. 프론트엔드에게 postId를 받음 redis 인스턴스에서 postId에 해당하는 데이터를 가져옴 만약 redis 인스턴스에서 가져온 데이터가 없으면 mysql에서 postId에 해당하는 데이터를 가져옴 데이터를 redis 인스턴스에 저장하고 프론트엔드에게 리턴 만약 redis 인스턴스에서 가져온 데이터가 있다면 곧..

NestJS

[NestJS | Redis] 세션 스토리지 만들기

본 게시물은 이전에 운영하던 velog에서 작성됨 (2023년 3월 12일 작성) 서버 scale-out 시 세션 불일치 문제가 발생하기 마련이다. sticky 세션이나 클러스터 세션 등 여러 방법으로 해결할 수 있지만 세션 스토리지로 세션들을 관리하는 것이 가장 좋은 방법인 것 같다. 물론 모든 것에는 트레이드 오프가 있듯이 세션 스토리지 서버가 다운되면 인증 로직 자체가 작동할 수 없다는 단점도 있으나 나머지 둘 보다 낫다고 생각한다. (DB 레이어에서 고가용성을 위한 방법이 또 여러가지 있으니까) 아무튼 REDIS를 이용해서 세션 스토리지를 구성했다. REDIS는 이번에 처음 사용해보는데, 데이터가 key-value 구조고 이에 따라 명령어도 단순해서 굉장히 편하다는 느낌을 받았다. 😺 세션 스토리..

닉네임짓기도귀찮아
'redis' 태그의 글 목록