1. 개요

얼마전 윈도우에 Redis를 설치하는 내용을 공유한 적이 있었습니다. http://sarc.io/index.php/nosql/530-windows-redis-3-2-1

오늘은 Redis에 대한 더 많은 이야기를 해볼까 합니다.


2. Redis란?

Redis is an open source (BSD licensed), in-memory data structure store, used as database, cache and message broker. - redis.io

  • Memory DB
  • No sql - key:value 한 쌍 형태로 Data를 Memory에 저장
  • Memory에 저장된 내용을 지속시키기 위해 File로 Sync하는 기능 제공
  • Replication도 지원

최신 stable 버전 : Redis 3.2.1


3. 주요 기능

  • 트랜잭션 기능
  • Pub/Sub
  • 시간 제한 키
  • LRU 방식 키 관리
  • 자동 장애복구
  • Lua 스크립트

4. Data Type

  • Strings
    -. 가장 기본적인 데이터 타입
    -. Redis의 Strings은 문자열 뿐만 아니라 이진 데이터도 저장 가능
    -. 한 Key에 데이터 최대 크기 512MB
  • Lists
    -. 배열
    -. 한 Key에 ?요소 개수 4,294,967,295 개(2^23 -1)
  • Sets
    -. 정렬되지 않은 집합 타입
    -. 한 Key에 중복 데이터 존재하지 않음.
    -. 장점 : 요소 추가, 제거 및 존재 체크 시 소모되는 시간이 set에 포함된 요소의
    수에 관계없이 일정함.
    -. 한 Key에 요소 개수 4,294,967,295 개(2^23 -1)
  • Hashes
    -. 암호화의 그 hash와 상관없음.
    -. 객체를 나타내는데 사용 가능한 데이터 타입
    -. lists와 비슷한 형태, "필드명", "필드값" 의 연속으로 이루어져있음.
  • Stored sets
    -. sets 의 각요소마다 score라는 실수 값을 가지고 있는 형태의 Type
    -. 요소들은 정렬된 형태로 보여지는데 이때 정렬하는 기준이 score (오름차순)
    -. sets 와 마찬가지로 동일한 key 에서 각 요소들의 값은 유일, but, score 값은 중복될 수 있음.
    -. 요소의 추가, 제거, 업데이트는 매우 빠른 방법으로 진행되는데 이는 "요소의 개수의 로그" 에 비례>하는 시간이 사용
    -. sorted sets 는 가장 진보한 redis 데이터 Type

5. Redis on Windows

  • The Redis project does not officially support Windows.
  • Microsoft Open Tech group 에서 개발 및 유지보수 (but, 64bit only)


6. Install on Windows

설치 진행

포트 및 힙 사이즈

인스톨 후 서비스 자동 등록됩니다.


7. Replication

센티넬을 통한 고가용성, 레디스 클러스터를 통한 자동 파티셔닝을 제공한다.

  • Master - Slave 구성 / 비동기식 replication / 실시간
  • 2.6 버전부터 Slave는 default가 쓰기 불가능, 조회만 가능 (slave-read-only 파라미터로 변경 가능)
  • 설정 : slaveof <masterip> <masterport>

8. Redis on CSP

8.1. AWS ElastiCache for Redis

Cluster Enabled/Disabled의 형태로 배포 가능하다. Cluster Enabled로 배포하면 데이터를 파티셔닝한 샤드에 배포하고, 샤드 당 0~5개의 리플리카를 배포한다.

기본적으로 primary 1개, replica 2개로 배포되는데 primary node가 죽으면 replica node 중 1개가 리더로 선출된다. (primary node가 됨)

ElastiCache for Redis는 지속성 지원을 위해 RDB를 사용한다. AOF는 디폴트 비활성화이며 특정 버전 이상에서는 사용도 불가능하다. 

8.2. Google MemoryStore

전체적인 개념은 ElastiCache와 유사하다. 독립형 Redis / 고가용성 Redis를 선택하여 배포할 수 있다. 단 이 타입은 변환할 수 없다. 

또 AWS와 달리 RDB와 AOF는 지원하지 않는다.

8.3. Azure Cache for Redis

Basic, Standard, Premium의 세 종류로 제공된다. Standard와 Premium은 99.9%의 SLA, Failover, Redis Configuration, Notify-keyspace-events 등을 추가로 제공한다. 


9. 모니터링

Pometheus/Grafana를 사용하고 Redis exporter를 깔면 모니터링이 가능하다.

CPU/메모리/Network 사용량뿐 아니라 호출 실패/성공 및 응답시간 등 확인이 가능하다.