Redis
-
사용 이유
- 캐싱(자주 액세스 되는 데이터를 메모리에 저장하여 시간 단축), 세션에 유용하다.
- 높은 성능과 확장성 제공
- in-memory 형태의 No-SQL, key-value 쌍의 해쉬 맵 형태의 데이터베이스이다.
- 모든 데이터를 메모리에 저장하므로 디스크 I/O(입출력) 오버헤드가 없다. 이로 인해 매우 빠른 읽기와 쓰기 작업을 수행할 수 있다.
-
사용하는 경우
- 광범위한 데이터 구조 및 스트림 처리 기능에 대한 액세스 필요
- 키와 값을 제자리에서 수정하고 변경할 수 있는 기능이 필요
- 사용자 지정 데이터 제거 정책이 필요
- 백업 및 웜 재시작을 위해 데이터를 디스크에 유지해야 한다.
- 복제본 및 클러스터링을 통해 애플리케이션의 높은 가용성 또는 확장성을 확보해야한다.
사용하는 방법
로컬 환경에서 레디스를 호출
- EC2를 예로 들면 인스턴스에 레디스를 설치해 인스턴스 메모리를 사용해 레디스를 사용하는 방법
- 인스턴스의 메모리 여유가 있다면 비용적인 측면으로나 사용성 측면으로나 뛰어남
💡 Redis를 사용하기 위해 억지로 넣는 것은 좋은 접근이 아니다.
웹 서버에서 키-값 형태의 데이터 타입을 처리해야 하고, I/O가 빈번히 발생해 다른 저장 방식을 사용하면 효율이 떨어지는 경우에 사용해야한다.
- 예시 유튜브 조회수와 같은 카운트 형태의 데이터
-
인기 동영상의 경우에는 1시간도 안돼서 100만 조회수를 넘기는 경우가 많다.
-
이때 조회수에 해당하는 데이터를 RDS 형태의 데이터에 저장해 I/O를 반복한다면 엄청난 자원 + 쿼리가 사용될 것이다.
이처럼 많은 I/O를 발생시키는 데이터를 처리할 때 레디스를 사용해 데이터를 캐싱 처리하고, 일정한 주기에 따라 RDS에 업데이트를 한다면 RDs에 가해지는 부담을 크게 줄이고, 성능을 크게 향상할 수 있다.
많은 I/O 말고도 사용자의 세션 관리에도 많이 사용된다.
- 사용자의 세션을 유지하고, 불러오고 여러 활동들을 추적하는 경우 매우 효과적이다.