[영상후기] [10분 테코톡] 🤔디디의 Redis

박철현·2023년 4월 9일
0

영상후기

목록 보기
78/160

movie

Redis 개요

  • Redis(Remote dictionary server) : 외부 dictionary 자료구조를 사용하는 서버
    • dictionary(Key-Value) 구조

캐시

  • 캐시 : 결과를 미리 저장했다가 빠르게 사용하는 것

    • 메모리 계층 구조 : 위로 갈 수록 빠르고 비쌈
      • CPU Register -> CPU Cache -> Main Memory -> SDD, HDD
  • 더 자주 접근하고 덜 자주 바뀌는 데이터를 메모리에 저장(In-memory Database)해서 빠르고 쉽게 접근 : In memory database Redis

자료구조

  • Memacached 인메모리 DB는 아래와 같은 Collection 자료구조 지원

    • String
    • List
    • Set
    • Sorted Set
    • Hash or Object 저장
  • 하지만 왜 인메모리 DB를 안쓰는가?

    • 서버가 여러대인 경우 서버마다 다른 데이터를 가짐 Consistency 문제점
    • 멀티스레드 환경 Race Condition 발생할 수 있음
  • Race condition : 여러 쓰레드가 경합

  • Redis 자료구조는 기본적으로 싱글 스레드

  • Redis의 자료구조 Atomic

    • Critical Section(동시에 프로세스 여러개가 접근하면 안되는 영역)에 대한 동기화
    • 서로 다른 Transaction Read/Write 동기화 -> 원치않는 결과를 막아줌

어디에 쓰나요?

  • 여러 서버에서 같은 데이터 공유할때 사용

    • 싱글 서버라면 Atomic 자료구조 & 캐시 기능 사용하기 위해 사용
  • 주의사항

    • Single Thread 서버이므로 시간 복잡도를 고려해야 함
      • O(N) 명령어 주의 필요
    • In-memory 특성 상 OS와 메모리 배경지식 충분히 필요
  • Redis : 네트워크 요청 받아 명령어 처리

    • 처리 과정 싱글스레드
    • 오랜 시간이 걸리는 경우 나머지 요청들이 받아들이지 않고 서버 다운되는 경우 발생할 수 있음
      • O(N) 주의
      • KEYS, Flush, GetAll 연산 주의하라고 공식 홈페이지에 나와있음
  • 메모리 관리

    • 메모리 파편화 : 메모리 할당/반환 시 부분 비어있는 공간 -> 커다란 프로세스 할당시 실제 사용하지 않는 공간 발생 -> 공간 없음으로 인식하고 프로세스가 죽는 경우가 발생 -> Redis 사용 시 메모리를 적당히 여유있게 사용할 필요가 있음

    • Swap : 가상 디스크에 저장하고 필요 시 메모리에 올려서 사용

      • latency 발생, 싱글 스레드 환경에서 문제 발생할 수도 있음
    • Replication - Fork : 휘발성 메모리 상 데이터를 저장하기에 유실을 고려하여 데이터 복사 기능 제공

      • slave Redis 서버 또는 디스크 전송하는 방식
      • 복사가 일어날 때 Fork를 통해 메모리 상에 복제해서 사용
        • 메모리가 가득 차있다면 복사본이 제대로 생성x 서버가 죽는 현상 발생할 수도 있음(주의), 메모리 여유있게 사용은 필수
profile
비슷한 어려움을 겪는 누군가에게 도움이 되길

0개의 댓글

관련 채용 정보