여름의 서재
[DB] Redis (REmote DIctionary Server) 본문
💡 Redis란?
: 키-값 기반의 인-메모리 데이터 저장소. 키-값 기반이기 때문에 쿼리를 따로 할 필요없이 결과를 바로 가져올 수 있고 디스크에 데이터를 쓰는 구조가 아니라 메모리에서 데이터를 처리하기 때문에 속도가 빠름.
💡 Redis 특징
1. 빠른 성능
: 디스크에 데이터를 쓰는 구조가 아니라 메모리에서 데이터를 처리하기 때문에 속도가 빠름.
2. 인 메모리 데이터 구조
- String : 기본적인 데이터 유형. 텍스트 또는 이진 데이터가 이에 해당하며 최대 크기는 512MB
- Lists : Array 형식의 데이터 구조. 처음과 끝에 데이터를 넣고 빼는 건 빠르지만, 중간에 데이터를 삽입할 때는 어려움이 있음.
- Sets : 순서가 없는 Strings 데이터 집합. 중복된 데이터 하나로 처리.
- sorted Sets : Sets과 같은 구조이지만, Scores를 통해서 순서를 정할 수 있음.
- Hashed : 키-값의 구조를 여러 개 가진 objects 타입을 저장하기 좋은 구조.
3. 복제 및 지속성
: Redis는 마스터-슬레이브 아키텍처를 사용하며 비동기식 복제를 지원하여 데이터가 여러 슬레이브 서버에 복제될 수 있습니다. 이렇게 하면 주 서버에 장애가 발생하는 경우 요청이 여러 서버로 분산될 수 있으므로 향상된 읽기 성능과 복구 기능을 모두 제공할 수 있습니다.
Redis는 안정성을 제공하기 위해 특정 시점 스냅샷(Redis 데이터 세트를 디스크로 복사)과 데이터가 변경될 때마다 이를 디스크에 저장하는 Append Only File(AOF) 생성을 모두 지원합니다. 두 방법 모두 모두 장애 발생 시 Redis 데이터를 신속하게 복원할 수 있습니다
💡 Redis 사용 사례
- 캐싱
: 다른 데이터베이스 "앞"에 배치된 Redis는 성능이 뛰어난 인 메모리 캐시를 생성하여 액세스 지연 시간을 줄이고, 처리량을 늘리며, 관계형 또는 NoSQL 데이터베이스의 부담을 줄여줍니다.
- 세션 관리
: Redis를 세션 키에 대한 적절한 TTL과 함께 빠른 키 값 스토어로 사용하면 간단하게 세션 정보를 관리할 수 있습니다.
💡 Memcached
: Redis와 동일한 인메모리 데이터 저장소. 분산 메모리 캐시 시스템. 멀티스레드를 지원하기 때문에, 멀티프로세스코어를 사용할 수 있습니다. 따라서, 스케일업을 통하여 더욱 많은 작업처리를 할 수 있음. 자료 구조는 문자열 형태로만 지원.
'CS > DB' 카테고리의 다른 글
[DB] RDBMS & NoSQL & CAP 이론 (0) | 2022.01.21 |
---|---|
[DB] 데이터 베이스 기초 (0) | 2021.10.02 |
[DB] SQL with django ORM (0) | 2021.10.01 |