Photory 프로젝트를 하면서 이메일 인증번호 같은 유효기간이 정해진 정보를 저장하는 데 RDB를 이용하는 것보다  Redis를 이용하는 게 더 좋다고해서 이 때 redis를 처음 알게 되었다. 이에 대해 공부를 하는게 좋을 것 같아 관련 내용을 기록해보려고 한다. 

 

참고한 블로그1

참고한 블로그2

Redis란? 

Remote Dictionary Server의 약자로, Key - Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈소스 기반의  비 관계형 DBMS이다. 

 

고성능 키 - 값 저장소로서 문자열, 리스트, 해시, 셋, 정렬된 셋 형식의 데이터를 지원하는 NoSQL이다 

Redis 장점

1. NoSQL이고, Key - Value 타입의 저장소 

 

2. 인메모리 데이터베이스 

인메모리이기 때문에 모든 데이터를 메모리에 빠르게 저장할 수 있고, 영속성을 지원한다 

 

3. 다양한 자료구조의 데이터를 저장할 수 있다 

이 특징이 다른 DB와의 차별점이고, 이를 이용해 다양한 기능을 구현할 수 있다. 

개발의 편의성이 좋아지고, 개발 난이도가 낮아진다. 

 

예를 들면 데이터를 정렬해야하는 상황에서 

DBMS를 이용하면 DB에 데이터를 저장하고, 저장된 데이터를 정렬하여 다시 읽어오는 과정은 디스크에 직접 접근해야해서 시간이 더 걸린다. 하지만 Redis의  sorted-set을 이용하면 간단하고 빠르게 데이터를 정렬할 수 있다 

 

4. 읽기 성능 증대를 위한 서버 측 복제를 지원

 

5. 쓰기 성능 증대를 위한 클라이언트 측 샤딩(sharding)을 지원

 

6. 메모리 + 디스크 활용을 통한 영속적인 데이터 보존 가능 

Redis 단점

1. 메모리 사용량이 많다

2. 대규모 트래픽에 대한 응답속도 불안정 

대규모 트래픽으로 많은 양의 데이터가 update 되면 메모리 할당 방식 차이에 따른 메모리 파편화 및 응답속도 저하가 발생된다.

응답속도 저하는 극단적인 환경에서 발생한다고 하며 대규모 서비스에서도 Redis를 많이 도입하는 것을 보면 일반적인 상황에서는 문제가 없다고 한다 

 

*샤딩(sharding)이란?

DB 트래픽을 분산할 목적으로 사용함

DB를 분산하면 특정 DB의 장애가 전면장애로 이어지지 않는다 

모듈러 샤딩과 레인지 샤딩이 존재한다

참고한 블로그 

Redis의 영속성 

레디스는 지속성을 보장하기 위해 데이터를 Disk에 저장할 수 있다. 서버가 내려가더라도 disk에 저장된 데이터를 읽어서 메모리에 로딩한다. 

 

-Disk에 데이터를 저장하는 방식 

1. RDB(snapshotting) 방식 : 순간적으로 메모리에 있는 내용 전체를 disk에 옮겨 담는 방식

2. AOF(Append On File) 방식 : Redis의 모든 write / update 연산 자체를 모두 log 파일에 기록하는 형태 

 

+ Recent posts