데이터베이스는 데이터를 물리 디스크에 직접쓰기 때문에 서버에 문제가 발생하여 다운되더라고 데이터가 손실되지 않음
하지만 매번 디스크에 접근해야하기때문에 사용자가 많아질 수록 부하가 많아져서 느려질 수 있음
일반적인 서버 운영초기또는 규모가 작을때는 WEB-WAS-DB구조로도 데이터베이스에 무리가 가지 않음
BUT 사용자가 늘어나면 데이터베이스 과부화가 될 수 있음
-> 캐시서버 필요 Redis
캐시서버 패턴
웹서버는 모든 데이터를 캐시 서버에 저장
-> 캐시 서버에 특정 시간동안 데이터가 저장됨
-> 캐시 서버에 있는 데이터를 DB에 저장
-> DB에 저장된 캐시 서버의 데이터를 삭제
insert쿼리를 한번씩 1000번 날리는 것보다 한번에 날리는것이 효율적이라는 원리
다만 데이터가 db에 들어오기전에 서버에 장애가 발생되어 다운되면 데이터가 손실될 수 있음
Key, Value 구조라서 쿼리를 사용할 필요가 없음
-> 비관계형 구조로서 NOSQL의 일종으로 분류되기도 함
데이터를 디스크에 쓰는 구조가 아니라 메모리에서 데이터를 처리하기때문에 속도가 빠름(인메모리)
String, Lists, Sets, Sorted Sets, Hashes 자료 구조를 지원합니다.
싱글스레드임
-> 한번에 하나의 명령어만 처리가능
-> 중간에 처리시간이 긴 명령어가 들어오면 그뒤 명령어는 대기상태
메모리 기반이지만 영속적인 데이터 보존이 가능함
스냅샷 기능을 제공해 메모리 내용을 *.rdb파일로 저장하여 해당 시점으로 복구가능
여러 프로세스에서 동시에 같은 key에 대한 갱신을 요청하는경우, 데이터 부정합 방지 Atomic처리 함수를 제공(원자성)
NOSQL?
- 기존 관계형 데이터베이스(RDMS)보다 융퉁성 있는 데이터 모델을 사용하고
데이터 저장및 검색을 위한 특화된 메커니즘을 제공하는 데이터 저장 기술
- 단순 검색, 추가 작업에 있어 응답 속도나 처리 효율이 매우 뛰어남
Redis 사용에 주의할 점
레디스는 공식적으로 리눅스 기반의 OS만 지원하지만 개발 및 테스트용도로 window os버전을 제공해준다