-
레디스란? 레디스의 백업 프로세스에 대하여스터디 노트 2023. 12. 20. 11:22
레디스( Redis)는 메모리 기반 데이터 저장소로 키-밸류 데이터 구조에 기반합니다.
레디스의 장점은 빠른 처리 속도이며, 내부 명령어 처리는 싱글 스레드 아키텍쳐로 구현되어있습니다.레디스의 특징 은 '메모리'와 '싱글스레드' 입니다.
메모리는 데이터를 매우 빠르게 저장 및 조회할 수 있습니다.하지만 휘발성이지요.
이를 보완하고자 레디스는 데이터 영속성을 제공하는데, 이는 데이터를 디스크에 백업하는 기능을 제공하며 RDB나 AOF방식으로 백업할 수 있습니다.
이 두 기능을 함께 설정하여 상호 보완 기능으로 사용해도 됩니다.
RDB(RedisDataBase)는 메모리에 있는 데이터 전체를 스냅샷으로 작성해 이를 디스크에 저장합니다.백업이나 복원이 매우 간단하지요.
단점은 스냅샷 이후 변경된 데이터는 유실 시 복구할 수 없다는 것입니다.
AOF(Append Only File)는 레디스에 데이터가 변경되는 이벤트 발생 시 모두 로그에 저장하는 방식입니다.모든 데이터의 변경 기록을 보관하므로 최신 데이터 정보 백업이 가능합니다.
RDB방식보다 데이터 유실량이 적다는 장점이 있으나 로딩 속도가 느리고 파일이 크다는 단점이 있습니다.
레디스는 일반적으로 두 방식을 모두 사용해 데이터를 백업합니다.레디스는 사용자들이 실행한 명령어들을 이벤트 루프 방식으로 처리합니다.
이벤트 루프는 클라이언트가 실행한 명령어들을 이벤트 큐에 적재후 싱글스레드가 하나씩 처리하는 방식입니다.
메모리를 사용해 싱글스레드임에도 데이터를 빠르게 처리할 수 있습니다.
또한 컨텍스트 스위칭의 비용이 없으므로 효율적으로 시스템 리소스를 사용할 수 있다는 점과 데드락이 발생하지 않는 등의 장점이 있습니다.
반대로 레디스 명령어 중 전체 데이터 스캔 명령어들이 있는 이는 데이터 크기에 비례하여 실행시간이 길어질 수 있습니다.
싱글스레드이므로 명령어 처리 동안 다른 작업을 할 수 없습니다.
그러므로 다른 명령들이 이벤트 큐에서 기다리는 시간이 늘어나게 되며, 응답속도에 영향을 주게 됩니다.
일반적으로 Production 환경에서 한 대의 마스터와 하나 이상의 레플리카 세트로 구성하게 됩니다.
쓰기, 수정, 삭제 같은 작업은 마스터에서 실행되고 이후 레플리카 서버들에 복제하며 데이터를 동기화 합니다.
이를 통해 한 세트의 서버들은 모두 같은 데이터를 저장합니다.
마약 마스터에 문제가 생겨도 레플리카 중 한 대가 마스터의 기능을 하기에 고가용성 유지가 가능합니다.
레디스는 그 특징에 따라 다음 목적으로 사용할 수 있습니다.
- 주 데이터 저장소 : AOF, RDB 백업 기능을 통해 데이터 주 저장소로 사용할 수 있지만 용량이 큰 데이터 저장소로는 적절하지 않습니다.
- 데이터 캐시 : 인메모리 DB로 빠르게 캐시하여 데이터를 읽어올 수 있습니다. 중앙 집중형 구조로 MSA 수평 확장 환경에서 데이터 일관성을 유지할 수 있다는 장점이 있습니다.
- 분산 락 : 분산 환경에서 여러 시스템이 동시에 데이터 처리할 때는 특정 공유 자원의 사용 여부를 검증해 데드락을 방지할 필요가 있는데 레디스를 분산 락으로 사용할 수 있습니다.
- 순위 계산 : ZRANGE, ZREVERANGE, ZRANGEBYSCORE, ZREVRANGEBYSCORE는 ZSet 자료구조를 사용하며 정렬 기능이 포함된 Set 자료구조이기 때문에 쉽고 빠르게 순위를 계산할 수 있습니다.'스터디 노트' 카테고리의 다른 글
[Google Bard] 구글 바드 Spring Boot 연동하기! (feat. 제미나이 AI가 똑똑해졌다며?) (1) 2023.12.28 레디스(Redis)? 함 써봅시다. Spring Boot + Redis 연동하기! (1) 2023.12.21 Ubuntu(우분투) 환경에서 Java 초간편 설치하기 (0) 2023.12.13 Ubuntu 환경에서 Logstash와 Opensearch 연동하기 : logstash-input-opensearch Plugin input/output 설정 (0) 2023.12.13 윈도우 10에서 Docker(도커)에 Ubuntu(우분투) 최신 버전 설치하기 (0) 2023.12.13