레디스
- 메모리 기반의 데이터 저장소
- key-value 데이터 구조 기반의 자료구조 제공
- 메모리에 데이터를 저장하기 때문에 저장공간에 제약이 있다.
-> 그래서 주로 보조 데이터 저장소로 사용함 (※ 레디스 클러스터 기능으로 저장공간 확장가능)
- 빠른 처리 속도
- 메모리 특성상 휘발성 가능성 있다
→ 이를 보완하고자 레디스는 관리하고 있는 데이터에 영속성을 제공함 = 백업 기능 제공
→ RDB 방식과 AOF 방식 존재
- RDB 방식 (Redis Database)
- 메모리에 있는 데이터 전체에서 스냅샷 작성 & 복원 시 스냅샷 파일 그대로 로딩만 하면 됨
- 스냅샷 이후 변경된 사항은 복구 불가능하다는 단점 존재 → 데이터 유실
- AOF 방식 (Append Only File)
- 데이터가 변경되는 이벤트가 발생하면 이를 모두 로그에 저장하는 방식
- 데이터를 CUD 하는 이벤트를 초단위로 취합 및 로그 파일에 작성
- RDB 방식에 비해 데이터 유실량이 적다 → 단, 초단위 데이터는 유실가능성 있음
- RDB 방식보다 로딩 속도 느리고, war 파일 크기가 크다
정리하면
- 장애 상황 직전까지 모든 데이터가 보장되어야 한다! → AOF
- 캐시로만 사용한다! → RDB
- 레디스는 일반적으로 이 둘을 동시에 사용하여 데이터를 백업한다.
ex) 매일 7시마다 RDB 스냅샷을 생성하고, RDB 생성 이후에 변경되는 데이터는 AOF 로 백업
Redis 백업 방식 설정
- 클라이언트가 실행한 명령어들을 이벤트큐에 적재하고 싱글 스레드로 하나씩 처리한다.
- 싱글 스레드로 처리하기 때문에 데이터 처리가 빠르다!
- context switch 발생 안함 → 데드락 발생X
- 오버헤드가 큰 명령어를 처리하는 동안 다른 명령어 처리 불가능
→ 큐에 저장되어 있는 시간이 길어짐으로써 응답 속도가 저하될 수 있음!
아키텍처 선정
아키텍처는 총 4가지가 존재한다.