REDIS

SeungJoo
|2024. 4. 30. 14:08
728x90

Redis(Remote Dicionary Server)

Redis는 "Remote Dictionary Server"의 약자로, 주로 애플리케이션 캐시나 빠른 응답 속도를 가진 데이터베이스로 사용되는 오픈 소스 인메모리 NoSQL 키/값 저장소입니다. Redis는 디스크나 SSD가 아닌 메모리에 데이터를 저장하여 탁월한 속도, 안정성 및 성능을 제공합니다. 이를 통해 데이터를 메모리에 저장하여 읽기 및 쓰기 성능을 극대화하고, 데이터를 사용자에게 더 가깝게 배치하여 대기 시간을 최소화할 수 있습니다. Redis는 다양한 데이터 구조를 지원하며, Lua 스크립팅과 여러 수준의 온디스크 지속성 및 고가용성을 제공하여 유연하고 확장 가능한 데이터 관리 솔루션을 제공합니다.

Redis 특징

In-Memory 데이터 저장

모든 데이터를 RAM에 저장하며, 빠른 응답 속도와 높은 성능을 제공합니다. 다만, 백업이나 스냅샷은 예외입니다.

다인 스레드 처리

Redis는 단일 스레드에서 모든 작업을 처리합니다. 이는 간단한 디자인과 높은 일관성을 유지하게 도와줍니다.

Cluster Mode

Redis는 다중 노드에 데이터를 분산하여 안정성과 고가용성을 제공하는 클러스터 모드를 지원합니다. 데이터의 분산 저장과 관리를 통해 대규모 응용 프로그램에서도 안정적인 성능을 제공합니다.

영속성 옵션 제공

Redis는 RDB와 AOF를 통해 데이터를 영속화하는 옵션을 제공합니다. 이를 통해 데이터의 지속성을 보장하고, 시스템 장애 시에도 데이터 손실을 최소화할 수 있습니다.

Pub/Sub

Redis는 Pub/Sub패턴을 지원하여 쉽게 채팅, 알림 등의 어플리케이션을 개발할 수 있습니다. 이를 통해 이벤트 기반 아키텍처를 구현할 수 있으며, 실시간 데이터 스트리밍과 메시지 전달에 유용합니다.

Redis 장점

높은 성능

모든 데이터를 메모리에 저장하여 매우 빠른 일기/쓰기 속도를 보장합니다.

다양한 데이터 타입 지원

Redis는 다양한 데이터 타입을 지원하며, 효과적으로 활용하여 다양한 기능을 구현할 수 있습니다.

다양한 클라이언트 라이브러리

Python, Java등 다양한 언오로 작성된 클라이언트 라이브러리를 제공하여 다양한 개발 환경에서 Redis를 쉽게 사용할 수 있습니다.

Redis 사용사례

Caching (임시 비밀번호, 로그인 세션)

Redis는 메모리에 데이터를 저장하여 빠른 읽기/쓰기 속도를 제공하므로, 임시 비밀번호 생성이나 로그인 세션 관리와 같은 작업에 적합합니다.

Rate Limiter (고정 창 및 슬라이딩 창 비율 제한)

Redis는 주어진 시간 동안의 동작 수를 추적하고 제한하는 데 사용될 수 있습니다. 고정 창 및 슬라이딩 창 비율 제한 알고리즘을 구현하여 요청이나 작업의 비율을 제한할 수 있습니다.

Message Broker (메시지 큐)

Redis는 Pub/Sub 패턴을 지원하여 메시지 브로커 또는 메시지 큐로 활용할 수 있습니다. 다양한 시스템 간 통신이나 이벤트 기반 아키텍처를 구현할 때 유용합니다.

실시간 분석 / 계산 (순위표)

Redis는 빠른 속도와 내장된 데이터 구조를 통해 실시간 분석 및 계산을 수행할 수 있습니다. 순위표 또는 리더보드를 실시간으로 업데이트하고 조회하는 데 사용될 수 있습니다.

반경 탐색 (Geofencing)

Redis의 지리적 위치 데이터 형식과 관련된 기능을 활용하여 지오펜싱과 같은 반경 탐색 작업을 수행할 수 있습니다.

방문자 수 계산

Redis는 카운터와 같은 기본적인 데이터 구조를 제공하여 방문자 수를 실시간으로 추적하고 계산하는 데 사용될 수 있습니다.

실시간 채팅 (Pub/Sub 패턴)

Redis의 Pub/Sub 기능을 활용하여 실시간 채팅 애플리케이션을 구현할 수 있습니다. 사용자 간의 메시지를 실시간으로 전송하고 처리할 수 있습니다.

Persistence

Redis는 캐시로 주로 사용되지만 데이터 영속성을 위한 다양한 옵션을 제공합니다. SSD와 같은 영구적인 저장 장치에 데이터를 저장하여 데이터 유실을 방지할 수 있습니다. 이를 위해 RDB와 AOF라는 두 가지 주요 옵션이 있습니다.

RDB는 주기적으로 데이터의 스냅샷을 생성하여 재난 복구나 데이터 복제에 사용됩니다. 그러나 일부 데이터 유실의 위험이 있고, 스냅샷 생성 중 클라이언트 요청 지연이 발생할 수 있습니다.

AOF는 Redis에 적용되는 모든 Write 작업을 로그로 저장하여 데이터 유실의 위험을 줄입니다. 그러나 재난 복구 시 Write 작업을 다시 적용하기 때문에 RDB보다 느릴 수 있습니다. Redis는 RDB와 AOF를 함께 사용하는 옵션도 제공합니다.

Caching

캐싱은 데이터를 빠르게 읽고 처리하기 위해 임시로 저장하는 기술입니다. 계산된 값을 임시로 저장하여 동일한 계산 또는 요청이 발생할 때 다시 계산하지 않고 저장된 값을 사용합니다.

캐시는 다양한 사용 사례에서 활용됩니다:
CPU 캐시: CPU와 RAM 간의 속도 차이로 인한 지연을 줄이기 위해 사용됩니다.
웹 브라우저 캐싱: 웹 페이지 데이터를 로컬 저장소에 저장하여 해당 페이지를 재방문할 때 사용됩니다.
DNS 캐싱: 이전에 조회한 도메인 이름과 해당하는 IP 주소를 저장하여 재요청 시 사용됩니다.
데이터베이스 캐싱: 데이터베이스 조회나 계산 결과를 저장하여 재요청 시 사용됩니다.
CDN: 원본 서버의 컨텐츠를 가까운 서버에 저장하여 사용자의 요청을 처리합니다.
어플리케이션 캐싱: 애플리케이션에서 데이터나 계산 결과를 캐싱하여 반복적인 작업을 줄입니다.

Redis 설치

Install Redis on Windows | Docs

curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list

sudo apt-get update
sudo apt-get install redis

Redis 실행

sudo service redis-server start

redis-cli

Redis SET, GET, DEL TEST

728x90

'DB' 카테고리의 다른 글

[Redis] Sorted Sets, Streams  (0) 2024.05.03
[Redis]Sets,Hashes  (0) 2024.05.02
[Redis] String, List  (1) 2024.05.01