Remote Dictionary Server의 약자로 Key-Value쌍의 해시 맵 형태의 서버라고 볼 수 있다. 그래서 별도의 쿼리 없이 Key를 통해서 빠르게 결과에 접근할 수 있다.
또한 디스크에 데이터를 쓰는 구조가 아니라 메모리에서 데이터를 처리하기 때문에 작업 속도가 매우 빠르다.
NoSQL의 일종으로 분류된다.
NOSQL은 Not Only SQL의 약자로 기존 관계형 DBMS의 특성 뿐만 아니라, 다른 특성들을 부가적으로 지원한다는 것을 의미한다. 간단하게 말해서, 초고용량 데이터 처리 등 성능에 특화된 목적을 위해, 비관계형 데이터 저장소에 비구조적인 데이터를 저장하기 위한 분산 저장 시스템이라고 할 수 있다.
DB, Cache, Message Queue, Shared Memory 용도로 사용될 수 있으며, 주로 Cache서버를 구현할 때 많이 쓴다.
redis는 영속성을 위해서 데이터를 디스크에 저장할 수 있다. 따라서 서버가 내려가도 디스크에 저장된 데이터를 읽어서 메모리에 로딩할 수 있다. 디스크에 데이터를 저장하는 방식은 아래 두가지 방식이 있다.
RDB방식: 순간적으로 메모리에 있는 내용 전체를 디스크에 옮겨 담는 방식
AOF방식: Redis의 모든 write/update 연산 자체를 모두 log파일에 기록하는 형태
단순 key-value쌍이 아니고 string, bitmaps, hashes, lists, sets ... 다양한 데이터 구조체를 지원한다.
싱글 스레드를 사용하여 연산을 하나씩 처리하기 때문에, Race condition이 거의 발생하지 않는다.
Race Condition이란 두개 이상의 프로세스가 공통 자우너을 병행적으로 읽거나 쓰는 동작을 할 때, 공용 데이터에 대한 접근이 어떤 순서에 따라 이루어졌는지에 따라 그 실행 결과가 같지 않고 달라지는 상황을 의미한다.
아래 블로그 글을 참고하자!
https://bcp0109.tistory.com/328