본문 바로가기

Open Source

Redis 간단 소개 및 자료구조

반응형

소개

  • Redis는 "Remote Dictionary System" 약자로 오픈소스 기반의 비관계형 인모메리 데이터 구조
  • Key-Value 데이터 구조에 기반한 다양한 형태의 자료 구조를 제공한다.
  • 최신 버전은 PUB/SUB 형태의 기능을 제공한다. 즉, 데이터 저장 뿐만 아니라 메시지 브로커 등 다양한 목적으로 사용할 수 있다.
  • 싱글 쓰레드에서 동작한다.

Redis Data Type

  • 하나의 컬렉션에 너무 많은 데이터를 담으면 좋지 않다
  • 가능하면 10000개 이하의 수준의 데이터 셋을 유지하는게 Redis 성능에 영향을 주지 않는다

 

Strings

  • 텍스트, 직렬화된 객체 및 이진 배열을 포함한 등을 저장
  • String으로 될 수 있는 Binary, JPEG 이미지도 저장 가능하다
  • 문자열의 최대 크기는 512MB
  • 단순 증감 연산에도 좋음
  • 시간복잡도 O(1)를 갖지만 SUBSTR, GETRANGE 명령에 의해 O(N) 시간복잡도를 가짐
  • Key와 Value가 1대1 관계

 

Bitmaps

  • String의 변형
  • bit 단위 연산 가능
  • String이 512MB 저장 할 수 있듯이 2^32 bit까지 저장 가능하다
  • 저장 공간 절약에 큰 장점이 있다
  • Key와 Value가 1대1 관계

 

Lists

  • String 자료구조를 순서대로 저장
  • 추가/삭제/조회는 O(1) 시간복잡도를 가지지만, 특정 index 값은 O(N) 시간복잡도를 갖는다
  • 즉, head-tail에서 추가/삭제가 좋다 (push/pop) (Linked List가 아님)
  • 메시지 Queue로 적절하다
  • Key와 Value가 1대N 관계

 

Hashes

  • field-value로 구성되어 있는 전형적인 hash 형태
  • key 하위에 subkey를 이용해 추가적인 Hash Table을 제공하는 자료구조

 

Sets

  • 중복을 허용하지 않는 자료구조
  • 정렬되지 않은 집합
  • Key와 Value가 1대N 관계

 

Sorted Sets

  • Set 자료구조에 score라는 필드가 추가된 자료구조 (score는 일종의 가중치)
  • score 필드가 추가 됨에 따라 순서관리

 

Streams

  • Streams는 로그를 저장하기 좋은 자료구조
  • append-only 이며 중간에 데이터가 바뀌지 않는다

References

https://redis.io/

반응형