
레디스(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 데이터 크기가 커질 수록 효과적인 이유
'CS > 데이터베이스' 카테고리의 다른 글
[데이터베이스] SQL Injection - prepared statement (0) | 2022.09.30 |
---|---|
[데이터베이스] JOIN, UNION (1) | 2022.09.30 |
[데이터베이스] KEY - 후보키, 외래키, 기본키, 슈퍼키, 대리키 (1) | 2022.09.30 |
[데이터베이스] SQL vs NoSQL (1) | 2022.09.30 |
[데이터베이스] 트랜잭션(Transaction) - lock, ACID, 교착상태 (1) | 2022.09.30 |