각 단계에서의 속도를 인간의 시간으로 놓았을 때 SSD 와 InMemory 속도는 하루 이상이 차이난다.
(외부 저장소로서 데이터 공유 역할을 할 수는 있지만 추천되지 않음)
- 세션 정보 ( 사용자 로그인, 행동들)
- 장바구니
- 조회수 세기
-> 상황에 따라 자주 바뀌는 특징을 가짐
2000년대 중반이후 사용자가 급증하고 데이터 크기도 커지며 서비스가 복잡해 졌기 때문에 레이턴시(latency)가 올라갔다.
각 사용자마다 서로 다른 종류의 정보가 요구됨 ( 비정형 )
일관성을 위한 SQL -> 확장성, 유연성이 떨어짐 -> 서비스는 자주 바뀌므로 불리함
-> NoSQL의 등장
인메모리 데이터 저장소 -> 속도를 매우 빠르게 함
다양한 데이터 구조 지원 : 리스트 , 해시, 셋(set) 등의 다양한 데이터 구조를 제공함으로써 복잡한 데이터 조작을 간단하게 할 수 있다.
고가용성과 복제 : 여러 노드에 저장함으로써 하나의 서버가 문제가 생겨도 동작함
클러스터링 : 자동 분산 저장 기능, 장애 발생 노드를 자동 복구함 -> 수평 확장 용이, 대규모 데이터 처리 적합
트랜잭션 지원 : 원자성을 가짐 ( 여러 명령어를 하나의 트랜잭션으로 처리할 수 있도록 MULTI, EXEC, DISCARD, WATCH 명령어를 제공 )
단일 스레드 작동 : 설정 및 운영의 부담을 낮춤
Pub/Sub 메시징 : 실시간 메시징 시스템 구축 가능, 채팅, 알림 등에 적합함
거대한 Map<key, value> 구조 라고 생각하면 편하다.