Redis 정의 및 특징
2009년 살바토레 산필리포 가 개발 하였으며 오픈소스와 이후 기술적으로 대중적으로 인기를 얻었습니다.
Rdis는 인메모리 구조 저장소로, 데이터베이스, 캐시 및 메시지 브로커로 사용될 수 있습니다.
- Remote Dictionary Server
- Storage : 데이터 저장소 ( 데이터 관점 )
- Database : 전통적인 DBMS의 역할을 수행 ( 영속성 관점 )
- Middleware : 어플리케이션이 이용할 수 있는 유용한 기능을 제공하는 소프트웨어
- 인메모리 저장 : 모든 데이터는 메모리에 저장되어 빠른 읽기 및 쓰기 속도를 제공합니다. 필요한 경우, 디스크에 데이터를 지속적으로 저장할 수도 있습니다.
- 데이터 구조 : Redis는 단순한 키-값 저장소 입니다. 리스트, 세트, 해시, 비트맵, 하이퍼로그 등과 같은 다양한 데이터 구조를 제공합니다.
- 지속성 : 필요에 따라 데이터를 디스크에 저장하도록 구성할 수 있어서, 재시작 후에도 데이터 손실의 위험이 줄어 듭니다.
- 복제 : 주-복제(replication) 모드를 통해 데이터의 여러 복사본을 유지할 수 있어 가용성과 내구성을 높을 수 있습니다.
- 파타셔닝 : 데이터를 여러 서버에 분산 시킬수 있어서, 대용량 데이터와 트래픽을 처리하는데 도움이 됩니다.
- 트랜잭션 : 명령 그룹을 원자적으로 실행할 수 있습니다.
- 지원하는 클라이언트 : 대부분의 인기 있는 프로그래밍 언어에 대해 클라이언트 라이브러리가 있습니다.
Redis로 할 수 있는 것
- 캐시 : 인기 있는 사용 사례 중 하나로 높은 I/O 작업을 줄이기 위해 자주 사용되는 데이터를 메모리에 저장합니다.
- 세션저장 : 웹 세션 정보를 빠르게 저장하고 검색합니다.
- 메시지 브로커 : "PUB/SUB" 기능을 이용하여 메시지를 전송하고 구독할 수 있습니다.
- 실시간 분석 : 높은 처리량과 속도 때문에, Redis는 실시간 분석에서 데이터를 처리하는데 유용합니다.
- 리더보드 및 카운팅 : 게임 리더보드나 실시간 통계와 같은 곳에서 빠르게 데이터를 업데이트 하고 검색하는데 사용됩니다.
- 장애복구 : 지속성 기능을 이용하여 중요 데이터의 백업 복사본을 만들 수 있습니다.
- 공간 정보 분석 : "GEO" 명령어를 사용하여 위치 기반의 기능을 구현할 수 있습니다.
- 이벤트 및 로그 수집 : 빠른 쓰기 속도를 활용하여 대용량의 로그 또는 이벤트 데이터를 수집 합니다.
DataBase
- 데이터를 읽고 쓸 수 있는 기능을 제공하는 소프트웨어
- 어플리케이션이 데이터 저장을 간단히 처리할 수 있게 합니다.
- 관심사의 분리, 계층화
In-Memory DB 로서의 Redis
- 데이터를 디스크에 저장하지 않습니다.
- 휘발성인 RAM에 저장
- 빠른속도
DB와 래디시
메모리와 Disk의 속도 차이
- 용도에 맞게 DB와 Redis 활용
- 혼합해서 사용 ( Cache ), 세션 저장
- Redis의 영속성 확보 ( 백업 등 )
db와 래디시의 사용 방식
Key - Value Store로서의 Redis
Redis는 Key - Value 로 데이터가 저장 됩니다. 프로그래밍 언어 관점에서는 List, Map... 이며, DB의 데이터 모델 관점에서의 구조는 네트워크 모델, 계층형 모델 ( Tree ), 관계형 모델.. 로 연관지어 볼 수 있습니다.
key (ex : name) ------------------------------------------> |
Jay (key : name) |
Seoul (key : address) |
|
.... |
Key-value 구조의 장점
- 키로 접근한다는 단순성에서 오는 쉬운 구현과 사용성
- Hash를 이용해 값을 바로 읽으므로 속도가 빠름 ( 추가 연산 필요없음 )
- 분산 환경에서의 수평적 확정성
Key-value 구조의 단점
- Key를 통해서만 값을 읽을 수 있음
- 범위 검색 등의 복잡한 질의가 불가능
Key-value 스토어의 활용
- 언어의 자료구조 ( Java의 HashMap 등 ) 와 사용법이 동일하다고 보면 된다.
- NoSQL DB ( Redis, Riak, AWS DynamoDB ) -> key value 구조
- 단순한 구조의 데이터로 높은 성능과 확장성이 필요할 때 사용
- 과거에는 Session Store, Cache, Limit Rater, Job Queue 등과 같은 인메모리 기술을 별로도 구현해야 했던 공통적인 기능들을 Redis를 활용하면 쉽게 구현이 가능합니다.
'Redis' 카테고리의 다른 글
Redis 리더보드 만들기 (0) | 2023.12.11 |
---|---|
서비스 속도를 높이는 캐시 레이어 (0) | 2023.12.11 |
분산 환경에서 세션 스토어 만들기 (2) | 2023.12.11 |
Redis 설치 및 문법 (1) | 2023.12.11 |
RDBMS & NoSQL & Redis (0) | 2023.12.11 |