[Redis] Redis 데이터 유형

2020. 10. 5. 16:03Database/Redis

1. Redis 데이터 유형

1) 키-값 스토어

Redis는 기본적으로 키-값 스토어형태이다. 특정 키 값에 값을 저장하는 구조로 구성되어 있고, 기본적인 PUT, GET 연산자를 지원한다. 단, 이 모든 데이터는 메모리에 저장되고, 이로 인하여 매우 빠른 읽기, 쓰기 속도를 보장한다. 따라서 전체 저장 가능한 데이터 용량은 물리적인 메모리 크기를 넘어설 수 있다.

 

단순한 메모리 기반의 키-값 스토어라면 이미 Memcached가 있지만 Redis는 저장되는 값이 단순한 Object가 아니라 자료구조를 갖기 때문에 큰 차이를 가진다.

2) String

Redis의 가장 기본적인 데이터형으로 키에 하나의 값을 저장한다. Text, Integer(Redis에는 정수, 실수형이 따로 존재하지 않음), JPEG, Binary 등 저장할 수 있다. 이 데이터형의 값은 정수인 경우에는 Int 혹은 Raw로 인코딩된다.

String

 키에 저장 가능 최대 데이터 크기는 512 MB이다.

3) List

String의 집합으로 저장되는 데이터 형태는 Set과 유사하지만, 일종의 배열 혹은 양방향 Linked List이라고 생각하면 된다. List 앞과 뒤에서 PUSH, POP 연산을 이용하여 데이터를 넣거나 뺄 수 있고, 지정된 인덱스값을 이용하여 지정된 위치에 데이터를 넣거나 뺄 수 있다. 이 데이터형의 값은 설정파일에서 정해준 조건보다 큰 경우는 Linked List 혹은 Zip List로 인코딩된다.

 

일반적인 Linked List 특징을 지니고 있기 때문에 List 내에 수백만 개의 아이템이 있더라도 Head와 Tail에 값을 추가할 때 동일한 시간이 소요된다. 특정 값이나 인덱스로 데이터를 찾거나 삭제할 수 있으며, 대표적인 사용 사례로는 생산자-소비자 패턴에서 많이 사용된다. 생산자가 아이템을 만들어 List에 넣으면 소비자가 꺼내와서 액션을 수행하는 식으로 동작한다.

List

4) Set

String의 집합으로 여러개의 값을 넣을 수 있다. Set간의 연산을 지원하며, 집합이기에 교집합, 합집합, 차이를 매우 빠른 시간내에 추출할 수 있다. 키에 중복된 데이터는 존재하지 않는다. 요소의 추가, 제거 및 존재체크 시 소모되는 시간이 Set에 포함된 요소의 수에 관계없이 일정하다.이 데이텨형의 값은 설정파일에서 정해준 조건보다 큰 경우에 Hash Table 혹은 Int Set으로 인코딩된다.

Set

5) Sorted Set

Set에 Score(가중치)라는 필드가 추가된 데이터형이다. Score를 기준으로 오름차순 정렬이 되며, Score값 범위에 따른 쿼리, Top Rank에 따른 쿼리 등이 가능하다. 동일한 키에서 각 요소들의 값은 유일하지만, Score 값은 중복될 수 있다. 이 데이터형의 값은 설정파일에서 정해준 조건보다 큰 경우 Skip List 혹은 Zip List로 인코딩된다.

Sorted Set

6) Hash

암호화와는 관계없이, Hash는 값내에 필드/문자열 값 쌍으로 이루어진 테이블을 저장하는 데이터 구조체이다. RDBMS에서 PK 1개와 String 필드 하나로 이루어진 테이블이라고 생각하면 된다. 즉, 키가 PK의 역할을 수행하기에 키 하나는 테이블 한 행과 같다. 객체를 나타내는데 사용 가능한 데이터 형이며, 설정파일에서 정해준 조건보다 큰 경우는 Hash Table 혹은 Zip Map으로 인코딩된다.

Hash

7) 요약

Redis의 데이터 구조체의 특징으로는 값이 일반적인 String뿐만 아니라 List, Set, Hash와 같은 집합형 데이터 구졸르 지원한다. 저장된 데이터에 대한 연산이나 추가 작업(합집합, 교집합, 범위 쿼리 등)이 가능하다. List는 일종의 Linked List, Set은 일종의 집합, Sorted Set은 오름차순으로 정렬된 집합, Hash는 키 기반의 테이블과 같은 특징을 지니고 있다. 이론적으로는 2^32개의 데이터를 저장할 수 있으나, 최적의 성능을 낼 수 있는 것은 일반적으로 1,000 - 5,000개 사이로 알려져 있다.

※ String을 제외한 나머지 데이터 유형의 키에 저장 가능한 최대 데이터 크기는 '2^32 - 1'이다.


[참고] bcho.tistory.com/654

[참고] kerocat.tistory.com/1

[참고] medium.com/garimoo/%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%A5%BC-%EC%9C%84%ED%95%9C-%EB%A0%88%EB%94%94%EC%8A%A4-%ED%8A%9C%ED%86%A0%EB%A6%AC%EC%96%BC-01-92aaa24ca8cc

728x90

'Database > Redis' 카테고리의 다른 글

[Redis] redis.conf 설정 파일  (0) 2020.10.06
[Redis] 실습용 Redis 서버 설치  (0) 2020.10.06
[Redis] Expire, Persistence, Pub/Sub Model, Replication  (0) 2020.10.05
[Redis] NoSQL, Redis  (0) 2020.10.04