Redis

양현모·2021년 1월 2일
1

Redis란 무엇인가?

Redis=Remote Dictionary Server
Dictionary는 파이썬을 사용한 사람들은 아는 자료구조이다. Key-value를 이용하여
데이터를 저장하는 자료구조를 뜻합니다.
즉,외부에 있는 Dictionary라는 자료구조를 사용하는 서버라고 해석이 된다.

Redis의 사전적 정의로는 메모리 기반의 key-value 구조 데이터 관리 시스템이며, 모든 데이터를 메모리에 저장하고 조회하기에 빠른 Read, Write 속도를 보장하는 비 관계형 데이터베이스이다(네이버 사전정의)

여기서 알수있는데 Redis는 비 관계형 데이터베이스!! 즉,데이터베이스라는 의미이다.

비 관계형 데이터베이스(No SQL)
스키마가 없으며 관계가 없는 데이터베이스


SQL의 Table,field을 NoSQL에서는 Collection,Documents이라고 지칭한다.
NoSQL의 경우 field가 없으므로 자유로운 형식을 JSON과 동일한 모양으로 데이터를 저장하여 개발자나 자신이 필요한 정보들만 사용 가능합니다.

NoSQL의 장점
1. 스키마가 없기 때문에, 유연성이 높습니다. 즉, 저장된 데이터를 언제든지 조정하고 새로운 ‘필드’를 추가할 수 있습니다.
2. 데이터는 필요한 형식으로 저장됩니다. 이렇게 하면 데이터를 가져오는 속도가 빨라집니다.
3. 수직 및 수평 확장이 가능하므로 데이터베이스가 애플리케이션에서 발생시키는 모든 읽기 / 쓰기 요청을 처리 할 수 있습니다.

NoSQL의 단점
1.유연성 때문에 데이터 구조 결정이 늦어질 수 있다.
2.복사된 데이터가 변경되면 여러 컬렉션과 문서를 수정 해야 한다.

Cache메모리란?
한번 처리한 데이터를 임시로 저장하고 필요에 따라 전송,갱신,삭제하는 기술로 보통은 데이터의 보관장소로 서버의 메모리를 사용하는 경우가 많다.
그렇기 때문에 디스크에서 정보를 얻어오는 것보다 훨씬 빠른 I/O성능을 얻을 수 있으나 서버가 다운되거나 재부팅되는 경우 사라지는 성격의 휘발성을 가지고 있어 영속적으로 보관할 수 없다. 말 그대로 임시적으로 보관하고 빠르게 그 정보에 접근하기 위한 용도로 사용되는 메모리 영역이다.

cache를 사용하는 이유
1.서버간 불필요한 트래픽을 줄일 수 있다.
2.웹어플리케이션 서버의 부하를 감소시킨다.
3.어플리케이션의 빠른 처리성능(조회)을 확보해서 궁극적으로 어플리케이션을 사용하는 고객에게 쾌적한 서비스 경험을 제공하는 것이다.

메모리 계층구조

이렇게 피라미드 구조로 위쪽에 있는 레지스터 부터 맨 아래쪽에 있는 저장소로 이루어진 구조입니다.
위쪽일수록 속도는 빠르지만 용량이 작아지고 아래쪽일 경우에는 이와 반대입니다.

캐시영역은 SRAM이라는 영역으로 빠르고 비싸고 크기 또한 작습니다. 하지만 용량 또한 작은데 redis는 데이터베이스 이므로 캐시영역을 사용하기에는 용량이 작아 부적합합니다.

메인 메모리는 DRAM이라는 영역으로 적당히 빠르고 용량이 적당히 큽니다. 이 구간의 가장 큰 특징은 휘발성이라는 특징인데 이 특징은 컴퓨터가 꺼지게 되면 데이터 또한 날라가는 특징입니다. 데이터베이스에는 부적합 합니다.

저장소에는 SSD와 HDD과 포함이 되고 엄청 느리지만 용량이 엄청 큽니다. 가장 큰 특징은 비휘발성인 특징이 있습니다.

기본적으로 데이터베이스는 컴퓨터가 꺼지더라도 자료들을 저장해야 하므로 저장소에 저장을 하는데 기술이 발달하고 하드웨어가 커지면서 메인 메모리에 자료들을 저장해서 좀 더 빠르고 쉽고 자료들에 접근하고자 만들어 낸 것이 redis입니다.
즉 인 메모리 데이터 베이스(cache)이다. 인 메모리란 저장소가 아닌 ram에 데이터를 저장하는 기술입니다.

redis 자료구조
1.String
Redis의 가장 기본적인 Type 입니다.
일반적으로 우리가 알고 있는 Key-value 형식을 따르고 있습니다. 

Strings 명령어의 특이사항 및 활용방법입니다.
값의 최대 길이는 512MB입니다.
Atomic counters를 구현할 수 있습니다.
-Atomic Counter란 thread safe(멀티 스레드 환경에서 올바른 결과를 내어주는 함수)한 counter라 생각해 주시면 됩니다.
APPEND 명령어를 통해 값을 덧붙히기가 가능합니다.

2.List
Linked List와 유사한 형태로 데이터가 저장되는 Redis에서 제공하는 자료구조입니다.
String 들의 집합

3.Hash
Java의 HashMap
value 내에서 field/string value 쌍으로 이루어진 테이블 저장하는 데이터 구조체

4.Set
Redis Sets는 순서가 보장되지 않는 Strings의 집합 자료구조입니다. 
Set간의 연산을 지원한다.
자바의 ‘Hash Set’과 동일

5.Sorted Set
Redis의 Sorted sets 자료구조는 Sets 자료구조에 Score를 추가로 기록하여 score가 낮은 순서부터 높은 순서대로 정렬되는 자료구조입니다.
Java의 TreeSet

0개의 댓글