디스크가 아닌 인-메모리 데이터 저장소(RAM에 저장함)
보통 데이터베이스는 하드 디스크나 SSD에 저장하는데, Redis는 RAM에 저장하기 때문에 속도가 매우 빠름 -> 디스크 스캐닝이 필요없어서 검색 시 유용함
키-값 기반이기 때문에 쿼리를 따로 할 필요없이 결과를 바로 가져옴
RAM은 휘발성이므로 이를 막기 위한 백업 과정이 필요함
SnapShot
: 특정 지점을 설정하고 디스크에 백업(dump)AOF(Append Only File)
: 데이터 변경이 일어나는 커멘드를 AOF파일에 기록해두는 방식: 단수한 키 - 값 매핑 구조
: 순서가 없는 String 데이터 집합. 중복이 없음
; Sets와 같은 구조. 단 score를 통해서 순서를 정할 수 있음
: 키-값 구졸르 여러개 가진 object타입을 저장하기 좋은 구조
: Array 형식의 데이터 구조, 양 끝에 데이터를 삽입/삭제할 때에는 속도가 빠르지만, 중간에 데이터를 삽입/삭제하기는 힘듦.
조회수 채킹 기능
-> 잦은 I/O를 발생시키는 데이터를 처리할 때 레디스를 사용해 데이터를 캐싱 처리하고, 일정한 주기에 따라 RDB에 업데이트 한다면 RDB에 가해지는 부담을 크게 줄이고, 성능을 향상할 수 있다.Publisher(송신자)
로부터 전달받은 메시지를 Subscriber(수신자)
로 전달해주는 중간 역할이며 응용 소프트웨어 간에 메시지를 교환하는 역할을 함.예시) 만약 A, B라는 서버가 있다.
A : 실시간으로 데이터를 수집하고 관리하는 서버
B : 이 데이터를 가공하여 사용하는 서버
B에서 A에 있는 실시간으로 쌓이고 있는 최신 데이터를 가져오기 위해서 어떤 방식이 있을까?
1. 가장 일반적인 방식 : A에서 mySQL과 같은 RDS에 적재하여 B가 이 DB를 조회하는 방법
-> 단 최신의 데이터만을 빠르게 조회하기가 쉽지 않다. 조회 성능을 높이고자 인덱스를 쓴다면 데이터 삽입 시 속도가 느려지므로 실시간 처리로는 적절치 않다.
2. 메시지 브로커 사용 방식 : A에서 수집한 데이터를 바로 메시지 쿠에 적재하고(Publish) B에서 메시지를 소비(Subscribe)하여 바로 사용하게 한다. 별도의 조회과정 없이 적재된 것만 바로 사용되면 된다.
잘봤습니다. 좋은 글 감사합니다.