Skip to content

Latest commit

 

History

History
72 lines (36 loc) · 3.43 KB

redis.md

File metadata and controls

72 lines (36 loc) · 3.43 KB

Redis

캐시란?

캐시는 이미 요청되었거나, 나중에 요청 결과를 미리 저장해두었다가 이를 빠르게 서비스해주는 것이다.

이는 웹서비스에서도 사용될 수 있고, RDBMS에서도 사용되며 CPU에서도 L1, L2, L3 같이 캐시가 있다.

물리적인 하드디스크 안에도 캐시가 존재한다. 이렇듯 캐시는 읽고 쓰는데 있어서 빠른 속도를 보장하기 위한 장치다.

캐시는 일반적으로 디스크 접근이 아니라 메모렝 상주된 버퍼에 접근하는 것을 의미한다.

메모리의 I/O 속도는 디스크 I/O 속도보다 빠르다.

그러나 메모리의 사이즈를 늘리는 것은 디스크에 비해 한계가 있다.

하지만 1대의 서버에서 처리할 수 없는 용량이 필요하다면, 캐시 서버를 클러스터링 하여 부하 분산 처리를 할 수도 있다.


Redis

Redis는 캐시 시스템으로서 모든 데이터를 메모리에 저장하고 조회하는 NoSQL 이다.

즉, 인메모리 데이터베이스다. 그리고 영속성과 다양한 데이터 구조와 같은 부가적인 기능도 제공한다.

Redis는 메모리에 데이터를 저장함으로써 속도를 빠르게 한다가 가장 큰 특징이라고 생각할 수 있지만

Redis가 다른 인메모리 DB들과 다른 차이점은 바로 다양한 데이터 구조를 지원한다는 것이다.

위와같이 다양한 자료구조들을 지원함으로써 개발하는데 편의성이 좋아지고 난이도가 낮아지는 장점이 있다.

그리고 어떤 데이터를 정렬해야하는 상황이 있을때, DBMS를 사용한다면 DB에 데이터를 저장하고 저장된 데이터를 정렬하여 다시 읽어오는 과정은 디스크에 접근을 직접 해야하기 때문에 시간이 더 걸린다.

그러나 인메모리 DB인 Redis는 자체 제공하는 ZSet(Sorted Set)이라는 자료구조를 통해 더 빠르고 간단하게 정렬할수 있다.

Redis의 조회 속도는 O(1)이다.


Redis의 주요 특징

  • 영속성을 지원하는 인메모리 데이터 저장소
  • 읽기 성능 증대를 위한 서버 측 복제를 지원한다.
  • 쓰기 성능 증대를 위한 클라이언트 측 샤딩을 지원한다.
  • 다양한 서비스에서 사용되며 검증된 기술이다.
  • 문자열, 리스트, 해시, 셋, 정렬 셋과 같이 다양한 데이터형을 지원하고 메모리 저장소임에도 불구하고 많은 데이터형을 지원하므로 다양한 기능을 구현한다.

정의하면, "레디스는 고성능 key-value 저장소로 문자열, 리스트, 해시, 셋, 정렬 셋 형식의 데이터를 지원하는 NoSQL이다."


Redis 영속성

메모리에 저장되는 데이터는 휘발성이므로 시스템이 종료되면 데이터가 삭제된다.

Redis는 데이터의 지속성을 보장하기 위하여 데이터를 Disk에 저장할 수 있는데 다음과 같은 방식이 있다.

  1. RDB(Snapshotting) 방식 | 메모리의 있는 데이터들의 스냅샷을 Disk에 옮겨담는 방식
  2. AOF(Append On File) 방식 | Redis의 모든 Write/Update 연산 자체를 모두 log 파일에 기록

RDB 방식에서는 Snapshot을 로딩하는 시간, 스냅샷 주기에 따른 데이터 복구 범위 문제 때문에 AOF 방식을 더 많이 사용한다.