[DB]-Redis는-처음이야

Aug 20, 2018


(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 값을 이용하여 지정된 위치에 데이터를 넣거나 뺄 수 있다.