Redis
레디스(Redis: Remote Dictionary Server)란 인메모리 기반의 비관계형 데이터베이스이다.
- 인메모리 기반이기 때문에 디스크 기반의 데이터베이스보다 속도가 빠르다.
- 비관계형이기 때문에 저장될 데이터의 구조를 보다 유연하게 선택할 수 있다.
Redis의 특징
- Key : Value 구조이기 때문에 쿼리를 사용할 필요가 없다.
- Value의 구조로 String 이외에 List, Set, Sorted Set, Hash 등 Collection을 지원한다.
- Single Thread이기 때문에 동시성 문제가 발생하지 않지만, 한 번에 하나의 명령만 처리할 수 있다(get, set 명령어의 경우 초당 10만 건 이상 처리할 수 있을 만큼 빠르다).
- Redis Replication을 통해 데이터베이스를 Master/Replica 구조로 형성할 수 있다.
- Redis Cluster를 통해 부하 분산을 위한 수평적 확장을 할 수 있다.
- 외부 세션 저장소, 캐시 서버를 위해 사용될 수 있다.
Cache
캐시(cache)는 특정 요청에 대한 응답 데이터를 임시로 저장해두는 공간을 의미한다.
그리고 동일한 요청이 발생할 경우 API 또는 DB를 호출하지 않고, 캐시에 저장된 데이터를 반환하여 어플리케이션의 성능을 향상 시킬 수 있는 기능 중 하나이다.
캐시의 사용 흐름은 look aside cache, write back으로 구분할 수 있다.
look aside cache
- 요청에 대한 응답 데이터가 캐시에 저장되어 있는지를 확인한다.
- 응답 데이터가 캐시에 저장되어 있다면, 캐시에 저장된 데이터를 반환한다.
- 만약 응답 데이터가 캐시에 저장되어있지 않다면, DB에서 데이터를 조회하여 캐시에 저장하고 데이터를 반환한다.
Write Back
- 서버는 DB에 반영할 모든 데이터를 캐시에 일정 시간 동안 저장한다.
- 일정 시간 동안 캐시에 저장된 모든 데이터를 DB에 반영한다.
- DB에 반영된 캐시의 데이터를 삭제한다.