<aside> <img src="https://noticon-static.tammolo.com/dgggcrkxq/image/upload/v1566913679/noticon/xlnsjihvjxllech0hawu.png" alt="https://noticon-static.tammolo.com/dgggcrkxq/image/upload/v1566913679/noticon/xlnsjihvjxllech0hawu.png" width="40px" /> Redis 시리즈 [Redis] 0. 초 간단! Docker을 이용하여 Redis 설치하기 [Redis] 1. Redis에 대해 알아보기 [Redis] 2. NestJS 백엔드 환경에서 Redis를 데이터 저장소로 사용하기 [Redis] 3. NestJS 백엔드에서 환경에서 Redis의 PUB/SUB과 Socket.IO Adapter, PM2를 이용하여 소켓 클러스터 서버 구현하기
</aside>
Redis는 이름에서 알수 있듯이 Remote(원격)에 위치하고 프로세스로 존재하는 In-Memory 기반의 Dictionry(Key-Value) 구조 데이터 관리 Server 시스템이에요.
여기서 key-value 구조 데이터란, mysql 같은 관계형 데이터가 아닌 비 관계형 구조로서 데이터를 그저 ‘키-값’ 형태로 단순하게 저장하는 구조를 말해요.
그래서 관계형 데이터베이스와 같이 쿼리 연산을 지원하지 않지만, 대신 데이터의 고속 읽기와 쓰기에 최적화 되어 있어요.
그래서 Redis는 일종의 NoSQL로 분류되기도 해요.
<aside> 💡 INFO NoSQL은 Not Only SQL의 약자로써 기존 관계형 데이터베이스(RDBMS)보다 더 융통성 있는 데이터 모델을 사용하고 데이터의 저장 및 검색을 위한 특화된 메커니즘을 제공하는 데이터 저장기술을 의미한다. NoSQL 데이터베이스는 단순 검색 및 추가 작업에 있어서 매우 최적화된 키-값 저장 기법을 사용하여 응답속도나 처리 효율 등에 있어서 매우 뛰어난 성능을 보여준다.
</aside>
또한 Redis는 인 메모리(In-Memory) 솔루션으로도 분류되기도 하는데, 다양한 데이터 구조체를 지원함으로써 DB, Cache, Message Queue, Shared Memory 용도로 사용될 수 있어요.
일반 데이터베이스 같이 디스크(ssd)에 데이터를 쓰는 구조가 아니라 메모리(dram)에서 데이터를 처리하기 때문에 작업 속도가 상당히 빨라요.
마지막으로 Redis가 인기 있는 이유는 Java, Python, PHP, C, C++, C#, JavaScript, Node.js, Ruby, R, Go를 비롯한 정말 많은 프로그래밍 언어 프레임워크에 대한 API를 폭넓게 지원하기 때문이에요. (참고)