-
[Redis] Redis 소개와 특징📖 개발 공부/redis 2023. 8. 4. 21:50
패스트캠퍼스의 "백엔드 개발자를 위한 한 번에 끝내는 대용량 데이터 & 트래픽 처리 초격차 패키지 Online." 강의와 그외에 추가로 정리한 내용입니다.
목차
1. Redis의 정의
2. In-memoryDB로서의 Redis
3. Key-value store로서의 Redis
4. Redis 사용 사례Redis의 정의
- Remote Dictionary Server (원격 Dictionary 방식으로 데이터를 저장하는 서버)
- Redis는 빠른 오픈 소스 인 메모리 키 값 데이터 구조 스토어이다.
- Storage: 데이터 저장소(데이터 관점)
프로그램이 종료되더라도 데이터가 남아있게 된다. - Database: 전통적은 DBMS의 역할을 수행 (영속성 관점)
- 영속성: 데이터 저장해두고 유실하지 않도록 한다.
- 데이터 저장소 관점에서 비슷한 역할을 수행한다. 추가적인 백업 방식을 이용해 어느정도 영속성을 제공한다.
- Middleware: 어플리케이션이 이용할 수 있는 유용한 기능을 제공하는 소프트웨어
In-memoryDB로서의 Redis
In-memory DB란?
- 데이터를 디스크에 저장하지 않는다.
- 휘발성인 RAM에 저장한다.
- 빠른 속도를 제공한다.
Read Write 비교 HDD 130 MB/s 120 MB/s SDD 500 MB/s 450 MB/s HDD보다 3~4배 빠름 RAM 20,000 MB/s 20,000 MB/s SSD보다 40배 빠름 빠른 속도와 이 휘발성 문제는 어떻게 절충시킬까?
빠른 속도와 휘발성의 절충
1) 용도에 맞게 DB와 Redis 를 사용한다.
- Redis: 세션 데이터 같은 단기적인 데이터를 저장하는 것.라이프 사이클을 짧게 가져가는 데이터
→ 유저에게 미치는 영향: 로그인 상태가 풀리는 것 (영향 크게 받지 않음) - DB: 유저의 계좌 정보같이 바뀌면 큰 문제를 야기하는 데이터(영속성, 무결성을 크게 요구하는 케이스)
2) 혼합해서 사용한다 (Cache)
- for 어플리케이션과 DB 사이에서 디스크 접근 횟수를 줄이기 위해
3) Redis의 영속성을 확보한다 (백업 등)
- 하지만 정말 무결성이 중요한 데이터는 DB를 쓰고 있다.
Key-value store로서의 Redis
데이터 저장소의 구조
- 프로그램 언어에서의 데이터 구조(Array, List, Map, 등)
각각 다른 인터페이스와 성능을 가지고 있다. - DB의 데이터 모델 관점에서의 구조 (네트워크 모델, 계층형 모델(Tree), 관계형 모델, …)
key-value store란?
- 특정 값을 key로 해서 그와 연관된 데이터를 value로 저장한다. (=Map)
- 가장 단순한 데이터 저장 방식이다.
- 단순한 만큼 빠르고 성능이 좋다.
장점
- 단순성에서 오는 쉬운 구현과 사용성
- Hash를 이용해 값을 바로 읽어서 속도가 빠르다.
- 분산 환경에서의 수평적 확장성
- DB에 데이터가 많아졌을 때 이 데이트를 논리적이거나 물리적으로 다른 머신/다른 지역에 수평적으로 늘리는 것을 뜻한다. → 스케일링
- 여기서 큰 강점이 있다.
단점
- key를 통해서만 값을 읽을 수 있다.
- 데이터 검색 불가.
- 범위 검색 등의 복잡한 질의가 불가능하다.
key-value 스토어의 활용
- 언어의 자료구조 (Java의 HashMap 등)
- NoSQL DB (Redis, AWS DynamoDB)
- 단순한 구조의 데이터로 높은 성능과 확장성이 필요할 때 사용한다.
Redis 사용 사례
Cache (캐싱)
- 다른 데이터베이스 "앞"에 배치된 Redis는 성능이 뛰어난 인 메모리 캐시를 생성하여 액세스 지연 시간을 줄이고, 처리량을 늘리며, 관계형 또는 NoSQL 데이터베이스의 부담을 줄여준다.
Session Store (세션 관리)
- Redis는 세션 관리 작업에 매우 적합하다. Redis를 세션 키에 대한 적절한 TTL과 함께 빠른 키 값 스토어로 사용하면 간단하게 세션 정보를 관리할 수 있다. 세션 관리는 주로 게임, 전자 상거래 웹 사이트, 소셜 미디어 플랫폼을 비롯한 온라인 애플리케이션에 필요하다.
Limit Rater (속도 제한)
- ex) 특정 api의 분당 호출 수 제한
- Redis는 이벤트 속도를 측정하고 필요한 경우 제한할 수 있다. 클라이언트의 API 키에 연결된 Redis 카운터를 사용하여 특정 기간 동안 액세스 요청의 수를 세고 한도가 초과되는 경우 조치를 취할 수 있다. 속도 제한기는 포럼의 게시물 수를 제한하고, 리소스 사용량을 제한하며, 스패머의 영향을 억제하는 데 주로 사용된다.
대기열
- ex) 여러 서버들 간의 task job을 저장해놨다가 한쪽에서 소비해가고.. 이런 형태
- Redis List 데이터 구조를 사용하면 간단한 영구 대기열을 손쉽게 구현할 수 있다. Redis List는 자동 작업 및 차단 기능을 제공하므로 신뢰할 수 있는 메시지 브로커 또는 순환 목록이 필요한 다양한 애플리케이션에 적합하다.
- 다음에 실습해봐야징
채팅 및 메시징
- Redis에서는 pub/sub 기능을 지원한다. pub/sub 를 사용하여 게시된 이벤트를 기반으로 작업을 트리거할 수 있다.
기존에는 개발 방식이 RDB 를 이용해서 복잡한 데이터와 관계를 정의해서 저장하는 방식이었다면, 요즘에는 데이터를 단순화하고 분산을 많이 시킬 수 있는 방법으로 변화하고 있다.
→ key-value store의 활용성이 커졌고, Redis가 많이 쓰이게 되었다.
🔗 참고 링크
728x90반응형'📖 개발 공부 > redis' 카테고리의 다른 글
[Redis] 안정성과 가용성을 위한 클러스터 (0) 2023.08.16 [Redis] Redis의 Data Type 공부 (Strings, Lists, Sets, Hashes, Sorted Sets, Bitmaps, HyperLogLog) (0) 2023.08.06