레디스에서는 다양한 데이터 타입(자료구조)를 지원한다.
각 데이터 타입의 특징과 각 타입 별로 지원하는 명령어를 알아보자.
1. String
- 가장 기본적인 데이터 타입으로 가장 많이 사용된다.
- 바이트 배열을 저장한다. (binary-safe)
- 바이너리로 변환할 수 있는 모든 데이터를 저장할 수 있다.
- 최대 크기는 512MB
주요 명령어
- GET - 특정 키의 문자열 값을 가져온다.
- SET - 특정 키의 문자열 값을 저장한다.
- INCR - 특정 키의 값을 Integer로 취급하여 1 증가시킨다.
- DECR - 특정 키의 값을 Integer로 취급하여 1 감소시킨다.
위 두개 명령어는 Atomic하기 때문에 Race-condition이 발생하지 않는다.
- MSET - 여러 키에 대한 값을 한번에 저장한다.
- MGET - 여러 키에 대한 값을 한번에 가져온다.
2. List
- List 타입은 Linked-list 형태의 자료구조를 사용한다.
- Index 접근이 느리지만, 데이터 추가/삭제가 빠름
추가로 Queue와 Stack으로서 사용할 수 있다.
- LPUSH, RPUSH - 리스트의 왼쪽/오른쪽에 새로운 값을 추가한다.
- LLEN - 리스트 사이즈를 반환한다.
- LRANGE - 특정 범위의 내용을 반환한다.
- LPOP, RPOP - 리스트의 왼쪽/오른쪽에 값을 삭제하고 반환한다.
3. Set
- 순서가 없는 유니크한 값의 집합
- 검색이 빠르다.
- 개별 접근을 위한 인덱스가 존재하지 않는다.
- 집합 연산이 가능하다.
자주 사용되는 명령어
- SADD - Set에 데이터를 추가한다.
- SREM - Set에 데이터를 삭제한다.
- SCARD - Set에 저장된 아이템 개수를 반환한다.
- SMEMBERS - Set에 저장된 아이템들을 반환한다.
- SISMEMBER - 특정 값이 Set에 포함되어 있는 지를 반환한다.
4. Hash
- 하나의 key 하위에 여러 개의 field-value 쌍을 저장
- 여러 필드를 가진 객체를 저장하는 것으로 생각할 수 있다.
- 객체를 String에 보관하는 것과 비교했을 때 특정 필드만 접근할 수 있다는 장점이 있다.
- (여러 개의 필드를 함께 접근할 때는 활용성이 떨어진다.)
자주 사용되는 명령어
- HGET - 특정 필드의 값을 반환한다.
- HSET - 한개 또는 다수의 필드에 값을 저장한다.
- HMGET - 한개 이상의 필드 값을 반환한다.
- HINCRBY - 한개 이상의 필드 값을 반환한다.
- HDEL - 한개 이상의 필드를 삭제한다.
5. Sorted Set
- Set과 유사하게 순서가 없는 유니크한 값의 집합
- 각 값은 score라는 값을 추가로 가지고 정렬되어 있음
- 정렬된 상태이기에 빠르게 최소/최대값을 구할 수 있음
- 순위 계산, 리더보드 구현 등에 활용
자주 사용되는 명령어
- ZADD - 한개 또는 다수의 값을 추가 또는 업데이트한다.
- ZRANGE - 특정 범위의 값을 반환한다. (오름차순)
- ZRANK - 특정 값의 위치를 반환한다. (오름차순)
- ZREVRANK - 특정 값의 위치를 반환한다. (내림차순)
- ZREM - 한개 이상의 값을 삭제한다.
6. Bitmap
- 비트 벡터를 사용해 N개의 Set을 공간 효율적으로 저장한다.
- (비트 단위로 데이터를 저장하기 때문에 낭비되는 공간이 없다.)
- 비트 연산이 가능하다.
자주 사용되는 명령어
- GETBIT - 비트맵의 특정 오프셋에 값을 반환한다.
- SETBIT - 비트맵의 특정 오프셋에 값을 저장한다.
- BITCOUNT - 비트맵에서 set(1) 상태인 비트의 개수를 반환한다.
- BITOP - 비트맵들간의 비트 연산을 수행하고 결과를 비트맵에 저장한다.
7. HyperLogLog
- 유니트한 값의 개수를 매우 효율적으로 얻을 수 있음
- 확률적 자료구조로서 오차가 있으며, 매우 큰 데이터를 다룰 때 사용한다.
- 2^64개의 유니크 값을 계산이 가능하다.
- 12KB까지 메모리를 사용하며 0.81%의 오차율을 허용한다.
자주 사용되는 명령어
- PFADD - HyperLogLog에 값들을 추가한다.
- PFCOUNT - HyperLogLog에 입력된 값들의 cardinality(유일값의 수)를 반환한다.
- PFMERGE - 다수의 HyperLogLog를 병합한다.
참고
'Database > NoSQL' 카테고리의 다른 글
NoSQL - MongoDB는 대용량 데이터를 처리하는 Database일까? (0) | 2023.03.16 |
---|---|
ElasticSearch 이해하기! (0) | 2023.02.23 |
MongoDB란 무엇인가?! (기본 이해하기!) (0) | 2022.12.28 |
Redis에 대해 자세히 알아보기! (+ Cache, WriteBack, Cluster, ...) (0) | 2022.11.14 |
In-memory DB 비교 (Redis vs Memcached) (0) | 2022.07.10 |