Redis

장숭혁·2024년 8월 5일
0

TIL작성

목록 보기
48/60

1. 파일 시스템의 데이터를 변경하는 건 느리다!

  • 영속성, 일관성에 초점을 맞춘 데이터 베이스 - HDD, SSD에 저장됨(H2 제외 - 인메모리)

각 단계에서의 속도를 인간의 시간으로 놓았을 때 SSD 와 InMemory 속도는 하루 이상이 차이난다.

2. 레디스는 자주 쓰이고 자주 변하는, 휘발성이 강한 정보를 주로 다룬다.

(외부 저장소로서 데이터 공유 역할을 할 수는 있지만 추천되지 않음)

- 세션 정보 ( 사용자 로그인, 행동들)
- 장바구니
- 조회수 세기

-> 상황에 따라 자주 바뀌는 특징을 가짐

3. NoSQL 등장 배경(MongoDB, Redis 등)

  • 2000년대 중반이후 사용자가 급증하고 데이터 크기도 커지며 서비스가 복잡해 졌기 때문에 레이턴시(latency)가 올라갔다.

  • 각 사용자마다 서로 다른 종류의 정보가 요구됨 ( 비정형 )

  • 일관성을 위한 SQL -> 확장성, 유연성이 떨어짐 -> 서비스는 자주 바뀌므로 불리함

    -> NoSQL의 등장

4. 레디스의 주요 특징

  • 인메모리 데이터 저장소 -> 속도를 매우 빠르게 함

  • 다양한 데이터 구조 지원 : 리스트 , 해시, 셋(set) 등의 다양한 데이터 구조를 제공함으로써 복잡한 데이터 조작을 간단하게 할 수 있다.

    • 레디스는 자료형이 정해져 있어서 Stack,queue 구조에서 GET을 하지 못한다.
      ( LPOP, RPOP으로 가능 )
    • Hash(HSET)은 Map<str,map<str,str>> 와 같이 복잡한 구조를 표현하고자 할때 사용함
  • 고가용성과 복제 : 여러 노드에 저장함으로써 하나의 서버가 문제가 생겨도 동작함

  • 클러스터링 : 자동 분산 저장 기능, 장애 발생 노드를 자동 복구함 -> 수평 확장 용이, 대규모 데이터 처리 적합

  • 트랜잭션 지원 : 원자성을 가짐 ( 여러 명령어를 하나의 트랜잭션으로 처리할 수 있도록 MULTI, EXEC, DISCARD, WATCH 명령어를 제공 )

  • 단일 스레드 작동 : 설정 및 운영의 부담을 낮춤

  • Pub/Sub 메시징 : 실시간 메시징 시스템 구축 가능, 채팅, 알림 등에 적합함

  • 거대한 Map<key, value> 구조 라고 생각하면 편하다.

profile
코딩 기록

0개의 댓글

관련 채용 정보