Database

Redis의 장점과 한계: 빠른 속도와 메모리 기반 데이터 처리

백엔드 유성 2023. 8. 4. 19:37

Redis(Remote Dictionary Server)는 인메모리 DB로서 고성능 key-value 데이터베이스입니다.

Redis는 데이터를 디스크 기반이 아닌 메모리 기반 저장 방식을 채택하여 매우 빠른 응답 속도를 제공합니다. 이러한 특징은 데이터베이스에 자주 액세스해야하는 세션 캐싱, 메시징 기능 등에 이상적입니다.

Redis 사용 목적

 Reids를 사용하는 이유는 다음과 같습니다.

  • 속도 : 데이터를 디스크에 저장하는 대신 메모리에 저장하여 빠른 응답 속도를 제공합니다.
  • 간단한 구조 : Redis는 문자열, Hash, List, Set, SortedSet 등 과 같은 간단한 데이터 구조를 지원합니다.
  • 영속성 지원 : 인메모리 DB임에도 불구하고, 시스템의 전원이 차단되었을 때도 데이터가 증발하지 않습니다.
  • 데이터 유효기간(TTL) 지정 : 지정한 시간이 경과되면 데이터를 삭제하도록 할 수 있습니다.

그러나 제한 사항도 명확히 존재합니다.

  • 메모리 사용량 증가 : Redis는 메모리 기반 데이터베이스이므로 데이터 크기가 메모리 용량보다 크면 메모리 부족으로 인한 문제가 발생할 수 있습니다.
  • 스키마 없음 : NoSQL DB의 장점이자 단점인데 스키마가 없는 데이터베이스이므로 무결성과 관련하여 관리자의 책임이 더 큽니다.
  • 데이터 영속성 비용 : 스냅샷 방식이나 AOF 방식을 사용하면 Redis는 디스크에 데이터를 저장해야 합니다. 특히 AOF 방식은 모든 쓰기 작업을 로그 형태로 기록하기 때문에 더 많은 디스크 I/O가 발생할 수 있습니다.
  • 복잡한 쿼리는 지원하지 않습니다.

이러한 장점과 한계를 고려하여 Redis를 사용할 때는 데이터 크기, 성능 요구사항, 데이터 영속성 등을 고려하여 적절하게 활용하는 것이 중요합니다.

 

 

Redis 데이터 구조

 

* String

  • Redis의 가장 기본적인 데이터 구조로 문자열을 저장하는데 사용됩니다.
  • 문자열을 키-값 쌍으로 저장하며, 특정 키를 사용하여 값을 가져오거나 업데이트할 수 있습니다.

 

* Hash 

  • 해시는 필드와 값의 쌍을 저장하는 데이터 구조입니다. 하나의 키에 여러 필드와 값을 저장할 수 있습니다.
  • 주로 사용자 정보, 제품 정보 등과 같이 관련 있는 데이터를 저장할 때 유용합니다.

 

* List

  • 리스트는 순서가 있는 문자열 요소의 집합을 저장하는 데이터 구조입니다.
  • 왼쪽이나 오른쪽에 요소를 추가하거나, 인덱스를 사용하여 요소를 가져오거나 수정할 수 있습니다.
  • 주로 Queue 또는 Stack등에 사용됩니다.

 

* Set

  • Set은 중복되지 않은 문자열 요소의 집합을 저장하는 데이터 구조입니다.
  • 합집합, 교집합, 차집합 등의 집한 연산을 지원합니다.
  • 주로 태그, 관심사, 회원 목록 등을 저장할 때 사용됩니다.

 

* Sorted Set

  • 정렬된 셋은 셋과 유사하지만 각 요소에 점수를 부여하여 정렬되도록 유지합니다.
  • 요소 간에 순서를 유지하며, 점수를 기준으로 범위 검색이 가능합니다.

 

내용이 많으니 여기서 한번 끊고 가겠습니다.