[DB] Redis (레디스)

2023. 2. 8. 16:31기술 창고/DataBase

728x90
SMALL

Redis (레디스)

Redis (Remote Dictionary Server)는 이름 그대로 외부에서 사용가능한 Key - Value 형식의 해시 맵 형태의 서버이다.

그래서 별도의 쿼리 없이 Key를 통해 원하는 데이터를 빠르게 가져올 수 있다.

디스크에 데이터를 쓰는 구조가 아니라 메모리에서 데이터를 처리하기 때문에 작업 속도가 상당히 빠르다.

 

즉, Redis는 고성능 Key - Value 형식의 데이터 저장소로서 String, List, Hash, Set, Sorted Set 과 같은 여러 다양한 자료 구조를 지원하는 NoSQL 이다. 

 

혹은

 

Key, Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터 베이스 관리 시스템 (DBMS) 이라고도 말할 수 있다.

 

다양한 데이터 구조체를 지원함으로서 DB, Cache, Message Queue, Shared Memory 용도로 사용될 수 있다.

 

 

 

캐시 서버 (Cache Server)

Redis에 대해서 알아보기 이전에 Redis를 사용하는 이유 중 하나인 캐시 서버에 대해 알아보자.

 

MySql 과 같은 데이터 베이스가 있음에도 불구하고 Redis라는 인메모리 데이터 구조 저장소를 사용하는 이유는 데이터 베이스는 데이터를 물리 디스크에 직접 쓰기 때문에 서버에 문제가 발생하여 다운되더라도 데이터가 손실되지 않지만, 매번 디스크에 접근하다보면 사용자가 많으면 많을 수록 부하가 많아져서 이상이 발생할 수 있다.

 

이 때 캐시 서버를 도입하여 사용하는데 이에 적합한 저장소가 Redis이다.

캐시 서버는 한번 읽어온 데이터를 임의의 공간에 저장하여 다음에 읽을 때 빠르게 결과를 얻을 수 있도록 도와주는 임시 저장 공간이다.

같은 요청을 여러 다수의 유저가 발생시킨다면 직접적인 물리 디스크에 접근하게 된다면 서비스의 속도도 느려질 뿐더러 시스템에 부하가 발생할 수 있다.

캐시 서버를 활용하면 첫번째 요청으로 이미 캐시에 저장된 데이터를 물리 디스크를 거치지 않고 빠르게 얻을 수 있으며 시스템에 걸리는 부하도 줄일 수 있다.

 

즉, 캐시란 나중에 요청할 결과를 미리 저장해둔 후 빠르게 서비스해 주는 것을 목표로 하는 임시 저장소이다.

 

캐시 서버에는 크게 두 가지 패턴이 있다.

  1. Look Aside Cache
    • 클라이언트가 보낸 요청으로 인해 캐시에 원하는 데이터가 존재하는지 확인
    • 데이터가 캐시에 존재한다면 캐시에서 바로 반환
    • 데이터가 캐시에 존재하지 않는다면 DB, Server로 접근하여 데이터 반환
    • DB, Server 에서 가져온 데이터를 캐시에 저장
  2. Write Back
    • 모든 데이터를 캐시에 저장
    • 캐시에 저장된 데이터를 일정 주기마다 DB에 한꺼번에 저장 (배치 작업)
    • DB에 저장한 데이터를 캐시에서 제거

 

 

 

 

Redis 특징

(1) 영속성을 지원하는 인메모리 데이터 저장소

(2) 다양한 자료 구조 지원

(3) 싱글 스레드 방식으로 인해 원자적이고 독립적인 연산 수행 가능

(4) 읽기 성능 증대를 위해 서버 측 리플리케이션을 지원

(5) 쓰기 성능 증대를 위해 클라이언트 측 샤딩(sharding) 지원

(6) key - value 구조라서 쿼리를 사용할 필요 없음

(7) 디스크에 데이터를 쓰는 구조가 아니라 메모리에서 데이터를 처리하기 때문에 작업 속도가 상당히 빠르다

 

 

 

Redis 영속성

 Redis는 영속성을 보장하기 위해 디스크에 데이터를 저장할 수 있다.

서버가 내려가도 디스크에 저장된 데이터를 읽어서 메모리에 로딩한다.

디스크에 저장하는 방식은 두 가지가 있다.

 

  1. RDB 방식
    • 메모리에 있는 내용 전체를 순간적으로 디스크에 옮겨 담는 방식
  2. AOF 방식
    • Redis의 모든 write/update 연산 자체를 모두 log 파일에 기록하는 형태

 

 

Redis 컬렉션

Redis는 Key - Value 형식의 구조를 가지면서 다양한 데이터 구조체를 지원하는데, 이것을 컬렉션이라고 부른다.

이처럼 사진에서 볼 수 있다시피 Key가 될 수 있는 구조체가 다양하다.

 

 

 

Redis 싱글 스레드

Redis는 싱글 스레드를 사용하여 연산을 원자적 / 독립적으로 처리하여 Race Condition이 발생하지 않는다.

즉, 동시에 작업이 여러개 수행 요청이 들어오게 되면 각 작업을 하나씩 처리하고 완료한 후 다음 작업을 수행하므로 안전하게 해결한다.

동기화라고 볼 수도 있고 작업을 직렬적으로 수행한다고도 말할 수 있는 것이다.

 

 

 

 

[도움받은 출처 글]

https://wildeveloperetrain.tistory.com/21

 

Redis란? 레디스의 기본적인 개념 (인메모리 데이터 구조 저장소)

Redis란? Key, Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터 베이스 관리 시스템 (DBMS)입니다. 데이터베이스, 캐시, 메세지 브로커로 사용되며 인메모리

wildeveloperetrain.tistory.com

https://steady-coding.tistory.com/586

 

[데이터베이스] Redis란?

cs-study에서 스터디를 진행하고 있습니다. Cache Cache의 개념 Cache란 나중에 요청할 결과를 미리 저장해둔 후 빠르게 서비스해 주는 것을 의미한다. 즉, 미리 결과를 저장하고 나중에 요청이 오면 그

steady-coding.tistory.com

 

728x90
반응형
LIST