(feat, http://bcho.tistory.com/654 - 조대협의 블로그)
홧츠 더 레디스
: Redis는 “REmote Dictionary System” 의 약자.
- : 메모리 기반의 Key/Value Store 이다.
-
NoSQL DBMS로 분류 되기도 하고, In memory 솔루션으로 분리 되기도 한다.
In memory 솔루션
- 데이터를 디스크가 아닌 메모리에서 접근하는 방식, 최적화 알고리즘이 단순하여 더 적은 CPU명령과 조회 시 검색 시간 단축, 높은 예측가능성을 장점으로 한다.
- : 다양한 데이터 구조체를 지원함으로써 Message Queue, Shared memory, Remote Dictionary 용도로도 사용 될 수 있다.
-
데이터는 메모리에 저장되며, 이로 인하여 매우 빠른 write/read 속도를 보장한다.
-
데이터 엑세스(접근, 뭐 데이터 가져오고 저장하는 거)는 메모리에서 일어나지만,** 데이터 저장을 보장하기 위해 Disk를 persistence store로 사용**한다.
레디스의 특징
1. Key/Value Store
그래
memcached
- 웹 데이터를 소비자에게 서비스 하는 데 있어 지연 시간을 줄이고 데이터베이스 및 컴퓨팅 서버에 대한 증설을 줄여주게 한다.
(feat, https://d2.naver.com/helloworld/151047 - Naver D2, Memcached의 확장성 개선)
- 외부 데이터 소스(데이터베이스나 API) 의 읽기 횟수를 줄이기 위해 데이터와 객체들을 RAM에 캐시 처리함으로써 동적 데이터베이스 드리븐 웹사이트의 속도를 높이기 위해 종종 사용된다.
2. 다양한 데이터 타입
Redis는 저장되는 Value가 단순한 Object가 아니라 자료구조 를 갖기 때문에 memcached와 큰 차이를 보인다. Redis가 지원하는 데이터 형은 크게 5가지가 있다.
1) String
: 일반적인 문자열로 최대 512mbyte 길이 까지 지원한다.
: Text 문자열 뿐만 아니라 Integer와 같은 숫자나 JPEG 같은 Binary File 까지 저장 가능.
- 2) Set
-
String의 집합, 여러개의 값을 하나의 Value 내에 넣을 수 있다고 생각하면 된다.
-
Set 간의 연산을 지원, 집합인 만큼 교집합, 합집합, 집합 간의 차이를 매우 빠른 시간내에 추출 할 수 있다.
- 3) Sorted Set
-
Set에 “score” 라는 필드가 추가 된 데이터 형으로 score는 일종의 가중치 정도로 생각하면 된다.
-
데이터는 오름 차순으로 내부 정렬되며, 정렬이 되어 있는 만큼 score 값 범위에 따른 쿼리, top rank에 따른 쿼리가 가능하다.
- 4) Hashes
-
Value 내에 field/string 쌍으로 이루어진 테이블을 저장하는 데이터 구조체이다.
-
RDBMS에서 PK 1개와 String 필드 1개로 이루어진 테이블이라고 이해하면 된다.
- 5) List
-
일종의 양방향 Linked List라고 생각하면 된다.
-
List 앞과 뒤에서 push/pop 연산을 이용해서 데이터를 넣거나 뺼 수 있고, 지정된 index 값을 이용하여 지정된 위치에 데이터를 넣거나 뺄 수 있다.