SW전문인재양성사업 2기에 참여하면서 어떤 DB를 써야하고 그 DB를 써야하는 이유를 생각해야 하는 순간이 여러번 있어서 가장 관련 지식이 없던 Redis부터 정리해보도록 하겠다!
빠른 응답 시간
메모리는 디스크보다 매우 빠른 속도로 접근 가능
데이터를 신속하게 검색하거나 조작 가능
웹 애플리케이션과 같은 실시간 요구 사항을 만족하는 데 유용함
높은 처리량
대량의 데이터도 빠르게 처리 가능
데이터베이스나 분석 작업에서 유용
복잡한 분석
대규모 데이터를 더 빠르게 분석하고 쿼리 가능
비즈니스 인텔리전스 및 분석에 유리
캐싱
데이터나 연산 결과를 메모리에 저장
빠른 접근을 통해 성능을 개선하는 캐싱 시스템에 유용
적은 디스크 I/O
데이터를 메모리에 보관해서 디스크 I/O가 줄어들음
디스크 부하를 감소
Key-Value 형태의 데이터 저장소
단순한 Key-Value 스토어 형식을 지원하며, 다양한 데이터 타입의 값을 Key와 연결하여 저장
다양한 데이터 구조
단순한 문자열(String)뿐만 아니라 리스트(List), 세트(Set), 정렬된 세트(Sorted Set), 해시(Hash) 등 다양한 데이터 구조를 지원하여 데이터의 다양한 활용이 가능
Pub/Sub 모델
Publish/Subscribe 모델을 지원하여 메시지 브로커로 사용 가능
메시지를 발행하고 구독하는 방식으로 실시간 데이터 푸시 등의 용도로 활용
디스크 저장 및 복제
Redis는 현재 메모리 상태를 디스크로 저장 및 영구적인 데이터 보존이 가능
마스터/슬레이브 구조를 지원하여 데이터의 복제와 고가용성을 제공
높은 성능
Redis는 메모리 내 데이터 처리로 인해 매우 빠른 속도를 제공
초당 100,000 QPS 수준의 높은 성능을 보여줌
클러스터링
Redis 클러스터링을 통해 데이터를 여러 노드로 분산하여 처리 가능
트랜잭션 및 스냅샷
Redis는 트랜잭션을 지원하여 여러 명령을 한 묶음으로 실행 가능
스냅샷을 통해 데이터 상태의 백업 및 복구 가능
Lua 스크립팅
Redis는 Lua 스크립팅 언어를 지원하여 자체적으로 스크립트를 실행
데이터 처리를 커스터마이징 가능
메모리 제한: Redis는 인메모리 데이터베이스로 모든 데이터를 주 메모리에 저장합니다. 따라서 사용 가능한 메모리 양에 제한이 있습니다. 큰 데이터셋을 다루거나 대량의 데이터를 저장해야 하는 경우에는 메모리 제한으로 인해 문제가 발생할 수 있습니다.
데이터 영속성
전원이 꺼지거나 재시작되면 메모리의 데이터가 모두 사라짐
단일 스레드 모델
Redis는 단일 스레드 모델을 사용하여 하나의 명령만 처리
멀티코어 활용이 어려움
CPU 집중적인 작업의 성능이 저하될 수 있음
응답 시간의 불안정성
일부 명령이나 작업이 긴 실행 시간을 요구시 다른 명령들의 응답 시간에 영향을 줄 수 있음
응답 시간의 불안정성이 발생 가능
분산 시스템의 복잡성
Redis는 클러스터링을 지원하나 여러 노드 간의 데이터 동기화 및 관리를 위해 추가적인 구성 및 관리 필요
분산 시스템을 구성하는 것이 복잡함
메모리 비용
대규모 데이터 저장에는 많은 메모리가 필요함
메모리의 가격에 따른 비용이 고려됨
데이터 타입 복잡성
데이터의 저장 형태와 검색 방식에 대한 계획이 필요함
데이터 보안
Redis 서버가 인터넷 또는 로컬 네트워크와 같은 외부 네트워크에 연결되어 있어 외부에서 서버에 접근할 수 있는 경우 데이터 보안에 대한 이슈가 생길 수 있음
우선 여러 블로그와 e-book 그리고 ChatGPT를 이용하여 정리해보았고 이 내용이 머리에 잘 들어올 수 있도록 반복 학습을 해보겠습니다!