Redis 특징
- 모든 데이터를 RAM에 저장 (백업/스냅샷 제외)
- 단일 thread에서 모든 task 처리
- 다중 노드에 데이터를 분산 저장하여 안정성 & 고가용성 제공
- RDB(Redis Database) + AOF(Append only file)을 통해 영속성 옵션 제공
- Pub/Sub 패턴을 지원하여 손쉬운 어플리케이션 개발(e.g 채팅, 알림 등)
장점
- 높은 성능
- 모든 데이터를 메모리에 저장하기 때문에 매우 빠른 읽기/쓰기 속도 보장
- Data Type 지원
- Redis에서 지원하는 Data Type을 잘 활용하여 다양한 기능 구현
- 클라이언트 라이브러리
- 다양한 언어로 작성된 클라이언트 라이브러리 지원
사용 사례
- caching
- 임시 비밀번호, 로그인 세션
- Rate Limiter
- Fixed-Window / Sliding-Window Rate Limiter
- Message Broker
- 메세지 큐
- 실시간 분석 / 계산
- 순위표, 반경 탐색, 방문자 수 계산
- 실시간 채팅
- Pub/Sub 패턴
알아보기
- Persistence(영속성)
Redis는 주로 캐시로 사용되지만 데이터 영속성을 위한 옵션 제공 SSD와 같은 영구적인 저장 장치에 데이터 저장
- RDB(Redis Database)
Point-in-time Snapshot -> 재난 복구(Disaster Recovery) 또는 복제에 주로 사용 일부 데이터 유실의 위험이 있고, 스냅샷 생성 중 클라이언트 요청 지연 발생
- AOF(Append Only File)
Redis에 적용되는 Write 작업을 모두 log로 저장
데이터 유실의 위험이 적지만, 재난 복구시 Write 작업을 다시 적용하기 때문에 RDB 보다 느림
- RDB + AOF 함께 사용하는 옵션 제공
Caching
-
캐싱(Caching)
데이터를 빠르게 읽고 처리하기 위해 임시로 저장하는 기술
계산된 값을 임시로 저장해두고, 동일한 계산 / 요청 발생시 다시 계산하지 않고 저장된 값 바로 사용
캐시(Cache) = 임시 저장소
-
사용 사례
-CPU 캐시
CPU와 RAM의 속도 차이로 발생하는 지연을 줄이기 위해 L1, L2, L3 캐시
-
사용
- 웹 브라우저 캐싱
웹 브라우저가 웹 페이지 데이터를 로컬 저장소에 저장하여 해당 페이지 재방문시 사용
DNS 캐싱 이전에 조회한 도메인 이름과 해당하는 IP 주소를 저장하여 재요청시 사용
- 데이터베이스 캐싱
데이터베이스 조회나 계산 결과를 저장하여 재요청시 사용
- CDN
원본 서버의 컨텐츠를 PoP 서버에 저장하여 사용자와 가까운 서버에서 요청
-
처리
- 어플리케이션 캐싱
어플리케이션에서 데이터나 계산 결과를 캐싱하여 반복적 작업
Cache Hit / Miss
- 캐시 히트[Cache Hit]
CPU가 참조하고자 하는 메모리가 캐시에 존재하고 있을 경우 Cache Hit라고 한다
- 캐시 미스[Cache Miss]
CPU가 참조하고자 하는 메모리가 캐시에 존재하지 않을 때 Cache Miss라고 한다.
Cache-aside pattern

처음 사용자가 요청했을 때는 캐시 스토리지에는 아무 데이터도 없는 상황이다.
1 .애플리케이션은 먼저 캐시 저장소에 데이터가 있는지 조회한다. 하지만 데이터가 없다.
-
애플리케이션은 Contents DB 에서 데이터를 조회하고 사용자에게 제공한다.
-
애플리케이션은 Contents DB 에서 가져왔던 데이터를 캐시 저장소에 저장한다.
다음 사용자가 요청했을 때는 이미 캐시 저장소에 데이터가 있는 상황이다.
- 애플리케이션은 먼저 캐시 저장소에 데이터가 있는지 조회한다. 캐시 저장소에 저장되어있는 데이터를 제공한다.
Redis 설치 & 실행
//Redis 설치
brew install redis
//Redis 실행
brew services start redis
//Redis 종료
brew services stop redis
