07
29

 

 

 

 

 

Redis 란?

 

Redis는 다양한 자료 구조를 지원하는 key-value 구조의 In-Memory 데이터 저장소이다.

 

 

1. key-value 구조

  • NoSQL로 분류된다.
  • 시간 복잡도는 O(1)

 

2. 다양한 자료 구조

  • String, List, Set, Sorted Set, Hash
  • Stream, HyperLogLog, Bitmap, Geospatial Index 등
  • redis의 자료구조는 atomic한 성질을 가지고 있어서 race condition을 피할 수 있다.

 

3. In-Memory 데이터베이스

  • 디스크가 아닌 메인 메모리에 데이터를 저장하여 빠르다.
  • 명시적으로 데이터를 삭제하거나 만료를 설정할 수 있다.
  • 만약 데이터를 넣을 공간이 없으면 LRU 혹은 LFU 알고리즘에 의해 key eviction이 발생한다.
  • 장애 발생시 서버가 다운되면 데이터 유실될 수 있다. 때문에 데이터 보존을 위해 스냅샷 및 AOF 기능을 제공한다.

 

4. 싱글 스레드

  • 서버 하나에 여러 개의 redis 서버를 띄울 수 있다. (주로 master - slave 구조)
  • 시간이 오래 걸리는 연산 O(N)은 지양하는 편이 좋다.
  • 멀티 스레드가 아닌 싱글 스레드여서 race condition을 피할 수 있다.

 

5. 오픈 소스

  • Redis는 오픈 소스 기반이다.

 

 

 

 

 

사용처

  • Remote Data Store : 글로벌 캐싱. A, B, C 서버에서 데이터를 공유하고 싶을 때 사용한다.
  • Local Data Store : 로컬 캐싱. 한 대의 서버에서 사용할 때 전역 변수를 사용할 수도 있겠지만 레디스를 사용할 수도 있다. 레디스는 race condition을 피할 수 있다는 장점이 있다.
  • 인증 토큰 저장 (Strings 또는 hash)
  • Ranking 보드 (Sorted Set)
  • 유저 API limit
  • Job queue (list)

 

 

 

 

 

Redis vs. Memcached

 

Redis와 Memcached 둘 다 key-value In-Memory 저장소이기 때문에 자주 비교된다.

 

  Redis Memcached
사용처 캐시, 데이터베이스, 메시지 브로커, 큐 캐시, 세션 저장소
데이터 구조 / 크기 제한 다양한 데이터 구조 지원 (~512MB) String만 지원 (~1MB)
스레드 싱글 스레드 멀티 스레드
데이터 저장
(Persistence / snapshot)
O X
데이터 복제 (replication) O X
트랜잭션 지원 O X (작업이 원자적이긴 함)
Pub/Sub 지원 O X

 

 

 

 

 

참고 자료

 

 

 

 

 

COMMENT