Redis

Jihun Kim·2022년 10월 14일
0

기타

목록 보기
12/12

캐시

캐시란?

  • 캐시는 자주 접근하는 데이터를 임시적으로 저장하는 메모리 버퍼이다.
  • 캐시를 이용하면 데이터를 가져오기 위해 데이터 소스로부터 여러 번 요청하지 않아도 되어 성능을 향상시켜 준다는 장점이 있다.
  • 캐시의 예시로는 웹 브라우저 캐시가 있는데 이를 통해 처음 요청된 객체를 저장해 둠으로써 동일 객체를 여러 번 가져오지 않도록 만들 수 있다.


In-Memory Database

  • 이는 메인 메모리 데이터베이스 라고도 불린다.
  • 인메모리 데이터베이스는 데이터를 하드 디스크가 아닌 램에 저장해 더 빠른 응답이 가능하도록 만들어 준다.
  • 인메모리 데이터베이스를 스케일 업 하면 vertical scaling만 가능하다.


In-Memory Distributed Caching

  • 분산 캐시는 여러 개의 노드로 구성된 하나의 클러스터에 배포할 수 있으며 이렇게 배포된 클러스터는 하나의 logical view를 형성한다.
  • 이 때 Caching clients는 클러스터 노드 상에서의 객체의 위치를 결정하기 위해 해싱 알고리즘을 사용한다.



Redis

  • 레디스는 인메모리 데이터 저장소로, 오픈소스이다.
  • 레디스는 데이터베이스, 캐시, 메시지 broker로 사용 된다.
  • 레디스는 현재 가장 유명한 분산 캐싱 엔진이다.

데이터베이스 시스템과의 차이

  • Redis는 저장소와 캐시를 동시에 고려할 수 있는 시스템 아이디어를 이용한다.
  • Redis가 사용하는 디자인은 데이터가 메인 컴퓨터 메모리로부터 항상 수정되고 읽히지만 랜덤 데이터 액세스에는 부적합한 형태의 포맷으로 디스크에 저장 하는 방식이다.
  • Redis는 시스템이 다시 시작된 후에만 데이터를 다시 메모리에 재구성 한다.
  • 레디스는 RDBMS에서 데이터를 저장하는 방식과는 다른 방식으로 데이터를 저장 한다.
    - 레디스에서 사용되는 사용자 명령은 데이터베이스 엔진이 실행할 쿼리를 설명하는 것이 아니라 주어진 추상 데이터에 대해 수행되는 특정 작업을 설명한다.
    - 레디스는 데이터가 나중에 빠르게 검색할 수 있도록 하는 형태로 저장한다.
  • 레디스는 시스템 콜에 해당하는 Fork를 이용해 데이터를 들고 있는 프로세스를 복제한다.
    - 이에 따라 parent process는 클라이언트에 대응하고 그동안 child process는 disk에 데이터 복제본을 생성한다.


왜 레디스를 사용할까?

  • 세션 스토어
    - 여러 개의 서버를 이용하더라도 웹 사이트의 세션은 동일하게 유지되어야 한다.
    - 이 때 레디스를 이용하면 여러 개의 서로 다른 인스턴스에 세션 스토어가 공유 되기 때문에 사용자는 세션은 유지할 수 있다.
  • 메시지 전파
    - 레디스와 연결된 채널을 이용하는 여러 서버에 메시지를 전파할 수 있다.
    - 이 때 레디스가 제공하는 Pub/Sub 아키텍쳐를 이용 한다.
    -> 레디스의 Pub/Sub 아키텍쳐: 여러 서버가 접근해야 하는 랜덤한 데이터를 저장한 뒤 메시지나 job queue를 이용해 마스터는 job을 게시하고 workers는 메시지나 job queue를 통해 master가 게시한, 수행해야 하는 job을 가져오는 구조이다.


레디스의 장점

  1. 레디스는 한 번에 최대 512MB의 key-value를 저장할 수 있다.
  2. 레디스는 Redis Hashing이라는 해싱 메커니즘을 제공한다.
  3. 레디스는 데이터 복제 기능을 제공한다.
    • Master-slave 구조를 이용한다.
    • 따라서, master node가 업데이트 되면 slave node는 비동기 방식으로 자동으로 업데이트 된다.
  4. 많은 양의 데이터를 캐시에 쉽게 저장할 수 있도록 제공한다.
    • 짧은 시간 동안 많은 양의 데이터를 한 번에 저장하는 것이 가능하다.
  5. 트랜잭션을 제공한다.
    • 레디스의 value를 업데이트 할 때 트랜잭션이 제공된다면 데이터 정합이 맞지 않는 문제를 해결할 수 있다.
    • 이를 통해 여러 명령이 동시에 처리되는 것이 아니라 큐에 담겨 순차적으로 처리될 수 있다.
  6. 레디스는 NoSQL 데이터베이스이다.
profile
쿄쿄

0개의 댓글