레디스(Redis) Remote Dictionary Server

- key value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 DBMS

- 메모리 기반 DBMS

- 대부분의 DB는 하드디스크나 SSD에 저장하지만, 레디스는 메모리(RAM)에 저장해서 디스크 스캐닝 없이 매우 빠름

- 캐싱이 가능해서, 실시간 채팅에 적합

- 세션 공유를 위해 세션 클러스터링에도 활용

- 데이터 구조 : key value

 

value 종류 5가지

- String (text, binary data)

- set (String 집합)

- sorted set

- hash

- List

 

휘발성(RAM) 방지 방법

- snapshot : 특정 지점을 설정하고 디스크에 백업

- AOF(Append Only File) : 쿼리를 저장해두고, 서버 셧다운 시 재실행 해서 다시 만든다.

 


캐싱(Caching)

  • 이미 가져온 데이터나 계산된 결과 값의 복사본을 저장해서 처리 속도를 향상시키고, 이후의 요청을 더 빠르게 처리할 수 있다.
  • 요청에 대한 결과를 임시적으로 저장하는 행위
  • 장점 : 성능 향상, 부하 방지
  • 활용 예시
    • 반복적이고 동일한 결과가 나오는 기능의 반환 값
    • 업데이트가 자주 발생하지 않는 데이터
    • 자주 조회되는 데이터
    • 입력 값과 출력 값이 일정한 데이터
    • 캐싱된 데이터는 데이터 갱신으로 DB 불일치 발생 위험이 있다.

 

로컬 캐시(Local Cache)

  • 서버마다 캐시를 따로 저장
  • 다른 서버 캐시 참조는 어렵다.
  • 서버 내에서 작동하기 때문에 속도가 빠르다.
  • local server의 리소스 사용(memory, disk)
  • 캐시에 저장된 데이터가 변경되는 경우
    • 해당 서버 제외 모든 peer 에 변경 사항 전달
    • all - to - all replication
    • WAS 인스턴스가 증가하고, 캐시 저장 데이터가 커지면 성능 저하되는 이유

 

글로벌 캐시(Global Cache)

  • 여러 서버에서 캐시 서버에 접근하여 참조 가능
  • 별도 캐시 서버를 이용한다. 서버 간 데이터 공유가 쉽다.
  • 네트워크 트래픽을 사용하기 때문에, 로컬 캐시보다 느리다.
  • 데이터를 분산하여 저장 가능
    • Replication : 두 개 이상의 DBMS 시스템을 master/slave으로 나눠서 동일한 데이터를 저장
    • Sharding : 같은 테이블 스키마를 가진 데이터를 다수의 DB에 분산하여 저장하는 방법
  • 캐시에 저장된 데이터가 변경되는 경우
    • WAS 인스턴스 증가, Cache 데이터 크기가 커질 수록 효과적인 이유

+ Recent posts