Redis 란?

devdo·2021년 5월 6일
0

redis 자료구조, 주의사항 정리

쿠팡 품절 오류 문제 -> 오픈소스 레디스DB때문으로 밝혀짐.
Remote Dictionary server의 약자
(외부 + HashMap<key, value>+서버)

특징

0) In-Memory(cache) Data Structure로 되어있음.

나중의 요청에 대한 결과를 미리 저장했다가 빠르게 사용하는 것
메모리 계층구조에서 cache(휘발성, 엄청 빠름 resister 다음임)를 사용.
그렇다고 일반적으로 생각하는 main memory의 역할로만 생각하긴 쉽지만, 꼭 그렇지만은 않다.

Redis도 Store의 일환으로, 다른 서버가 봐도 똑같은 데이터를 볼 수 있게 영속성을 가지고 있다.

1) Single 쓰레드
2) Event Driven(비동기)
3) IO-bound Process
4) Context Switching의 효율이 적다.
5) Replication - Fork
Redis- server - 자식 프로세스를 만든다(복사= fork)
6) Hashes, Lists, Sets 등 자료구조 지원
(해시사용 -> 메모리 효율이 더 좋아짐)

7) key-value store의 구조

8) 현대적인 서버 구조(분산 서버 아키텍쳐)에서 세션 관리나 캐시는 빠질 수 없는 구성요소이다.


언제 쓰이나?

서버가 여러대인 경우 Consistency의 문제 발생
멀티 쓰레드 환경에서 Race Condition 문제 (여러 개의 쓰레드가 경합하는 것)
Context Switching에 따라 원하지 않는 결과가 발생

=> 대책 Redis로
기본적으로 Single 쓰레드
자료구조가 Atomic -> Critical Section에 대한 동기화를 제공
서로 다른 Transaction Read/Write를 동기화


쓰이는 환경

1) 여러 서버에서 같은 데이터를 공유할 때 session같이 라이프사이클이 짧은 데이터들을 공유할 때
2) 그냥 싱글서버일때는 Atomic 자료구조 & cache

주의해야 할 점

Single 쓰레드 서버이므로 시간 복잡도를 고려해야 한다.
In-memory 특성상 메모리 파편화, 가상 메모리 등의 이해가 필요하다.


✨ 학습 목표

1) Redis가 무엇인지 특성 중심으로 설명할 수 있게 된다.
2) 세션 스토어, 캐시와 같은 Redis의 주요한 활용 방법을 익히고 구현할 수 있게 한다.
3) 클러스터 구성, 백업과 장애 등 실제 Redis 운영에 필요한 지식을 갖춘다.
4) Redis를 활용하는 다양한 어플리케이션 아키텍쳐들을 익힌다.

profile
배운 것을 기록합니다.

0개의 댓글