key, value 구조의 데이터를 저장하고 관리하기 위한 비관계형 데이터베이스
관리 시스템이다.
모든 데이터를 메모리에 저장하고 조회하기때문에 빠르고
지원하는 데이터 형식은
String, Set, Sorted Set, Hash, List 5가지 이다.
Redis의 특징
- In memory
- 데이터를 메모리에 저장하고 조회하는 특성때문에 빠르다라는 장점이 있다.
- 싱글스레드
- 서버하나에 여러개의 redis server를 띄울 수 있다. (master - slave)
- 메모리를 활용하면서 영속적으로 데이터를 보존함
Master - Slave란 레디스의 데이터를 실시간에 가깝게 다른 레디스에 복사하는 작업으로
서비스를 제공하던 레디스가 다운 되더라도 데이터를 받은 레디스 노드가 서비스를 계속 할 수 있도록
도와주는 역할을 한다.
Caching이란
나중에 요청할 결과를 미리 저장해둔 후 빠르게 서비스해 주는 것을 의미한다.
미리 결과를 캐시저장소에 저장하고 나중에 요청이 오면 그 요청에 대해서 DB를 거치지않고
바로 캐시저장소에 접근하여 요청을 처리하는 기법이다.
이러한 캐시저장소에 유저에게 자주 요청이 오는 데이터를 넣어두고 그 요청을 처리하면
올바른 용도로 사용하고 있다고 볼 수 있다.
캐싱 전략
Cache Aside 전략
처음 사용자가 요청했을때 캐시 메모리에 아무 데이터도 없는 상황
- 애플리케이션은 먼저 캐시 저장소에 데이터가 있는지 조회하고 데이터가 없음을 확인
- 애플리케이션은 DB에서 데이터를 조회하고 사용자에게 제공
- 애플리케이션은 DB에서 가져왔던 데이터를 캐시 저장소에 저장
다음 사용자가 요청했을때는 이미 캐시 저장소에 데이터가 있는 상황
- 애플리케이션은 먼저 캐시 저장소에 데이터가 있는지 조회한다. 데이터가 있으므로 제공한다.
Read-Through 전략
DB와 일렬로 배치하고 캐시 미스가 발생하면 데이터베이스에서 누락된 데이터를 캐시에 채우고
이것을 애플리케이션으로 반환한다.
Write-Through 전략

역시 DB와 일렬로 배치하고 데이터를 DB에 저장할때마다 캐시 저장소에 데이터를 추가하거나 업데이트한다.
캐시 저장소를 항상 최신 상태로 유지할 수 있다.
'web > JAVA & SpringBoot' 카테고리의 다른 글
CI / CD 란 (0) | 2023.01.05 |
---|---|
DBMS ? RDBMS? RDS? (0) | 2023.01.05 |
Elasticsearch (0) | 2023.01.04 |
ElasticSearch VS RDBMS ?? (0) | 2023.01.04 |
Github Action VS Jenkins (0) | 2023.01.04 |