- Redis는 Memcached와 비슷한 캐시 시스템으로서 동일한 기능을 제공하면서 영속성, 다양한 데이터 구조와 같은 부가적인 기능을 지원한다.
- Redis는 모든 데이터를 메모리에 저장하고 조회 한다. 즉, 인메모리 데이터베이스이다.
- 다른 인메모리 데이터베이스와 가장 큰 차이점은 Redis의 다양한 자료구조이다.
- Redis는 다양한 자료구조를 가지면서 개발의 편의성이 좋아지고 난이도가 낮아진다는 장점이 있다.
예를 들면, 어떤 데이터를 정렬 할 때, DBMS를 이용한다면 DB에 데이터를 저장하고, 저장된 데이터를 정렬하여 다시 읽어오는 과정은 디스크에 직접 접근을 해야하기 때문에 시간이 더 걸린다는 단점이 있다. 하지만 이때 In-memory 데이터베이스인 Redis를 이용하고 레디스에서 제공하는 Sorted-Set이라는 자료구조를 사용하면 더 빠르고 간단하게 데이터를 정렬할 수 있다.
- NoSQL로서 특징
1. 영속성을 지원하는 인메모리 데이터 저장소
- 읽기 성능 증대를 위한 서버 측 복제 지원
- 쓰기 성능 증대를 위한 클라이언트 측 샤딩(Sharding) 지원
- 다양한 서비스에서 사용되며 검증된 기술
- 문자열, 리스트, 해시, 셋, 정렬된 셋과 같은 다양한 데이터형을 지원, 메모리 저장소임에도 불구하고 많은 데이터를 지원하므로 다양한 기능을 구현
- 요약하자면, 고성능 키-값 저장소로서 문자열, 리스트, 해시, 셋, 정렬된 셋 형식의 데이터를 지원하는 NoSQL이다.
- Write-Back 패턴: 한번에 데이터가 들어가면, 컴퓨터는 정신을 못차린다. 그래서 Redis를 통해서 빠르게 저장한 후, Redis에서 MySQL로 한개씩 저장한다.
- Cache-Aside패턴: 위의 사진을 보면 알 수 있듯이 간단히 말하자면, 처음 검색을 할때 redis에 데이터가 없으면 MySQL DB에서 꺼내오고 그 다음 검색부터는 더 빠르게 찾을 수 있게 그 데이터를 redis에 저장하여 검색 속도가 빠르게 해준다.
- redis를 사용하기 위해 설치를 위한 명령어들
1. yarn add redis
- yarn add cache-manager-redis-store
- yarn add cache-manager
- expire: 만료시간
- ttl : 시간 설정