반응형
1. "Redis"란?
REmote DIctionary Server의 약자
Redis는 빠른 오픈 소스 in-Memory "키(key)-값(value)"를 가지는 NoSQL의 데이터 베이스이다.
🔗https://db-engines.com/en/ranking/key-value+store
해당 url에서 보면 key-value Store 부문에서 압도적인 사용률을 차지하는 것을 알 수 있다.
2. "Redis"의 특징
- 인메모리 데이터 저장: 데이터를 주 메모리에 저장하여 빠른 읽기 및 쓰기 속도를 제공!!!
- 다양한 데이터 구조 지원: 문자열, 리스트, 해시맵, 셋 등 다양한 데이터 구조를 지원 -> 유연한 데이터 처리가 가능하다!!
- 높은 가용성: 데이터를 디스크에도 저장하고 클러스터링을 통해 고가용성을 제공하여 시스템 장애 시 데이터 손실을 방지!
- Pub/Sub 메시징 지원: 발행-구독(Pub/Sub) 메시징 패턴을 지원 -> 실시간 통신이나 이벤트 기반 아키텍처를 구현가능!
- 가장 큰 장점는 "속도"이다!
디스크에서 데이터를 저장 하는 것이 아니라
서버 자체의 주 메모리에 저장하여 디스크에 액세스하지 않아도 된다.
이로써 검색 시간을 대폭 줄이고, CPU 명령을 적게 사용하여 데이터에 액세스 할 수 있다.
3. 그렇다면, 서버를 끄면 데이터들은 휘발될까?
결론부터 말하자면, Redis는 기본적으로 서버를 끄면 데이터들이 휘발된다.
In-Memory 데이터베이스 라 함은, 데이터를 메인 메모리(RAM)에 저장하는 기술이라는 뜻이다.
그러나 Redis는 데이터 영속성을 위해 디스크에도 저장하며, 이를 위해 RDB와 AOF 방식을 제공한다.
4. RDB와 AOF 방식
- RDB는 주기적으로 데이터 스냅샷을 생성하여 백업한다.
하지만 오랜 시간 동안 비정상적으로 작동한 경우 최근 데이터 복구가 어려울 수 있다. - AOF는 모든 쓰기 작업을 기록하여 내구성을 높일 수 있다.
하지만 용량이 크고 RDB에 비해 느릴 수 있다. - 보편적으로 AOF를 기본으로 선택한다.
때로는 RDB 스냅샷을 활용하여 데이터베이스 백업을 수행하고 빠른 재시작을 위한 옵션으로 사용하는 것도 권장된다.
Snapshotting(스냅샷): 주기적으로 메모리 상태의 스냅샷을 디스크에 저장하는 것이다.
이렇게 하면 서버가 재시작될 때 마지막 스냅샷을 로드하여 데이터를 복원할 수 있다.
하지만 스냅샷을 저장하는 동안에는 데이터베이스가 잠시 멈출 수 있다.
AOF(Append-Only File): 모든 쓰기 연산을 로그 파일에 기록한다.
서버가 재시작되면 이 로그 파일을 재실행하여 데이터를 복원한다.
AOF 방식은 스냅샷 방식에 비해 데이터 손실이 적고, 더 높은 데이터 일관성을 제공한다.
Redis이 무엇인지, 그리고 특성과 영속성을 유지시키기 위해서 어떤 방법이 있는 지 간단히 알아봤다.
다음 포스트에서 SpringBoot에서 Redis를 사용하는 방법을 알아보겠다!
반응형