Redis는 Memcached와 비슷한 캐시 시스템
으로서 동일한 기능을 제공하면서 영속성, 다양한 데이터 구조와 같은 부가적인 기능을 지원하고 있습니다.
레디스는 모든 데이터를 메모리에 저장하고 조회
합니다. 즉, 인메모리 데이터베이스
입니다.
이 말만 들으면 Redis에 모든 데이터를 메모리에 저장하는 빠른 DB일 뿐이라고 생각할지도 모릅니다. 하지만 빠른 성능은 레디스의 특징 중 일부분 입니다.
다른 인메모리 디비들과의 가장 큰 차이점은 레디스의 다양한 자료구조
입니다.
이렇게 다양한 자료구조를 지원하게 되면 개발의 편의성이 좋아지고 난이도가 낮아진다
는 장점이 있습니다.
예를 들어, 어떤 데이터를 정렬 할 때, DBMS를 이용한다면 DB에 데이터를 저장하고, 저장된 데이터를 정렬하여 다시 읽어오는 과정은 디스크에 직접 접근을 해야하기 때문에 시간이 더 걸린다는 단점이 있습니다.
하지만 이 때 In-Memory
데이터베이스인 Redis
를 이용하고 레디스에서 제공하는 Sorted-Set
이라는 자료구조를 사용하면 더 빠르고 간단하게 데이터를 정렬할 수 있습니다.
NoSQL로서 Key-Value 타입의 저장소인 레디스(Redis, Remote Dictionary Server)
의 주요 특징은 아래와 같습니다.
영속성을 지원하는 인메모리 데이터 저장소
읽기 성능 증대를 위한 서버 측 복제를 지원
쓰기 성능 증대를 위한 클라이언트 측 샤딩(Sharding) 지원
다양한 서비스에서 사용되며 검증된 기술
문자열, 리스트, 해시, 셋, 정렬된 셋과 같은 다양한 데이터형을 지원. 메모리 저장소임에도 불구하고 많은 데이터형을 지원하므로 다양한 기능을 구현
그래서 최종적으로 Redis를 한 문장으로 정의하면 아래와 같습니다.
레디스는 고성능 키-값 저장소로서 Stirng , list, hash, set, sorted set형식의 데이터를 지원하는 NoSQL
입니다.
Redis에서 자주 사용되는 Cache-Aside패턴과 Write-Back패턴에 대해 알아보겠습니다.