View

[DB] 💡레디스(Redis)란?

옥돔이와 연근이 2022. 9. 8. 15:05
반응형

💡레디스(Redis)란?

Redis란 REmote DIctionary Server의 약자로 오픈소스 DBMS이다

비정형 데이터를 저장하고 관리하기 위한 비관계형 데이터베이스 관리 시스템

 페이스북, 넷플릭스 등은 이미 NoSQL DB기술을 활용하고 있으며 선호하는 상품을 실시간으로 보여줄 때, 거의 예외 없이 NoDQL DB를 사용 중이다 기존의 관계형 데이터베이스 보다 더 융통성 있는 데이터 모델을 사용하고 단순 검색 및 추가 작업에 있어서 매우 최적회된 키-값 저장 기법을 사용함 → 응답속도와 처리 효율 굿

NoSQL이란 무엇인가? 대량데이터 동시처리위한 DBMS 종류와 특징

키-값 기반이기 때문에 쿼리를 따로할 필요 없이 결과를 바로 가져올 수 있으며 디스크에서 데이터를 쓰는 구조가 아니라 메모리에서 데이터를 처리함 → 데이터 속도 빠름 (CPU 명령을 적게 사용)

 


💡레디스(Redis) 특징

1️⃣ 인 메모리 데이터 구조

: List, Set, Hash, Map 등의 유형들을 인 메모리 안에 저장 할 수 있다.

다른 인 메모리 데이터 DB와 가장 큰 차이점은 다양한 자료구조를 지원하고 있다는 점이다

따라서 개발의 편의성은 향상되고 난이도는 낮아진다는 장점이 있음

2️⃣ 데이터 영속화

레디스는 데이터를 디스크에 저장하여, 영속화 시키는 기능을 갖고 있기에 메모리에 저장된 데이터가 휘발성으로 사라지지 않는다

  • 특정 시점 스냅샷(Snapshot): 데이터가 변경될 때마다 이를 디스크에 저장하는 `Append Only File
    (AOF)` 생성 → 데이터를 파일에 기록해서 데이터 손실을 방지 및 장애 발생 시 데이터 신속하게 복원

3️⃣ 부하분산

레디스에는 다른 컴퓨터로 복제를 하는 기능이 있어, 갱신이 가능한 1대를 마스터로, 그 복제된 읽기 전용의 복수의 컴퓨터를 슬레이브로 구성하여 분산환경을 만들 수 있다

주 서버에 장애가 발생하는 경우 요청이 여러 서버로 분산될 수 있으므로 향상된 읽기 성능과 복구 기능을 모두 제공함

3️⃣ 싱글 스레드 방식

따라서 race condition 을 피해 데이터의 정합성을 보장하기 쉽다

반면, 처리 시간이 긴 명령어가 들어올 경우 싱글 스레드이기 때문에 다른 명령어들을 처리할 수 없는 상태가 된다. 왠만하면 처리 시간이 긴 명령어는 피하고 O(1) 로 동작하는 명령을 실행시키는 것을 권고한다

4️⃣ 메모리 단편화 혹은 파편화

RAM에서 메모리의 공간이 작은 조각으로 나뉘어져 사용가능한 메모리가 충분히 존재하지만 할당이 불가능한 상태를 메모리 단편화라고 한다.

redis는 jmalloc을 사용하여 메모리를 할당한다. 예를들어 jmalloc이 메모리 페이지 사이즈를4096byte로 잡으면1byte만 저장하게 되어도4096byte를 할당한다. 때문에 사용하지 않는 메모리 공간이 발생하게 된다. 때문에 개발자는 정확한 메모리 사용량을 파악하기 어렵다.


  • Redis는 데이터를 어떻게 영구화 시킬 수 있는가?
  • Redis에는 어떠한 데이터 구조가 있는가?
  • Redis는 왜 성능이 높은가?

💜 출처 및 참고 차료

인메모리 데이터 저장소 Redis, 왜 사용할까? #Redis 파헤치기

레디스 (Redis)의 개념, 특징

Redis란 무엇입니까? - Amazon Web Services(AWS)

반응형

'CS' 카테고리의 다른 글

[DB] 맥M1_MySQL 다운 Workbench  (0) 2022.09.12
[DB] 락(Lock)이란?  (0) 2022.09.08
[OS] 기술 면접 질문 리스트  (0) 2022.08.30
[OS] 페이징과 세그멘테이션  (0) 2022.08.30
[OS] 페이지 교체 알고리즘  (0) 2022.08.30
Share Link
reply
반응형
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28