Redis란

Redis는 Remote Dictionary Server의 약자로, 인메모리 데이터베이스입니다. 인메모리 데이터베이스란 데이터를 디스크나 SSD가 아닌 메모리에 저장하는 데이터베이스를 말합니다. 이렇게 하면 디스크 I/O를 줄여서 빠른 응답 속도를 얻을 수 있습니다. Redis는 단순한 키-값 저장소가 아니라 다양한 데이터 타입을 지원합니다. 이번 포스트에서는 Redis의 주요 데이터 타입과 그 사용법에 대해 알아보겠습니다.

Sentinel vs Cluster

  • Redis Sentinel: Redis 인스턴스를 모니터링하고, 마스터 선출, 자동 장애 조치, 알림 등의 기능을 제공
  • Redis Cluster: Redis 인스턴스를 여러 개의 노드로 분산시켜 데이터를 저장하고, 자동 장애 조치, 샤딩(Sharding) 등의 기능을 제공
특징 Redis Sentinel Redis Cluster
고가용성 마스터 선출, 자동 장애 조치 자동 장애 조치
분산 방식 단일 노드 여러 노드
샤딩 지원하지 않음 지원
데이터 구조 다양한 유형 지원 다양한 유형 지원
멀티 스레딩 No Yes

Redis vs Memcached

특징 Redis Memcached
문서화 Comprehensive Limited
데이터 구조 다양한 유형 지원 이진 문자열만 지원
멀티 스레딩 No Yes
성능 작은 데이터 저장에서 우수 대량의 데이터 저장에서 우수
클러스터 Yes No
인기도 8th most popular database in the world1 28th most popular database in the world

데이터타입

Redis의 데이터 타입은 크게 다섯 가지로 나눌 수 있습니다. 바로 문자열(String), 리스트(List), 해시(Hash), 셋(Set), 정렬된 셋(Sorted Set)입니다. 각각의 데이터 타입은 다음과 같은 특징과 용도를 가지고 있습니다.

문자열(String)

  • 가장 기본적인 데이터 타입으로, 키와 값이 모두 문자열로 구성
  • 값은 최대 512MB까지 저장
  • 단순한 텍스트 뿐만 아니라 이미지, 비디오, 오디오 등의 바이너리 데이터도 저장 가능
  • 카운터, 캐싱, 세션 관리 등에 사용 가능

리스트(List)

  • 문자열의 컬렉션으로, 키 하나에 여러 개의 값이 연결된 형태
  • 값은 최대 4억 개까지 저장
  • 삽입 순서를 유지하며, 키의 앞과 뒤에서만 값을 추가하거나 제거 가능
  • 스택, 큐, 메시징 등에 사용 가능

해시(Hash)

  • 키-값 쌍의 컬렉션으로, 키 하나에 여러 개의 필드와 값이 연결된 형태, 필드와 값은 모두 문자열로 구성
  • 값은 최대 4억 개까지 저장
  • 객체나 구조체와 같은 복합적인 데이터를 표현하기에 적합합니다. 해시 타입은 사용자 프로필, 상품 정보, 설정 등에 사용될 수 있습니다.

셋(Set)

  • 중복되지 않는 문자열의 컬렉션으로, 키 하나에 여러 개의 값이 연결된 형태
  • 값은 최대 4억 개까지 저장
  • 삽입 순서를 유지하지 않으며, 값의 존재 여부를 빠르게 확인 가능
  • 태그, 소셜 그래프, 실시간 분석 등에 사용 가능

정렬된 셋(Sorted Set)

  • 셋과 비슷하지만, 각 값에 점수(score)라는 부가 정보가 추가된 형태
  • 점수는 실수로 표현되며, 값들은 점수를 기준으로 오름차순으로 정렬
  • 랭킹, 리더보드, 지역 정보 등에 사용 가능