2017년 7월 4일 화요일

Redis 자료구조

Redis는
  • BSD 라이선스 기반의 Key-value 캐시 & Store 소프트웨어.
  • String, hash, lists, sets, sorted set, bitmap, hyperloglogs 등 다양한 데이터 구조를 저장.
  • In memory 데이터베이스, NoSQL 데이터베이스로 분류

Redis의 장정
  • Redis는 데이터 저장소로 가장 I/O 속도가 빠른 장치인 메모리를 사용함.
  • 단순한 구조의 데이터 모델인 Key/Value방식으로 빠른 속도를 보장함
  • 캐시 및 데이터 스토어에 유리함
  • 다양한 API 지원

Redis 자료 구조

Strings
  • 키에 대한 값으로 문자열을 저장한다.
  • 가장 단순한 타입, redis를 사용한다면 가장 먼저 고려해볼 타입
  • JSON, XML 등 문자열로 된 데이터를 저장
  • 웹서비스에 최적
  • HTML문서의 전체 혹은 일부분을 캐시하여 사용할수 있다.
  • String이라고 해서 문자열만 저장하는게 아니고, 바이너리 데이터도 저장 가능
  • 최대 512M까지 저장이 가능
  • APPEND 명령어를 이용해서 문자열을 추가로 붙일수 있음
  • GETRANGE와 SETRANGE를 이용해서 해당 범위의 문자열을 리턴
lists
  • string의 형태로 되어 있으며, 삽입순서에 따라 정렬
  • 주요특징으로는 수백만건의 삽입과 삭제가 head와 tail에 일어나더라도 일정한 시간복잡도를 제공한다. head와 tail 근처의 요소에는 매우 빠르게 접근되지만 매우 큰 list의 중간 지점을 접근하면 느림.
  • 소셜 미디어의 타임라인 경우, LPUSH로 새로운 요소를 입력하고, LRANGE를 이용하여 최근 입력된 요소를 가져올수 있다.
Blocking operation on lists
  • list 데이터 타입에 대해서 Blocking operation을 지원
  • BRPOP, BLPOP명령은 호출하면, 데이터가 없을 경우 데이터가 준비될 때까지 block된다.

Hash
  • field&value의 쌍으로 이루어진 테이블을 저장할 수 있는 데이터 타입
  • 객체를 표현할때 최고의 데이터 타입

Set
  • 정렬되지 않은 String의 집합
  • 맴버의 추가와 제거가 가능하며 set안의 맴버들의 존재여부를 호가인 가능
  • set은 중복된 이름을 허용하지 않는다.
  • set의 흥미로운 점은 서버사이드에서 set과 set사이에 집합연산이 가능하다.
  • 데이터 타입을 통해 유니크한 값을 수집할 수 있다.

Sorted Set
  • set과 hash를 섞은 데이터 타입.
  • set과 마찬가지로 키는 유니트하며, 키로 정렬

Operation on range
Sorted set은 범위 검색을 위한 몇 가지 툴을 제공

Bitmaps
  • 바이너리 데이터에 대한 bit연산 기능
  • 가장 큰 장점은 0과 1의 상태를 가지는 아이템들을 대단히 효율적으로 저장하고, 읽을 수 있다.

HyperLogLogs
  • 어떤 데이터셋의 집합에서 유일한 원소의 개수를 검사하기 위해서 사용하는 알고리즘


댓글 없음:

댓글 쓰기

시스템 부팅시 도커 컨테이너 자동 실행

Docker 컨테이너를 운용중인 시스템이 Reboot 되버리면 컨테이너가 자동으로 올라오지 않아 불편해서 시스템 리붓시 컨테이너를 자동으로 시작되게 init 데몬에 등록하기로 했습니다. 서버는 Ubuntu 17.10 Docker는 17.0...