Redis
[Redis] redis에 대해
누구세연
2024. 4. 28. 17:54
redis란?
Redis는 데이터를 저장하는 서버입니다.
이 서버는 데이터를 저장할 때 간단한 key-value 형태로 저장합니다. 그래서 이 값을 꺼내 쓸 때는 키를 이용해서 꺼내 쓰는 것입니다.
주로 세션 정보, 캐싱, 랭킹, 메시지 브로커 등 다양한 용도로 사용하고 있습니다. 데이터를 다루는 기능도 다양해서 문자열, 숫자, 리스트, 해시맵 등 저장하고 다룰 수 있습니다. 그래서 데이터를 빠르고 다양하게 꺼내쓸 수 있습니다.
redis 특징
- 높은 성능과 속도
Redis는 메모리 기반의 데이터 저장소로서 매우 빠른 응답 속도를 제공합니다.
이는 데이터를 디스크에 저장하는 대신 메모리에 저장하여 빠른 데이터 액세스를 가능하게 합니다. - 다양한 데이터 구조 지원
Redis는 단순한 key-value 형태 뿐만 아니라 문자열, 리스트, 해시맵, 집합 등 다양한 데이터 구조를 지원합니다.
이는 다양한 형태의 데이터를 저장하고 처리할 수 있도록 합니다. - 높은 확장성
Redis는 클러스터링을 통해 높은 확장성을 제공합니다.
이는 데이터의 양이나 요청량이 증가해도 시스템을 쉽게 확장할 수 있음을 의미합니다. - 내구성을 위한 영속성 기능
Redis는 데이터를 메모리에 저장하지만, 필요에 따라 디스크에도 저장할 수 있습니다.
이를 통해 데이터 손실을 방지하고 시스템의 내구성을 높일 수 있습니다.
redis 장점
- 빠른 속도와 응답성
Redis는 메모리 기반의 데이터 저장소로서 매우 빠른 속도와 높은 응답성을 제공합니다.
이는 웹 애플리케이션에서 빠른 데이터 액세스와 처리를 가능하게 합니다. - 다양한 데이터 구조
Redis는 다양한 데이터 구조 지원은 데이터를 보다 유연하게 저장하고 처리할 수 있도록 합니다.
이는 다양한 형태의 애플리케이션에서 활용할 수 있는 장점이 됩니다. - 높은 확장성
Redis의 클러스터링 기능은 시스템을 쉽게 확장할 수 있도록 합니다.
이는 시스템이 증가하는 데이터 양이나 요청량에 대응하기 쉽도록 해줍니다.
redis 단점
- 메모리 제약
Redis는 메모리 기반의 데이터 저장소이기 때문에 메모리 제약이 있을 수 있습니다.
매우 큰 데이터를 메모리가 부족한 환경에서는 사용에 제한이 있을 수 있습니다. - 영속성 기능의 성능 저하
데이터를 디스크에 저장하는 영속성 기능을 사용할 경우 속도가 저하될 수 있습니다.
이는 메모리와 디스크 간의 데이터 동기화 과정에서 발생할 수 있는 성능 저하로 이어질 수 있습니다.
redis의 Pub/Sub
redis는 Publish-Subscribe(발행-구독) 모델을 지원합니다.
이 모델은 메시지 브로커 시스템에서 주로 사용되며, Publisher(발행자)가 메시지를 발행하고, 이를 관심 있는 Subscriber(구독자)가 구독하여 메시지를 수신하는 방식으로 동작합니다.
Pub/Sub은 다음과 같은 특징을 갖습니다.
- 비동기 통신
발행자와 구독자간의 통신은 비동기적으로 이루어집니다.
즉, 발행자가 메시지를 보낸 후 바로 처리하지 않고, 구독자가 메시지를 받을 때까지 대기하지 않습니다. - 다중 구독
하나의 발행자가 여러 개의 채널에 메시지를 발행할 수 있고, 각 채널에 여러 구독자가 구독할 수 있습니다. - 이벤트 기반 아키텍처
Pub/Sub은 이벤트 기반 아키텍처에서 유용하게 사용됩니다.
예를 들어, 실시간 알림, 채팅, 실시간 데이터 처리 등에 활용됩니다. - 확장성
Redis의 Pub/Sub은 클러스터링을 통해 확장이 가능하며, 대규모 시스템에서도 안정적으로 동작할 수 있습니다.
Pub/Sub의 주요 용어는 다음과 같습니다.
- Publisher(발행자): 메시지를 발행하는 클라이언트 또는 애플리케이션입니다.
- Subscriber(구독자): 특정 채널에 구독하여 메시지를 수신하는 클라이언트 또는 애플리케이션입니다.
- Channel(채널): 메시지를 발행하고 구독하는 데 사용되는 특정 주제 또는 주제 영역입니다.
Pub/Sub 기능을 사용하면 느슨하게 결합된 컴포넌트 간에 실시간으로 데이터를 전달하고 처리할 수 있어서 실시간 애플리케이션 개발에 매우 유용합니다.
redis 사례
- 세션 캐싱
웹 애플리케이션에서 사용자 세션 정보를 메모리에 저장하여 빠르게 접근할 수 있도록 합니다.
이를 통해 사용자 경험을 향상시킬 수 있습니다. - 캐싱
Redis는 메모리 기반의 데이터 저장소로서 캐싱에 매우 적합합니다.
데이터 베이스나 다른 소스에서 가져온 데이터를 Redis에 캐싱하여 다음 요청에 더 빠르게 접근할 수 있습니다. - 메시지 브로커
Redis의 Pub/Sub 기능을 사용하여 메시지 브로커로 활용할 수 있습니다.
이를 통해 이벤트 기반 아키텍처나 실시간 알림 기능을 구현할 수 있습니다. - 세션 스토어
Redis는 분산 환경에서도 빠르게 동작하므로 세션 관리에 이상적입니다.
여러 서버 간에 세션 정보를 공유하거나 분산 시스템에서 세션을 관리할 때 사용됩니다. - 인메모리 데이터베이스
Redis는 메모리에 데이터를 저장하고 디스크에는 필요한 경우만 저장하여 높은 성능을 제공합니다.
따라서 작은 규모의 데이터 베이스로 사용되기도 합니다.