ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [모각코] 5회차 - Cache 와 Redis
    학교생활/22-2 '모여서 각자 코딩' 2022. 11. 5. 23:14
    728x90
     

    An Overview of Cache

     

    메모리 계층 구조도

     

    Cache 는 메모리 계층 구조 상 Register 다음으로 CPU 코어 가까이에 위치하며, Main Memory 보다 속도가 빠르다.

    Cache 는 프로그램에서 직접 읽거나 쓸 수 없고, 하드웨어 메모리 관리 시스템에서 내부적으로 제어한다. 

    따라서 프로그래머가 코드 상에서 접근할 수 있는 방법이 없다. 

     

     

    Cache

    Cache 란,  
    복잡한 연산이나 시간이 오래 걸리는 연산을 미리 수행/저장해서 빨리 가져와 쓸 수 있게 하는 것이다.

     

    Cache 사용하는 것은 동일한 요청 대하여 빠른 응답이 가능하다는 점이다. 

    최초의 요청에 대한 응답을 전송하는 시점에서 서버는 DB 에서 읽어온 값을 Cache 에 저장해 둘 것이다. 

    이후에 해당 데이터에 대한 동일 요청이 있을 경우, cache 에서 동일한 요청에 대한 값을 리턴 하며, 데이터의 기본 스토리지 위치(DB 등..)에 액세스 할 때보다 더 빠르게 요청을 처리할 수 있다.   

    한편, DB 에서 값을 조회하지 않음으로 DB 자원을 다른 요청에 할당할 수 있게 된다. 

    결국, 

    1. 데이터를 효율적으로 재사용하여 서비스 전체적으로 빠른 속도 가질 수 있으며,

    2. 많은 요청에 대한 처리를 분산함에 따라 서비스 부하를 감소 시킬 수 있다.  

     

    [사용처] 

    Cache 는 운영 체제, 네트워크 계층, 웹 애플리케이션 및 데이터베이스를 비롯한 다양한 기술 계층에 적용되고 활용될 수 있다.

    Caching 시, Q&A 포털, 게임, 미디어 공유 및 소셜 네트워킹 과 같은 읽기 집약적인 여러 애플리케이션 워크로드의 지연시간을 크게 줄이고 IOPS(Input/Output Operations Per Second, IOPS) 개선할 수 있다.

     

    Caching 되는 정보로는 데이터베이스 쿼리 결과, API 요청-응답, 이미지 파일과 같은 웹 아티팩트가 있다. 

     

     

    Redis 

    Redis 는, 
    영속성을 지원하는 In-memory 데이터 저장소이면서 Key-Value 타입으로 저장하는 NoSQL 양쪽의 특징으로 모두 가지고 있다. 

    .   In-Memory Computing : application 이 운영을 위한 데이터를 하드디스크가 아닌 메인 메모리에서 수행하는 것을 의미한다.

     

     

    •  list, array 와 같은 데이터를 처리하는데 유용
      •  리스트형 입력과 삭제가 MySQL 에 비해 10배 정도 빠른 성능
    • 메모리를 활용하여 영속적인 데이터 보존
      • 명령어로 명시적 삭제, expires 를 설정하지 않으면 데이터가 삭제되지 않는다.
      •  snapshot 기능을 제공하여 메모리의 내용을 *.rdb 파일로 저장, 해당 시점으로 복구 가능
    • 데이터 분실 위험X
      • master-slave 형식으로 server 를 구성
      • redis 서버는 1개의 싱글 쓰레드로 수행되며, 따라서 서버 하나에 여거개의 서버를 띄우는 것이 가능
        • 실시간으로 데이터를 다른 서버에 복제
        • master server 가 다운되어도 slave server 로 접속하면 바로 서비스 유지 가능
    • Key- Value 방식
      • 빠른 속도: 쿼리(SQL 등..)를 수행하지 않고도 결과를 얻을 수 있음

     

    728x90
Designed by Tistory.