참고
Redis 자료구조
NOTE
Redis의 key-value 스토리지에서 value는 단순한 Object가 아니라 다양한 자료구조를 가진다!
각 자료구조들이 사용되는 방식
•
다양한 데이터 타입 및 자료구조를 제공함으로써, 다양한 활용사례를 지원한다.
•
모든 데이터 타입 및 자료구조는 Redis의 메모리 내 저장 및 빠른 엑세스를 그대로 유지하므로, 매우빠른 속도로 대량의 데이터를 처리할 수 있다.
Strings
NOTE
일반적인 문자열
•
byte로 저장된다.
•
바이너리로 표현되는 모든 데이터 저장이 가능하다.(JPEG와 같은 파일)
명령어
•
SET, GET
•
INCR, DECR
◦
특정 키의 값을 정수 취급해서 +- 1해준다,
•
MSET, MGET
◦
여러 키의 값을 한번에 저장하거나 얻어온다.
Lists
NOTE
•
linked-list 자료구조
◦
추가 / 삭제 / 조회하는 것은 O(1)의 속도를 가진다.
◦
특정 Index값을 조회하는건 O(N)의 속도를 가진다.
•
Queue, Stack으로 사용된다
명렁어
•
LPUSH, RPUSH
◦
새로운 값 추가
•
LLEN → 개수 반환
•
LRANGE → 특정범위 반
•
LPOP, RPOP → 삭제 반환
Hashes
NOTE
•
전형적인 Hash의 형태
•
메모리가 허용하는 한, 제한없이 field를 넣을 수가 있다.
명령어
•
HSET, HGET
•
HMGET, HINCRBY
•
HDEL
Sets
NOTE
•
중복된 데이터를 담지 않기위해 사용한다.
•
정렬되지 않은 집합이며, 저장된 데이터는 최종 한번만 저장된다.
유저 랭킹 보드서버 같은 구현에서 사
•
set에 score라는 필드가 추가된 데이터형(score는 일종의 가중치)
•
score순으로 정렬되며 저장된다.
•
value는 중복이 불가능하나, score는 중복이 가능하다.
•
score가 없다면 사전 순으로 정렬
Bitmaps
NOTE
•
bit 단위연산이 가능하다.
•
저장할 떄, 저장 공간 절약에 큰 장점이 있다.
HyperLogLog
NOTE
•
중복되지않은 대용량 데이터를 count할때 주로 많이 사용한다. (오차 범위 0.81%)
•
set과 비슷하지만 저장되는 용량이 매우 작다.