[Redis] Redis(레디스)의 자료구조
이전 포스팅을 통해 Redis를 설치하신 뒤 Redis를 효율적으로 활용하기 위해 Redis의 자료구조에 대해 알아보려고합니다 :)
Redis의 자료구조 종류
Redis는 아래의 자료구조를 공식적으로 지원하고 있습니다 !
Strings
Vinary-safe한 기본적인 key-value의 구조
Lists
String element의 모음, 순서는 삽입된 순서를 유지하며 기본적인 자료구조로 Linked List를 사용합니다.
Sets
유일한 값들의 모임인 자료구조, 순서는 유지되지 않습니다.
Hashes
내부에 key-value 구조를 하나 더 가지는 Redis 자료구조
Bit arrays(bitMaps)
bit array를 다룰 수 있는 자료구조
HyperLogLogs
HyperLogLog는 집합의 원소의 개수를 추정하는 방법, Set의 개선된 방법
Streams
Redis 5.0에서 Log나 IoT신호와 같이 지속적으로 빠르게 발생하는 데이터를 처리하기 위해서 도입된 자료구조
더 자세한 내용은 여기를 클릭해서 확인하실 수 있습니다 !
Redis의 자료구조 자세히 알아보기
Strings
String 타입은 Redis의 가장 기본적인 타입입니다. 일반적으로 우리가 알고 있는 Key-value 형식을 따르고 있습니다.
key와 value 모두 binary safe하기 때문에 어떠한 데이터의 종류도 key, value의 값이 될 수 있습니다.
아래는 Strings 명령어의 특이사항 및 활용방법입니다.
- 값의 최대 길이는 512MB이며, String으로 될 수 있는 binary data도, JPEG 이미지도 저장 가능합니다.
- 단순 증감 연산에 좋습니다.
- String-String 매핑을 이용하여 연결되는 자료 매핑을 할 수도 있습니다. 또한 HTML 매핑도 가능합니다.
Lists
Lists는 Linked List와 유사한 형태로 데이터가 저장되는 Redis에서 제공하는 자료구조입니다. 따라서 처음과 마지막 부분에 element를 추가 / 삭제 / 조회하는 것은 O(1)의 속도를 가지지만 중간의 특정 index 값을 조회할 때는 O(N)의 속도를 가지는 단점을 가지고 있습니다.
아래는 Lists 명령어의 특이사항 및 활용방법입니다.
- array 형식의 데이터 구조, 데이터를 순서대로 저장합니다.
- 메시지 queue로 사용하기 적절합니다.
Sets
Redis Sets는 순서가 보장되지않는 Strings의 집합 자료구조입니다. 기본적으로 추가, 삭제, element의 존재 유무확인 등에 대해서 O(1)의 속도를 보장합니다. 또한 Set 이기 때문에 동일한 value는 추가한다고 해서 2개가 공존하지 않습니다.
아래는 Sets 명령어의 특이사항 및 활용방법입니다.
- 중복된 데이터를 담지 않기 위해 사용하는 자료구조 (java의 set과 동일하다고 생각하면됩니다.)
- 유니크한 key값
- 정렬되지 않은 집합
- 중복된 데이터를 여러번 저장하면 최종 한 번만 저장됩니다.
- Set간의 연산을 지원하며, 교집합, 합집합, 차이를 매우 빠른 시간내에 추출할 수 있습니다.
- 단, 모든 데이터를 전부 다 갖고올 수 있는 명령이 있으므로 주의해서 사용해야합니다.
Hashes
Redis의 Hashes는 value로 또 다른 key-value Map을 가지는 자료구조입니다.
아래는 Hashes 명령어의 특이사항 및 활용방법입니다.
- field-value로 구성되어 있는 전형적인 hash의 형태입니다.
- key 하위에 subkey를 이용해 추가적인 Hash Table을 제공하는 자료구조입니다.
- 메모리가 허용하는 한, 제한없이 field들을 넣을 수 있습니다.
Sorted sets
Redis의 Sorted sets 자료구조는 Sets 자료구조에서 Score를 추가로 기록하여 score가 낮은 순서부터 높은 순서대로 정렬되는 자료구조입니다. 동일한 값은 오지 못하며, score는 동일할 수 있다는 사실을 명심하셔야합니다.
아래는 Sorted Sets 명령어의 특이사항 및 활용방법입니다.
- set에 score라는 필드가 추가된 데이터 형 (score는 일종의 가중치)
- 일반적으로 set은 정렬이 되어있지 않고, insert한 순서대로 들어갑니다.
- 그러나 Sorted Set은 Set의 특성을 그대로 가지며, 추가적으로 저장된 member들의 순서도 관리합니다.
- 데이터가 저장될 때부터 score 순으로 정렬되며 저장됩니다.
- sorted set데이터는 오름차순으로 내부 정렬됩니다.
- value는 중복 불가능하며, score는 중복 가능합니다.
- 만약 score 값이 같으면 사전 순으로 정렬되어 저장됩니다.
Redis의 자료구조에 대해 알아봤고, 데이터를 관리할 때 알맞는 자료구조를 사용하여 효율적으로 사용해봅시다 !