말 그대로 외부 딕셔너리 서버다. 딕셔너리 구조는 Key-Value 값으로 이루어진 서버인데, 정확히는....
Key, Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터 베이스 관리 시스템 (DBMS)이다.
데이터베이스, 캐시, 메세지 브로커로 사용되며 인메모리 데이터 구조를 가진 저장소다.
Key-Value DB로는 1위인 인기 DB다. (23년도 9월 기준..)
근데... 왜 일반 MySQL이나 MariaDB 같은거 납두고 이거를 사용하지...?
네트워크 강의 시간이나, 한번쯤은 인터넷을 사용하면 캐시(Cache) 라는 단어를 들어봤을 것이다.
(cash 말고....)
보통 우리가 아는 DB같은 경우, 물리 디스크 (뭐... HDD 혹은 SSD)에 직접적으로 사용하기 때문에 컴퓨터가 꺼지거나 해도, 다시 데이터들을 접근할 수 있다. 데이터 손실이 잘 안된다는 큰 장점이 있긴 하지만.... 매번 물리 디스크에 접근해야 하기 때문에, 요청이 많아지면 많아질수록 부하가 많아져서 느려지게 된다.
이를 방지하기 위해 나온 방식이 캐시 서버(Cashe Server) 개념이다.
캐시는 한번 읽어온 데이터를 임의의 공간에 저장하여 다음에 읽을 때는 빠르게 결괏값을 받을 수 있도록 도와주는 공간이다.
사진에 있는 Local Web Cache가 캐시다. 사용자는 원래대로라면 항상 인터넷을 통해 서버에게 요청하고 응답을 받아야 한다.
하지만 캐시에 저장을 해놓으면 굳이 서버에 요청을 보내지 않더라도 데이터를 받을 수 있다.
이렇게 되면 DB의 부하를 낮추게 되고, 클라이언트는 더 빠르게 데이터를 전송받을 수 있다는 큰 장점이 생긴다.
Redis는 캐시 서버로 이용할 수 있다.
이게 개발자가 Redis를 사용하는 가장 큰 이유다.
현재 가장 많은 개발자가 캐시 데이터를 이렇게 이용하고 있다.
(위에서 설명한 캐시서버 방식도 이 방식이다.)
데이터를 cache에 먼저 저장했다가 특정 시점마다 DB에 전송하는 것이다.
이렇게 된다면, 매 요청마다 DB에 접근할 필요없이 특정 시점이 왔을때만 DB에 접근해 속도 저하를 방지할 수 있다.
(단, cache에 먼저 저장하기 때문에 데이터가 날아갈 위험이 있다.)
In-Memory 방식은 보조기억장치 (HDD, SSD 등)에 저장하는게 아닌 주기억장치 (RAM)에 데이터를 저장하는 방식이다.
HDD(하드디스크)는 뭐.... 원래 워낙 느리기로 소문난지라 설명 건너뛰고
SSD(Solid State Drive)는 HDD보다는 속도가 훨씬 빠르다. 메모리 반도체인 낸드플레시를 이용해 정보를 저장하는 저장장치여서 저장하는 속도는 빠르지만, 그래봤자 보조 기억장치다. 메모리(RAM) 보다는 한참 느린 속도다.
메모리에 데이터를 저장하게 된다면 메모리 내부에서 처리가 되므로 데이터를 저장하고 조회할때 하드디스크를 오고 가는 과정을 거치지 않아도 된다.
때문에 보조 기억장치에서 데이터를 가져오는 것보다 RAM에서 데이터를 가져오는 속도가 훠어어어얼씬 빠르다.
인메모리 방식을 사용하는 Redis는 그래서 속도가 빠른편이다.
하지만 장점이 강하면 단점도 강하다.
https://www.digitaltoday.co.kr/news/articleView.html?idxno=212904
-> 쿠팡 2019년 Redis에서 버그발생 기사
기사를 읽어보면 알겠지만, 쿠팡에서 Redis를 사용하다가 버그가 발생한 적이 있다.
사용자가 많아지면, 데이터가 그만큼 많아지게 되고....
그 많아진 데이터가 인메모리 방식인 Redis DB를 사용하다 보니까 데이터 > RAM 이 되어 버렸고, 결국 데이터가 손실이 되어서 버그를 발생시킨 사건이다.
게다가 RAM은 휘발성이기 때문에, RAM에 전원 공급이 안되면 바로 데이터가 지워지는 특성이 있다.
장점이 크면 클수록 리스크도 큰 법,,
정리 끗!
오 덕분에 레디스에 대해 더 잘 알게 되었어요. 저도 이전 팀에 있으면서 레디스라는 말만 많이 들어보고 실제로 어떻게 생겼고 어떤 역할을 하는지는 본 적이 없는데, 덕분에 똑똑해 진 기분이네요 🔥🔥🔥