기타

Redis 자료구조 이해하기

열심히 해 2025. 1. 7. 14:46

Redis 는 기본적으로 key-value 구조의 저장 방식을 갖지만 Lists,Sets, Sorted Sets, Hashes, Streams 같은 다양한 저장 방식을 제공합니다. 

 

1. Strings

  • key-value 가 일 대 일 관계입니다.
  • 데이터 타입: Binary-safe strings - 알파벳, 숫자, 한글,. 이미지 등을 사용할 수 있습니다.
  • 최대 길이: 512mb

 

2. Lists

  • key-value 가 일 대 다 관계입니다.
  • value 는 입력한 순서대로 저장됩니다.
  • 주로 Queue -들어오는 데이터를 순서대로 처리할 때- 이나
    Stack-웹브라우저의 백버튼처럼 되돌아 갈 때-으로 사용됩니다.
  • value 가 저장되면 key(list) 가 생성됩니다. key에 value가 하나도 없으면 해당 키는 삭제됩니다. 
    -> 키(리스트)의 생성과 삭제를 위한 별도의 작업이 필요 없습니다.

 

3. Sets

  • key-value일 대 다 관계입니다.
  • value는 입력된 순서와 상관없이 저장되며, 중복되지 않습니다. 즉 value Banana 가 2번 저장되어도 결과적으로 하나만 남습니다.
  • sets에서는 집합이라는 의미에서 vaule를 memer라 부릅니다.
  • 주로 카드게임같은 게임이나 집합연산이 필요한 곳에 사용됩니다.

 

4. Sorted Sets

  • Sorted Sets는 key 하나에 여러 개의 score와 value로 구성됩니다.
  • value는 score로 sort되며 중복되지 않습니다. sore가 같으면 value로 sort됩니다.
  • sorted sets에서는 집합이라는 의미에서 value를 member라 부릅니다.

 

5. Hashes 

  • 하나의 key에 여러 개의 field와 value로 구성됩니다. 
  • Hashes가 field와 value로 구성된다는 면에서 RDB의 table과 비슷합니다.
  • Key가 PK 같은 역할을 하기에 하나의 key는 table의 한 row와 같습니다.
  • table의 칼럼 수는 일반적으로 제한이 있는 반면, field 의 수는 40억개로 무제한에 가깝습니다.
  • 테이블에 칼럼을 추가하려면 테이블을 변경해야 하나, Hash에서는 그런 작업이 필요 없습니다. field 추가/삭제 시 해당 key만 영향을 받습니다.

6. Stream

 영향을 받습니다.

 

7. Pub/Sub

  • 레디스는 메시지를 주고 받는 기능을 제공합니다.
  • 통로로는 채널(channel)을 이용합니다. key-value의 key와 비슷한 것이라 생각하면 됩니다.
  • 예를 들어 클라이언트1에서 **subscribe channel_name** 을 실행하고
    클라이언트2에서 ** channel_name "Banana" **를 실행하면 클라이언트1에 "Banana"가 나옵니다.
  • 레디스의 pub/sub 시스템은 메시지를 보관(queuing)하지 않습니다. 

 

 

 

 

** 추가 및 수정 예정 !!  **