Redis 개요

레디스는 데이터베이스, 캐시, 메세지 브로커의 역할을 한다. In-memory 자료구조 Store로서, 다양한 자료구조를 제공한다.

즉 모든 데이터를 메모리에 저장하고 조회한다는 건데 이를 통해 기존 관계형 데이터베이스(RDB)보다 빠른 속도를 보여준다. 메모리접근이 디스크 접근속도보다 월등히 빠르기때문이다.

레디스는 아래와같이 다양한 자료구조는 Key - Value형태로 저장한다.

Untitled

또한 레디스는 SingleThread로 동작하고, Critical Section에 대한 동기화를 제공한다. 이를통해 트랜잭션의 문제를 해결할 수 있는데, 레디스의 모든 자료구조가 Atomic하기 때문이다. 따라서 race condition을 피해 데이터의 정합성을 보장하기 쉽다.

즉 서로다른 Transaction의 Read/Write 동기화를 지원하여 데이터의 일관성을 유지해준다.

따라서 여러 서버에서 같은 데이터를 공유할때 혹은 싱글서버인 경우에도 캐싱의 역할을 하기 위해 사용한다.

→ 레디스는 개발을 단순화해주고, Single Thread이므로 빠른 처리를 지원한다(컨텍스트 스위칭의 부담이 적기 때문에)

Cache개념

캐시란 나중의 요청에 대한 결과를 미리 저장해놓았다가 빠르게 사용하는 것을 의미한다.

CPU Register, CPU Cache(SRAM), DRAM(main Memory), Storage(SSD,HDD)순으로 캐싱의 속도가 느려진다. 다만 속도가 빠를수록 가격이 비싸고 용량의 제한이 높다.

Redis Data Structure

String

> set hello world
OK
> get hello
"world"