
Redis는 Key-Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 NoSQL DBMS이다. 주로 데이터베이스, 캐시, 메시지 브로커 등으로 사용되며, in-memory 데이터 구조를 기반으로 동작한다.
데이터베이스는 데이터를 물리 디스크에 저장하기 때문에 서버에 문제가 발생해 다운되더라도 데이터가 손실되지 않는다. 그러나 매번 디스크에 접근해야 하기 때문에 사용자가 많아질수록 부하가 증가하며 속도가 느려질 수 있다.
일반적으로 서비스 초기 단계이거나 소규모 서비스의 경우에는 WEB - WAS - DB 구조만으로도 데이터베이스에 큰 무리가 가지 않는다. 그러나 사용자가 증가하면 데이터베이스에 과부하가 발생할 수 있다. 이때 캐시 서버를 도입하여 성능을 최적화할 수 있다.
캐시는 한 번 읽어온 데이터를 임시 공간에 저장하여 다음 요청 시 더 빠르게 데이터를 제공하도록 돕는다.
Look-aside Cache는 데이터 요청 시 캐시에서 먼저 데이터를 조회한 후, 캐시에 없으면 데이터베이스에서 가져오고 해당 결과를 캐시에 저장하는 방식이다. 이 방식을 통해 DB 부하를 줄일 수 있으며, 데이터베이스 변경 시 캐시 무효화 처리가 필요하다.
Write-back은 데이터를 캐시에 먼저 저장한 후, 일정 시간 또는 조건이 충족되면 데이터베이스에 기록하는 방식이다. 쓰기 성능을 높일 수 있지만, 캐시에 저장된 데이터를 데이터베이스로 쓰기 전에 장애가 발생할 경우 데이터 유실 가능성이 있다.
Key-Value 구조로 동작하므로 복잡한 쿼리를 사용할 필요가 없다.
데이터를 디스크에 직접 쓰지 않고 메모리에서 처리하기 때문에 속도가 매우 빠르다.
다음과 같은 다양한 자료 구조를 지원한다.
싱글 스레드로 동작한다.
GET, SET 같은 단순 명령어는 초당 10만 건 이상 처리할 수 있을 만큼 빠르다.