Search
Duplicate
📁

⭐ 말로만 듣던 레디스, 로컬 캐싱하고의 차이점

레디스란?

레디스(Redis)는 Remote Dictionary Server.
레디스는 고성능의 키-값 형태의 비관계형 데이터베이스(Nosql)로, 데이터를 메모리에 저장하여 빠른 읽기와 쓰기 성능을 제공한다. 주로 캐싱, 세션 관리, pub/sub, 순위표 등이 있다. 웹, 모바일, 게임, 광고 기술 및 IoT 애플리케이션에서 널리 사용된다.
근데 이렇게 보면 뭔 소리인지 잘 모르겠다. 그래서 더 쉽게 설명하자면
모든 데이터를 메모리에 저장하고 조회하는 인메모리 DB로, 메모리 기반의 키-값 구조의 데이터 관리 시스템(DBMS).
즉, 일종의 NoSQL 데이터베이스면서 빠르고 오픈 소스인 인메모리 키-값 데이터 구조 데이터베이스다.
레디스는 속도가 빠르고 사용이 간편하여 높은 성능이 필요한 애플리케이션에 적합함.
AWS는 Amazon ElastiCache를 통해 레디스를 지원하며, 사용자는 AWS EC2에서 자체 관리형 레디스를 실행할 수도 있다.

레디스의 주요 특징

인메모리 데이터 저장
모든 데이터를 메모리에 저장하고, 필요에 따라 디스크에 비동기식으로 데이터를 기록할 수 있다.
다양한 데이터 구조 지원
문자열, 리스트, 세트, 정렬된 세트, 해시, 비트맵, 하이퍼로그로그와 같은 다양한 데이터 구조를 지원한다.
하이퍼로그로그 매우 큰 데이터 집합에서 고유 항목의 개수를 빠르게 계산할 수 있게 해주는 효율적인 데이터 구조다. 이 데이터 구조는 적은 메모리로 큰 데이터 셋의 근사치를 제공하여, 메모리 사용량을 줄이면서도 유용한 결과를 얻을 수 있다.
원자성
모든 명령어는 원자적으로 실행된다. 명령어 집합을 한 번에 실행할 수 있는 트랜잭션 기능도 제공한다.
원자성이 뭐에요? 작업이 전부 성공하거나 전부 실패하는 것을 보장. 즉, 작업 도중 오류가 발생하면 작업 전 상태로 되돌린다.
지속성 옵션
RDB(Redis Database) 및 AOF(Append Only File)의 두 가지 지속성 옵션을 제공하여 데이터 손실 위험을 줄인다.
지속성: 데이터를 메모리에 저장하지만, 데이터를 영구적으로 보존하기 위해 디스크에도 저장하는 옵션.
AOF (Append Only File): 모든 쓰기 작업을 로그 파일에 순차적으로 기록하여 데이터 복구를 가능하게 한다.
RDB (Redis Database): 일정 주기마다 데이터베이스 상태를 스냅샷으로 저장하여 데이터 백업을 가능하게 한다.
레플리케이션 및 클러스터링 지원
데이터 복제 및 분산 처리를 지원하여 고가용성 및 확장성을 보장한다.
레플리케이션 (Replication): 데이터를 여러 서버에 복제하여 고가용성을 보장하고, 데이터 손실 위험을 줄인다.
클러스터링 (Clustering): 여러 레디스 인스턴스를 하나의 클러스터로 구성하여 데이터 분산 저장과 부하 분산을 가능하게 한다.

레디스 설치 및 사용 방법

레디스를 사용하기 위해서는 먼저 레디스 서버를 설치해야함.

Linux 기반 시스템에서 레디스를 설치하는 방법

1.
레디스 설치
sudo apt update sudo apt install redis-server
Bash
복사
2.
레디스 서비스 실행 확인
sudo systemctl status redis
Bash
복사
3.
레디스 설정 변경 (선택적)
/etc/redis/redis.conf 파일을 수정하여 설정을 변경할 수 있다.
예를 들어, 비밀번호 설정, 포트 변경 등을 할 수 있다.
4.
레디스 클라이언트를 통한 접속 및 테스트
redis-cli
Bash
복사
SET mykey "Hello Redis" GET mykey
Bash
복사
위 명령은 mykey라는 키에 Hello Redis라는 값을 저장하고, 저장된 값을 조회한다.

레디스의 활용 예

캐싱
데이터베이스 쿼리 결과, 웹 페이지 또는 계산 결과를 캐시하여 애플리케이션의 응답 속도를 향상시킨다.
레디스를 같은 서버에 캐싱하는 이유는 성능 향상, 부하 분산, 유연성을 위해서이다.
세션 관리
사용자 세션을 레디스에 저장하여 웹 애플리케이션의 세션 관리를 간소화한다.
메시징
레디스의 퍼블리시/서브스크라이브 모델을 사용하여 실시간 메시징 시스템을 구축할 수 있다.
리더보드
정렬된 세트를 사용하여 게임 리더보드 등의 순위 정보를 관리한다.

로컬 캐싱을 사용하지 않고 레디스를 사용하는 이유는?

물론 항상 레디스를 사용하는 것이 좋은 건 아니다..
로컬 캐시를 사용하는 경우 접근 속도가 빠르고 설정이 간단하지만, 일관성 문제와 메모리 제한, 확장성 부족의 단점이 있다.
하지만 레디스는 일관성 유지, 확장성, 데이터 영속성의 장점이 있지만, 네트워크 지연과 관리 복잡성, 비용이 발생할 수 있다. 레디스는 그 특성상 빠른 데이터 처리가 필요한 다양한 시나리오에서 유용하게 사용될 수 있다. 설정과 관리가 비교적 간단하며, 고성능을 필요로 하는 애플리케이션에 적합하다.
단일 서버: 로컬 캐싱이 적합, 빠른 속도와 간편한 설정.
분산 서버: 레디스가 적합, 데이터 일관성, 확장성, 다양한 데이터 구조 지원.

로컬 캐싱(Local Caching)

특징
속도: 메모리 접근이 네트워크를 거치지 않아 매우 빠르다.
구현: 애플리케이션 서버 내부에 캐시를 저장.
관리: 간단한 설정으로 사용 가능.
장점
빠른 접근 속도: 네트워크 지연이 없어 응답 속도가 빠르다.
간편한 설정: 별도의 인프라 필요 없이 쉽게 구현 가능.
단점
일관성 문제: 여러 서버 간의 데이터 일관성을 유지하기 어렵다.
메모리 제한: 서버 메모리 용량이 한정적이다.
확장성 부족: 서버 수가 늘어나면 캐시 관리가 복잡해진다.
사용 시기
단일 서버 애플리케이션에서 빠른 데이터 접근이 필요한 경우.
간단한 데이터 캐싱이 필요한 경우.

레디스(Redis)

특징
속도: 메모리에 데이터를 저장하여 빠른 성능 제공.
구현: 독립된 캐시 서버로 동작.
관리: 별도의 인프라 관리 필요.
장점
일관성 유지: 여러 서버 간의 데이터 일관성을 보장.
확장성: 클러스터링을 통해 확장 가능.
다양한 데이터 구조 지원: 문자열, 리스트, 해시 등 다양한 데이터 구조를 지원.
지속성: RDB와 AOF를 통해 데이터 영속성 제공 가능.
단점
네트워크 지연: 네트워크를 통한 접근으로 인해 약간의 지연 발생.
복잡성 증가: 설정 및 관리가 복잡.
비용: 클라우드 서비스 사용 시 비용 발생 가능.
사용 시기
분산 시스템에서 여러 서버 간의 데이터 일관성이 필요한 경우.
확장성과 고가용성이 중요한 대규모 애플리케이션.
세션 관리, 실시간 데이터 처리, 메시징 큐 등의 복잡한 데이터 처리가 필요한 경우.

요약

로컬 캐싱
빠른 접근 속도와 간편한 설정이 장점이지만, 일관성과 확장성에 한계가 있다.
단일 서버 환경이나 간단한 데이터 캐싱에 적합하다.
레디스
데이터 일관성, 확장성, 다양한 데이터 구조 지원이 장점이지만, 네트워크 지연과 복잡성이 따른다.
분산 시스템이나 대규모 애플리케이션에 적합하다.

참고