Redis?
- 오픈소스 기반의 인메모리 데이터베이스
- key-value 구조를 사용하여 데이터를 저장한다.
- 메모리에 데이터를 캐싱하여 빠른 읽기와 쓰기를 지원한다.
- 다양한 데이터 구조를 지원한다.
- 캐싱,자원 관리, 실시간분석 등의 다양한 용도로 사용된다.
key-value
캐시
일반적으로 서비스 규모가 작거나, 사용자가 많지 않은 서비스의 경우에는 WEB - WAS - DB 의 구조로도 데이터베이스에 무리가 가지 않지만, 사용자가 늘어난다면 데이터베이스에 과부하가 걸릴 수 있으므로, 이때 캐시 서버를 도입하여 사용한다.
이 캐시 서버로 이용할 수 있는 것이 바로 Redis 이다.
- 캐시 : 한번 읽어온 데이터를 임의의 공간에 저장 → 다음에 읽을 때 빠르게 결과값을 받을 수 있도록 한다.
- 같은 요청이 여러번 들어오는 경우, 데이터베이스를 거치지 않고 캐시 서버에서 첫번째 요청으로 저장된 결과값을 바로 내려줄 수 있다.
Redis 특징
-
인메모리 데이터 저장
- Redis는 인메모리 데이터 저장소로, 기본적으로 RAM(메모리)를 사용하여 데이터를 저장한다.
- 빠른 속도로 데이터를 처리할 수 있다.
-
다양한 데이터 구조 지원
- String, Hash, List, Set 등 다양한 데이터 구조를 지원한다.
- 다양한 데이터 구조를 사용하여 데이터를 저장 , 조회,수정,삭제가 가능하다.
-
영속성 지원
- Redis는 기본적으로 메모리에 데이터를 저장하지만, 디스크에도 지속적으로 저장할 수 있다. → snapshotting
- Snapshotting : Redis의 내장 스냅샷 기능을 사용하여 일정 시간 간격으로 Redis 데이터를 디스크에 저장한다.
- AOF(Append Only File) 방식 지원
- AOF : Redis의 모든 쓰기 작업 로그를 기록, Redis를 재시작할 때 로그를 재실행하여 데이터를 복원한다.
- 스냅샷과 AOF를 통해 데이터 손실을 방지하고 안정성을 높일 수 있으나, Redis의 성능을 약간 저하시키는 부분이 있기 때문에, 주기적인 스냅샷과 AOF 파일의 백업, 로그를 특정 크기 이상으로 허용하는 등 설정을 고려해야 한다.
-
분산 환경 지원
- 클러스터링을 통해 분산 환경에서도 사용 가능 하다.
- Redis 클러스터링 : 여러 대의 Redis 서버를 하나의 클러스터로 묶어서 데이터를 분산 저장한다. 이를 통해 확장성과 가용성을 향상시킬 수 있다.
장점
- 높은 성능
- 데이터 구조 다양성
- 데이터 복제 및 다양성
- 데이터 안정성
단점
- 메모리 제약
- 단일 쓰레드
- 디스크 I/O 성능 저하 위험
Redis 사용 사례
- 좋아요 처리
- 사용자 세션관리
- 유저 인증 토큰 저장
- 메시지 큐잉
- 최근 검색 목록
질문
많은 양의 데이터를 처리하려면 어떻게 할까?
- 데이터의 일부만 저장한다.
- 캐시로 사용할 일부 데이터만 Redis에 저장하여 사용할 수 있다.
- Redis에 저장할 데이터의 중요도에 따라 우선순위를 정하여 저장할 수 있다.