요즘 보통 캐시라는 기술이 곧 레디스다 라고 불릴만큼 레디스는 캐시로 많이 사용되는데요,
레디스가 어떤 기술이길래 캐시로 사용되는지 레디스의 또 다른 강점은 무엇인지 알아보고자 합니다.
캐시란?
우선 캐시라는 것이 무엇인지 알아볼텐데, 캐시의 정의는 데이터를 빠르게 접근할 수 있도록 임시로 저장하는 고속 저장소를 의미하고 빠르게라는 모호한 의미를 조금 더 정확하게 표현하면 원격 디스크 저장소(데이터베이스 등)에 저장되어 있는 데이터에 접근하는 비용과 시간을 절약하기 위해 메모리(RAM)에 데이터를 저장하여 빠르게 접근하는 기술입니다.
캐시는 정말 다양하게 활용되지만, 대중적으로 사용되는 대표적인 사례는 자주 사용되는 데이터(상품 조회 같은)를 캐시에 올려두고 접근하여 사용자 경험을 향상시키는 사례가 있습니다.
캐시는 앞서 얘기했듯이 자주 사용되는 데이터를 조회하여 데이터를 조회할 때 이점을 가지는 장점이 있지만, 반대로 자주 사용하지 않는 데이터를 올리게 되면 데이터 낭비로 이어지게 되는 양날의 검 특징을 가지고 있습니다.
[캐시 사용 예시]
레디스란?
레디스는 인메모리 기반의 데이터 저장소로, 다양한 데이터 구조를 지원하여 개발자들에게 많은 사랑을 받고 있는 기술입니다.
레디스의 특징으로는 캐싱, 데이터베이스, 메시지 브로커가 있는데요,
첫 번째로 캐싱으로의 특징은 레디스의 구조가 인메모리라는 기술적 특징을 지니기 때문에 디스크 저장소보다 빠른 데이터 접근이 가능하기 때문이죠.
그러면, 모든 저장소를 인메모리로 만들면 되지 않을까?라는 생각을 했었는데, 다음과 같은 특징 때문에 한계가 있습니다.
- 비휘발성 메모리(SSD, HDD)보다 비용이 비싸다.
- 메모리의 확장은 곧 하드웨어의 확장으로 이어지기 때문에 하드웨어의 비용이 증가한다.
두 번째로는 레디스가 인메모리 기반인 휘발성 특징을 가지고 있는데도 아이러니하게 레디스 서버의 디스크에 스냅샷 형태로 저장하거나 AOF(명령 로그)를 통해 데이터를 영구 저장할 수 있는 특징을 가지고 있습니다.
세 번째로는 메시지 브로커의 특징을 가지는데요, 메시지 브로커란 Queue 시스템과 비슷하게 비동기적으로 메시지를 주고받을 수 있는 PUB/SUB 기능을 의미합니다.
이외에도 레디스는 여러 대의 서버를 연결하여 Cluster 구조를 구성할 수도 있고, 랭킹 시스템 구축을 지원하는 기능도 제공해주는 등 다양하게 사용될 수 있습니다.
그럼 레디스는 캐시인가?
이전의 레디스에서 지원해주는 다양한 특징들을 통해 알 수 있듯이, 레디스에서 캐시란 레디스의 특징중 하나입니다. 레디스는 캐시로도 사용될 수 있지만 레디스 하나로도 서비스 구성을 위한 대부분의 시스템 구축이 가능할 수 있죠.
레디스를 보통 캐시로도 많이 사용하기도 하고, 이전에는 PUB/SUB으로도 사용했었던 만큼 단순히 "레디스는 캐시다"라는 생각을 가졌었던 지난 얄팍했던 지식을 가졌던 과거를 반성하기 위해 오늘의 포스팅을 진행해봤습니다.