1. Redis란?
Remote Dictionary Server(redis)는 오픈소스 기반의 비관계형 데이터베이스 관리 시스템으로 모든 데이터를 메모리에 저장하고 조회하는 키-값 기반의 NoSQL 인메모리 데이터 저장소 입니다.
[캐시]
캐시란 한 번 읽어온 데이터를 임의의 공간에 저장하여 다음에 읽을 때도 빠르게 결과값을 받을 수 있도록 도와주는 공간입니다.
DB에서 한 번 불러온 데이터는 캐시에 저장 되어 다음에도 똑같은 데이터 요청이 있다면 캐시에서 반환하는 과정입니다.
1. 클라이언트는 서버에서 데이터 요청을 보냄
2. 서버는 캐시에 데이터가 있으면 캐시에서 가져옴
3. 캐시에 데이터가 없다면 DB에서 데이터를 가져옴
4. 가져온 데이터를 캐시에 저장하고 클라이언트에게 데이터 반환
[인메모리 DB]
인메모리에서는 외부 저장 장치(disk-based DB)가 아닌 메모리(in-memory DB)에 데이터를 저장합니다.
메모리 | RAM | CPU에서 이루어진 연산을 기록하는 메모리 CPU와 하드디스크를 연결시켜주는 장치 |
외부 저장 장치 | HDD, SDD | 컴퓨터의 정보, 문서, 자료 등을 저장하고 읽을 수 있는 장치 |
이렇게 외부 저장 장치(하드 디스크)에 데이터를 저장하지 않고 메모리(RAM)에 바로 데이터를 저장합니다.
외부 저장 장치를 사용했다면 메모리와 외부 저장 장치와의 병목 현상이 발생했겠지만 메모리만 사용하기 때문에 데이터 저장 속도가 빠릅니다.
in-memory DB | 메모리(RAM) | 속도는 빠르지만 영속성을 보장하지 않고(데이터 유실 가능), 저장 공간이 한정되어 있음 |
disk-based DB | 외부 저장 장치(디스크) | 데이터를 읽어 메모리에 올리고, 메모리에 올라간 데이터를 읽기 때문에 속도가 느림 |
2. Redis 특징
- single thread로 한 번에 딱 하나의 명령어만 실행합니다.
- 메모리에 위치하기 때문에 디스크보다 수용력은 적지만 접근 속도는 빠릅니다.
- Remote Data Storage로 여러 서버에서 같은 데이터를 공유하고 보고 싶을 때 사용합니다.
- 메모리에 상주한 데이터들이 휘발되지 않도록 디스크에 스냅샷을 저장할 수 있습니다. (persistence 지원)
[장점]
- 다양한 데이터 구조를 제공해 캐시 데이터 저장이나 Persistence Data Storage 에 사용 가능합니다.
(다른 in-memory 데이터베이스와의 가장 큰 차이점이 바로 다양한 자료 구조를 지원한다는 것입니다.)
- 키-값 기반으로 쿼리 필요없이 결과를 가져올 수 있습니다.
- 메모리에서 데이터를 처리하기 때문에 속도가 빠릅니다.
[단점]
- 메모리 할당, 해제 같은 관리 메모리 풀을 사용하지 않고 메모리 파편화가 발생할 수 있기 때문에 별도의 관리가 필요합니다.
- 서버에 장애가 발생하면 데이터 손실이 발생할 수 있습니다.
- 한 번에 딱 하나의 명령어만 실행하기 때문에 긴 처리시간이 필요한 명령어를 쓰면 불리합니다.
- 쓰기 연산이 copy on wirte 방식으로 동작하기 때문에 최대 메모리를 2배 이상까지 사용합니다.
3. Redis 사용 사례
- Remote Data Store를 이용한 경우
- 인증 토큰 개발
- Ranking Board 시스템
- 유저 API Limit
- Job Queue
'DevOps' 카테고리의 다른 글
[REDIS] redis 데이터 사용량 엑셀로 추출하기 (0) | 2022.03.18 |
---|