본문 바로가기
🔺 Redis

Redis 레디스 특징, 장단점, Memcached와 redis 비교

by 비타민찌 2022. 6. 29.
728x90

Redis 레디스 특징, 장단점, Memcached와 redis 비교

Redis(Remote Dictionary Storage, 레디스)는 모든 데이터를 메모리에 저장하고 조회하는 인메모리 데이터베이스, 메모리 기반의 key-value 구조의 데이터 관리 시스템이다.

 

📍 레디스 대표적인 특징

모든 데이터를 메모리에 저장하고 조회하기때문에 빠른 Read, Write 속도를 보장하고 또 다양한 자료구조를 지원한다.

 

Redis가 지원하는 데이터 형식

String, Set, Sorted, Set, Hash, List
 

다양한 자료구조를 지원하게 되면 개발의 편의성이 좋아지고 난이도가 낮아진다.

예를들어 어떤 데이터를 정렬을 해야하는 상황이 있을 때 DBMS를 이용한다면 DB에 데이터를 저장하고 -> 저장된 데이터를 정렬하여 -> 다시 읽어오는 과정은 디스크에 직접 접근을 해야하기 때문에 시간이 더 걸린다는 단점이 있다. 이 때 In Memory 데이터베이스인 Redis를 이용하고 레디스에서 제공하는 Sorted Set이라는 자료구조를 사용하면 더 빠르고 간단하게 데이터를 정렬할 수 있다.

 

 

서버 복제 지원

Master - slave 구조로, 여러개의 복제본을 만들 수 있다. 데이터베이스 읽기를 확장할 수 있기 때문에 높은 가용성(오랜 시간동안 고장나지 않음) 클러스터를 제공한다.

 

트랜젝션

트렌젝션이란.. 트랜잭션으로 묶게 되면 트랜잭션 내부에서 하나의 로직이 실패하여 오류가 나게되면 모두 취소시키며 그렇지 않으면 모두 성공시키는 것이다. (아마 이 글을 읽고 있는 사람이라면 이미 알고 있을 것 같지만..) Redis는 이 트랜잭션 기능을 지원한다.

 

Pub / Sub messaging

Publish(발행)과 Sub(구독)방식의 메시지를 패턴 검색이 가능하다. 따라서 높은 성능을 요구하는 채팅, 실시간 스트리밍, SNS 피드 그리고 서버상호통신에 사용할 수 있다.

메시지들을 queue로 관리하지 않고, publish 하는 시점 기준으로 미리 subscribe 등록 대기 중인 클라이언트들을 대상으로만 메시지를 전달한다.

 

위치기반 데이터 타입 지원

Redis는 실시간 위치기반데이터를 지원한다. 두 위치의 거리를 찾거나, 사이에 있는 요소 찾기등의 작업을 수행할 수 있다.

 

싱글스레드

Redis는 싱글 쓰레드이기 때문에, 1번에 1개의 명령어만 실행할 수 있다. (자주 비교되는 맴캐쉬드는 멀티 스레드 지원)

Keys(저장된 모든키를 보여주는 명령어)나 flushall(모든 데이터 삭제)등의 명령어를 사용할 때, 맴캐쉬드의 경우 1ms정도 소요되지만 레디스의 경우 100만건의 데이터 기준 1초로 엄청난 속도 차이가 있다.

즉 하나의 요청이 병목되면 그 다음 요청들이 계속 밀리기 때문에 O(N)관련 명령어를 주의해야한다. O(N)관련 명령어로는 위에서 언급한 Keys, flushall를 포함해 FLUSHDB, Delete COlLECTIONS, Get All Collections가 있다. 큰 컬렉션의 데이터를 다 가져오는 경우 등도 주의하자.

 

또 RDB 작업(특정 간격마다 모든 데이터를 디스크에 저장)이 매우 오래걸린다. AWS 60기가 메모리 기준으로 10분이나 소요된다고 한다. Redis 장애에 원인의 대부분이 해당 기능 때문에 발생하기 때문에 사용할 때 주의해야한다.

 

 

📍 Redis vs Memcached

 
 
자주 비교된다.

맴캐쉬드는 명료하고 단순함을 위하여 개발된 반면,

레디스는 다양한 용도에 효과적으로 사용할 수 있도록 많은 특징을 가지고 개발되었다.

 

 

📍 Redis 사용사례

좋아요 처리, 사용자 세션관리, 유저 인증 토큰 저장, 메세지 큐잉, 최근 검색 목록 등.

 

레디스를 한 문장으로 정리하자면 다음과 같다

'고성능 키-값 저장소로서 문자열, 리스트, 해시, 셋, 정렬된 셋 형식의 데이터를 지원하는 NoSQL'

 

대표적인 특징

In-Memory Data Strucutre Store

Key - Value 형태로 데이터 저장

여러 가지 Value 타입 저장 가능 (String, Set, Hash, List 등등..)

Single Thread

데이터 만료 시간 지정 가능

 


728x90

댓글