Remote Dictionary Server
의 약자로, 원격 Dictionary 자료구조 서버라는 직관적인 이름을 가지고 있다결론적으로, 웹 서버의 부담을 줄이고 고속으로 데이터 제공이 가능하다
DB는 데이터를 디스크에 직접 저장하기 때문에 서버에 문제가 발생하여 다운되더라도 데이터가 손실되지 않지만, 매번 디스크에 접근해야 하기 때문에 사용자가 많아질수록 부하가 커지며 속도가 느려질 수 있기 때문에 캐시 서버
를 도입해서 사용해야 한다
이 캐시 서버
로 사용할 수 있는 것이 바로 Redis이다.
Key - Value
구조In-Memory
데이터 구조를 가진 저장소Data Type (Collection)
지원싱글 스레드
AOF
& RDB
RAM
에 데이터를 올려서 사용하는 방법RAM
에 데이터를 저장하게 되면, 메모리 내부에서 처리가 되므로 데이터를 저장/조회할 때 하드디크스를 오고가는 과정을 거치지 않아도 되어 속도가 빠름하지만, 서버의 메모리 용량을 초과하는 데이터를 처리할 경우, RAM의 특성인 휘발성에 따라 데이터가 유실될 수 있음
개발의 편의성과 난이도 때문이다!
외부의 Collections를 잘 이용하는 것만으로도 개발 시간 단축이 가능하고, 생각하지 못한 여러가지 문제를 줄여줄 수 있기 때문에 개발자는 비지니스 로직에 집중할 수 있다는 큰 장점이 존재한다
한 번에 하나의 명령만 수행이 가능하므로 Race Condition
이 거의 발생하지 않는다.
하지만, 한 번에 하나의 명령만 수행이 가능하기 때문에 처리 시간이 긴 요청의 경우 장애가 발생할 수 있다.
레디스에 저장되는 모든 데이터는 유효 기간을 설정할 수 있다.
유효 기간이 지난 데이터는 레디스가 해당 데이터를 메모리에서 삭제함으로써, 메모리를 효율적으로 사용할 수 있다
Redis에서는 더이상 메모리에 데이터를 저장할 수 없는 경우에, 가장 먼저 들어온 데이터
를 삭제하거나 가장 최근에 사용되지 않은 데이터
를 삭제하거나, 혹은 더 이상 데이터를 입력받지 못하게 된다
이미 생성된 데이터에 EXPIRE
명령어를 사용하여 유효 기간을 설정할 수 있다
데이터를 생성할 때 EX 옵션을 사용하여 생성과 동시에 유효 기간을 설정할 수 있다
유효기간을 설정하지 않는다면, 직접 데이터를 삭제할 때까지 영원히 유지된다
Redis는 메모리에서 데이터를 관리하기 때문에 매우 빠른 속도로 데이터를 저장하고 조회할 수 있지만, 메모리 특성상 저장된 데이터는 사라질 가능성이 있다.
이를 보완하기 위해서 Redis는 관리하고 있는 데이터에 영속성을 제공한다. 즉, 메모리에 있는 데이터를 디스크에 백업하는 기능을 제공한다!
메모리에 있는 데이터 전체에서 스냅샷을 작성하고, 이를 디스크로 저장하는 방식
데이터가 변경되는 이벤트가 발생하면 이를 모두 로그에 저장하는 방식
RDB
AOF
RDB
+ AOF
레디스는 일반적으로 AOF와 RDB를 동시에 사용하여 백업