Redis
- key, value 구조의 비정형 데이터를 저장 및 관리하기 위한 오픈 소스 기반의 비관계형 데이터 베이스 관리 시스템(DBMS)
- 인메모리 데이터 구조를 가진 저장소
기타 설명
- 비정형 데이터
- 식별 가능한 구조나 아키텍처가 없는 데이터, 관계형 DB에 적합하지 않음
- 비관계형 DB
- 행과 열로 이루어진 테이블 형식(관계형 DB)을 사용하지 않는 DB, 특정 요구 사항에 맞게 최적화된 스토리지 모델로 사용됨
- 인메모리 데이터베이스
- 디스크가 아닌 주 메모리에 모든 데이터를 보유하는 데이터베이스
- 장점: 빠른 데이터 접근 속도
- 단점: 휘발성 메모리 저장 방식
Redis의 용도
- DB
- 캐시 서버
- 메세지 브로커
Redis를 쓰는 이유
- 대규모 사용자로 인한 과부하를 방지하기 위해 캐시 서버로 Redis를 사용한다.
- 한 번 읽어온 데이터를 캐시 서버에 저장하고, 이후 같은 요청이 들어오면 DB까지 거치는 것이 아니라 캐시 서버에 저장된 값으로 요청을 처리하기 때문에 과부하를 방지하고 속도 성능 개선을 꾀할 수 있다.
Redis 특징
- key, value 구조이기 때문에 쿼리를 사용하지 않는다.
- 디스크가 아닌 메모리를 통해서 데이터를 처리하기 때문에 속도면서 유리하다.
- String, Lists, Sets, Sorted Sets, Hashes 자료 구조 지원
- Single Threaded 형식의 명령 처리방식을 갖는다.
- 한 번에 하나의 명령만 처리 가능
- 앞선 명령을 처리해야 이후 명령을 처리할 수 있음
Redis 사용 시 주의점
- 인메모리 데이터베이스이기 때문에 서버 장애 시 발생할 수 있는 데이터 휘발에 대한 대비가 필요함.
- 싱글 스레드 명령 처리방식을 사용하기 때문에 처리 시간이 긴 요청을 피해야 한다.
캐시 서버 패턴
look aside cache
- 클라이언트 요청
- cache 서버에 데이터가 존재하는지 확인
- cache 서버에 데이터가 있다면, DB를 거치지않고 요청에 대한 결과값을 바로 반환
- cache 서버에 데이터가 없다면, DB를 거쳐 데이터를 조회하고 cache 서버에 데이터를 저장하면서 요청에 대한 결과값을 반환
- select에 대한 패턴으로 파악
write back
- 모든 데이터를 cache 서버에 저장
- 특정 시간동안 cache 서버에 데이터가 유지됨
- cache 서버에 있는 데이터를 모두 DB에 저장
- DB에 저장된 cache 서버의 데이터를 삭제
- insert에 대한 패턴으로 파악
Redis 참고 링크
'Memo > 짧은 메모' 카테고리의 다른 글
CI/ CD 파이프라인 (0) | 2023.06.22 |
---|---|
Collections 시간 복잡도 (0) | 2023.04.06 |
[Github] .md 파일에 이미지 및 동영상 넣기 (0) | 2023.01.18 |
[cmd] where 명령어 (0) | 2022.12.31 |
[Git] .idea 디렉토리 & .iml 파일 (0) | 2022.12.18 |