Redis란?
-
오픈소스 기반의 인메모리 데이터베이스
-
key-value 구조를 사용하여 데이터를 저장한다.
-
메모리에 데이터를 캐싱하여 빠른 읽기와 쓰기를 지원한다.
-
다양한 데이터 구조를 지원한다.
-
캐싱, 세션 관리, 실시간 분석 등 다양한 용도로 사용된다.
Redis를 알아보기 전, 캐시 서버(Cache Server)에 대해서
데이터베이스는 물리 디스크에 데이터를 직접 쓰기 때문에 서버에 문제가 발생하여 다운되더라도 데이터가 손실되지 않는다. 하지만 매번 디스크에 접근해야하므로 사용자가 많아질수록 부하가 많아져서 느려질 수 있다.
일반적으로 서비스 규모가 작거나, 사용자가 많지 않은 서비스의 경우에는 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 서버를 하나의 클러스터로 묶어서 데이터를 분산 저장한다. 이를 통해 확장성과 가용성을 향상시킬 수 있다.
장점
- 높은 성능
- Redis는 인메모리 데이터 저장소로 작동하므로 빠른 속도로 데이터를 처리할 수 있다.
- 비동기 방식으로 데이터를 처리하므로 성능이 향상된다.