DB/Redis

Redis 소개 및 사용 이유

Code Maestro 2023. 8. 10. 14:11
728x90

1. Redis란?

출처: 위키피디아

Remote Dictionary Server. 애플리케이션에 유용한 기능을 제공하는 미들웨어의 역할을 하며, 전통적인 DBMS 역할을 수행하고, 데이터 저장소이다.

 

2009년 Salvatore Sanfilippo가 개발했고, 오픈소스화 이후 캐시 기술로서 많은 인기를 얻게 된다. 2015년부터 Redis Labs이 지원하고, 다양한 언어에서 Redis를 지원하고 많은 라이브러리가 존재한다. 

 

Redis는 아주 빠른 데이터 저장소로 활용되고, 분산된 서버들간의 커뮤니케이션이 가능하며, 내장된 자료구조를 활용하여 기능을 구현할 수 있다.

 

가장 손쉽게 사용할 수 있는 In-memory 저장소라 높은 성능을 가지고, 현대 서버 구조에 세션 관리나 캐시는 빠질 수 없는 구성 요소이다. 현대 서비스에서는 빠른 속도를 원하기에 성능을 높여야 하고, 트래픽이 증가한다. 이에 분산 환경에서 캐시는 필수가 됐고, 서버를 개발하면서 Redis를 사용하지 않는 기업을 찾기가 어려울 정도가 됐다.

 

Redis의 활용 예시는 아래와 같다.

 

  • Session Store
  • Cache
  • Limit Rater
  • Job Queue

이외에도 한가지 특성으로만 저장되지 않는 아주 다양한 기능을 제공한다. 과거에는 별도로 구현해야 했던 공통적 기능들을 Redis를 사용하면 쉽게 구현한다. 

 

2. In-memory DB

속도에 있어서 Redis는 가장 큰 장점을 보인다. 데이터를 디스크에 저장하지 않고, 휘발성인 RAM에 저장하여 빠른 속도를 얻는다.

DB 성능의 핵심은 디스크의 랜덤 I/O를 최소화하는 것이다. 위의 그림을 보면 Memory와 Disk의 속도 차이가 확연히 나는 것을 볼 수 있다. 메모리의 I/O 속도가 월등히 크다. 

 

이렇게 장점이 많지만, 단점도 있다. 비싼 가격이고, 메모리 특성상 데이터 보존이 안 된다.

 

데이터 보존이 안 되기에 용도에 맞게 DB와 Redis를 사용하는 것이 중요하다. Redis 보통 session 같은 단기적인 데이터를 저장한다. Redis 어느 정도의 영속성(백업 데이터)을 갖고 있지만, RDBMS 만큼은 아니다.

 

아직까지는 제일 중요한 데이터(무결성이 필요)들은 Redis 보다는 DBMS 저장한다.

 

3. Key-Value 저장소

NoSQL 종류 중 Key-Value 형태이다. 가장 단순한 데이터 저장 방식으로 단순한 만큼 성능이 빠르다.

 

출처: 위키피디아

특정 값을 Key로 해서 연관된 데이터를 Value로 저장하여 자료구조의 HashMap과 같다. 

 

장점으로는 단순해서 구현과 사용성이 쉽고, Hash를 이용해 값을 읽어서 속도가 빠르다. 또한 분산 환경에서 수평적 확장성을 가진다. 

 

단점으로는 key를 통해서만 값을 읽을 수 있고, 범위 검색 등의 복잡한 질의가 불가능하다. 

 

 

4. 다양한 역할

위에서 언급했듯이 key-value 저장소이고, 다양한 자료구조(String, Hash, Set, List 등)를 지원한다. 기본적으로 영속성을 위한 DB는 아니고, 영속성을 지원하는 백업으로써 역할도 하고 있다. 대표적으로 DBMS보다 빠른 캐시의 속성을 갖고 있다.

 

1) 외부 메모리(External  Heap)로써

Application이 장애가 나도 Redis의 데이터를 단기적으로 보존한다.

 

2) DBMS로써

Redis를 영속화 수단으로 이용하여 DBMS처럼 사용한다. 일반 RDB 수준의 안정성을 위해 속도를 희생해야 한다. 

 

3) Middleware로써

Redis가 제공하는 자료구조를 활용하여 복잡한 로직을 쉽게 구현한다. Redis의 숨겨진 최대 장점으로 데이터의 단순 저장만이 아닌, 다양한 형태의 아키텍처를 쉽게 구현할 있는 도구가 되고 있다.

 

4) NoSQL DB로써

key-value 저장소. 다양한 자료구조를 지원해서 차별화 됐고, 원하는 수준의 영속성을 구성할 수 있다. In-memory 솔루션의 특징을 활용할 때 가장 효율적이다. 

 

 

 

출처: FastCampus 대용량 데이터 & 트래픽 처리

728x90