Redis에 대해서 간단히 설명해주세요.
CS 및 기술 면접 준비 스터디
답변
- 오픈 소스 인 메모리 키 값 데이터 구조 스토어입니다.
- 인메모리 방식이기 때문에 디스크에 데이터를 저장하는 다른 RDBMS보다 훨씬 빠릅니다.
- Redis는 다양한 인 메모리 데이터 구조 집합(문자열, 리스트, 맵, 집합)을 제공합니다.
Redis 란?
REmote DIctionary Server 의 약어
빠른 오픈 소스 인 메모리 키 값 데이터 구조 스토어
캐시 서버(Cache Server)에 대해서
데이터베이스가 있는데도 Redis라는 인메모리 데이터 구조 저장소를 사용하는 이유는 무엇일까?
- DB는 데이터를 물리 디스크에 직접 쓰기 때문에 서버에 문제가 발생하여 다운되더라도 데이터가 손실되지 않는다.
- 하지만 매번 디스크에 접근해야하기 때문에 만약 많은 사용자들이 접근하게 된다면 부하가 많아져서 느려질 수 있는 단점이 존재한다.
- 따라서 일반적으로 서비스 운영 초반을 벗어나 규모가 커지게 되면, 사용자가 늘어나고, 이에 따라 데이터 베이스가 과부하 될 수 있기 때문에 이때 캐시 서버를 도입하여 사용한다. ⇒ 그리고 이 캐시 서버로 이용할 수 있는 것이 바로 Redis
- 캐시는 한번 읽어온 데이터를 임의의 공간에 저장하여 다음에 읽을 때는 빠르게 결괏값을 받을 수 있도록 도와주는 공간이다.
- 같은 요청이 여러 번 들어오는 경우 매번 DB를 거치는 것이 아니라 캐시 서버에서 첫 번째 요청 이후 저장된 결괏값을 바로 내려주기 때문에 DB의 부하를 줄이고 서비스의 속도도 느려지지 않게 된다.
Redis 특징
- 보통 데이터베이스는 하드 디스크나 SSD에 저장한다. 하지만 Redis는 메모리(RAM)에 저장해서 디스크 스캐닝이 필요없어 매우 빠르다는 장점이 존재한다.
- 주요 Redis 사용 사례로는 캐싱, 세션 관리, pub/sub(발행/구독) 및 순위표 등이 존재한다.
- 데이터 구조는
key
/value
값으로 이루어져 있다. → 따라서 Redis는 비정형 데이터를 저장하는 비관계형 데이터베이스 관리 시스템이다.
- Single Threaded 이기 때문에 한 번에 하나의 명령만 처리할 수 있다.
어라 근데 RAM은 휘발성이지 않나요…?
→ 이를 막기위한 백업 과정이 존재한다 !! (Redis의 영속성)
Redis 영속성
Redis는 지속성을 보장하기 위해 데이터를 DISK에 저장할 수 있다.
서버가 내려가더라도 DISK에 저장된 데이터를 읽어서 메모리에 로딩을 한다.
RDB (snapshot)
순간적으로 메모리에 있는 내용을 DISK에 전체를 옮겨 담는 방식
AOF (Append Only File)
명령(쿼리)들을 저장해두고, 서버가 셧다운되면 재실행해서 다시 만들어 놓는 방식
(Redis의 모든 write/update 연산 자체를 모두 log 파일에 기록하는 형태)
Redis의 자료구조 5가지
String
(text, binary data → 가장 일반적인 key - value 구조의 형태) - 512MB까지 저장 가능
set
(String의 집합)
sorted set
(set을 정렬해둔 상태)
Hash
List
(양방향 연결리스트도 가능)
참고 자료