[DBMS] 레디스(Redis)

2023. 12. 18. 21:31· 백엔드/DBMS
목차
  1. Redis란?
  2. Redis 데이터 백업 방식
  3. Redis 사용 용도
  4. Redis 자료 구조
728x90

 

Redis란?

키-밸류(Key-Value) 데이터 구조에 기반해 데이터들을 저장하고 관리하기 위한 오픈소스 기반의 비관계형 데이터베이스 관리 시스템이다. 다양한 메모리 구조 집합을 제공하여 데이터 저장 뿐만 아니라 다양한 목적으로 사용할 수 있다.

 

장점은 빠른 처리 속도, 단점은 저장 공간의 제약


레디스는 메모리에 데이터를 저장하기 때문에 빠른 처리 속도가 장점이지만 저장 공간에 제약이 있다. 이 단점 때문에 주로 보조 데이터 저장소로 사용한다. 레디스 클러스트 기능을 사용하여 저장 공간을 확장할 수 있다. 또한 저장된 데이터를 영구적으로 디스크에 저장할 수 있는 백업 기능도 제공한다.

 

 

Redis 데이터 백업 방식

메모리에 데이터를 관리하므로 매우 빠른 속도로 데이터를 저장 및 조회할 수 있다. 하지만 메모리 특성상 저장된 데이터는 사라질 가능성이 있다. 이를 보완하고자 레디스는 관리하고 있는 데이터에 영속성을 제공한다. 즉 메모리에 있는 데이터를 디스크에 백업하는 기능을 제공하며, RDB 방식이나, AOF 방식으로 백업할 수 있다.

1) RDB(Redis Database) : 메모리에 있는 데이터 전체에서 스냅샷을 작성하고, 이를 디스크로 저장하는 방식

- 특정 시간마다 여러 개의 스냅샷을 생성하고, 데이터를 복원해야 한다면 스냅샷 파일을 그대로 로딩만 하면 됨.

- 하지만, 스냅샷 이후 변경된 데이터는 복구할 수 없음 -> 데이터 유실(loss)

 

2) AOF(Append Only File) : 데이터가 변경되는 이벤트가 발생하면 이를 모두 로그에 저장하는 방식.

- 데이터를 생성, 수정, 삭제하는 이벤트를 초 단위로 취합 및 로그 파일에 작성

- 모든 데이터의 변경 기록들을 보관하고 있으므로 최신 데이터 정보를 백업 가능

- RDB 방식에 비해 데이터 유실량이 적음(초 단위 데이터는 유실 가능)

- RDB 방식보다 로딩 속도가 느리고 파일 크기가 큰 것이 단점

 

=> 일부 데이터 손실에 영향이 받지 않는 경우(캐시로만 사용할 때), RDB

=> 장애 상황 직전까지의 모든 데이터가 보장되어야 할 경우, AOF

=> 강력한 내구성이 필요한 경우, RDB + AOF

=> 레디스는 일반적으로 AOF와 RDB를 동시에 사용하여 데이터를 백업한다.

 

 

Redis 사용 용도

1. 주 데이터 저장소 : AOF, RDB 백업 기능과 레디스 아키텍처를 사용하여 주 저장소로 데이터를 저장할 수 있다. 하지만 메모리 특성상 용량이 큰 데이터 저장소로는 적절하지 않다.

2. 데이터 캐시 : 인메모리 데이터 저장소이므로 주 저장소의 데이터를 캐시하여 빠르게 데이터를 읽을 수 있다. 캐시된 데이터는 한 곳에 저장되는 중앙 집중형 구조로 구성한다 -> 데이터 일관성 유지 가능

3. 분산 락(Distributed lock) : 분산 환경에서 여러 시스템이 동시에 데이터를 처리할 때는 특정 공유 자원의 사용 여부를 검증하여 데드락을 방지할 필요가 있다. 이때 레디스를 분산 락으로 사용할 수 있다.

4. 순위 계산 : 레디스에서 제공하는 ZSet(Sorted Set) 자료 구조를 이용하여 순위 계산 용도로 사용하기도 한다. ZSet은 정렬 기능이 포함된 Set 자료 구조 이므로 쉽고 빠르게 순위를 계산할 수 있다.

 

 

Redis 자료 구조

 

레디스는 다양한 형태의 자료 구조를 제공한다. 기본적으로 키-밸류(Key-Value) 형태의 구조를 띄며, 밸류가 사용하는 자료 구조에 따라 여러 기능을 사용할 수 있다. 즉, 어떤 형태의 자료구조를 사용하더라도 키는 반드시 필요하다.

 

- String : 문자열 데이터를 저장 및 조회할 수 있는 기본 자료 구조

- Bitmap : 비트 연산을 사용할 수 있는 자료 구조

- List : 리스트 데이터, 그림과 같이 리스트 아이템은 링크드 리스트(Linked List) 형태로 서로 연결되어 있다.

- Hashe : 해시 자료 구조, 해시 필드(Field)와 밸류(Value)로 구성된다. 해시 데이터는 레디스 키와 매핑되어 있으므로 해시 밸류를 생성 및 조회하려면 레디스 키와 필드를 동시에 사용해야 한다.

- Set : 리스트와 비슷한 집합 데이터, 중복을 허용하지 않는 자료구조.

- Sorted Set(ZSet) : Set과 비슷한 집합 데이터, 정렬 기능을 제공한다. 중복을 허용하지 않으며, 이 때 데이터는 스코어와 함께 저장할 수 있다. Sorted Set은 스코어 값을 사용하여 정렬하고, 스코어 값이 중복되면 사전순으로 정렬한다.

- Hypperloglog : 집합의 데이터 개수를 추정할 수 있는 알고리즘 이름이자 이를 사용할 수 있는 레디스 자료구조이다.

- Stream : 레디스 5.0 버전부터 제공하는 기능, 이벤트성 로그를 처리할 수 있다. 일종의 메세지 서비스 기능. 스트림 키 이름과 값, 필드를 사용할 수 있는 자료 구조 형태를 띈다.

반응형

'백엔드 > DBMS' 카테고리의 다른 글

[DATAGRIP] 트랜잭션 commit 수동/자동 설정  (0) 2024.06.20
[SQL] 프로시저와 함수의 차이  (0) 2024.01.16
  1. Redis란?
  2. Redis 데이터 백업 방식
  3. Redis 사용 용도
  4. Redis 자료 구조
'백엔드/DBMS' 카테고리의 다른 글
  • [DATAGRIP] 트랜잭션 commit 수동/자동 설정
  • [SQL] 프로시저와 함수의 차이
능이개발자
능이개발자
능이 개발자의 블로그
능이개발자
능이개발자의 블로그
능이개발자
전체
오늘
어제
  • 분류 전체보기
    • 백엔드
      • Java
      • Spring
      • Node.js
      • DBMS
    • 프론트엔드
      • WEB
      • iOS
      • 리액트
    • CS
      • 개발지식
      • 디자인패턴
      • 오류
      • 개발툴
    • 프로젝트
      • 인프라
    • 알고리즘
      • 알고리즘, 자료구조

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • swagger

최근 댓글

최근 글

반응형
hELLO · Designed By 정상우.v4.2.2
능이개발자
[DBMS] 레디스(Redis)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.