기술 면접 대비 3탄 - Redis

양진영·2022년 4월 13일
0

오늘은 내가 능숙하게 사용하고자 하는 no-sql종류의 하나인 redis에 대해서 작성해보려고 한다. redis의 정의는 in-memory로 저장되어 디스크를 긁어서 데이터를 가져오는 방식이 아닌 cache방식으로 빠르게 원하는 데이터를 가져올수 있는 방식의 db이다. in-memory방식이란 데이터를 디스크에 저장하는것이 아닌 ram에 저장하는 방식을 뜻한다. 하지만 디스크에 데이터를 저장하게 되면 데이터를 영구적으로 저장할수 있지만 ram에 저장하게 되면 디바이스를 껏다 키는 순간 데이터가 휘발성으로 다 사라지게 된다. 이에 따른 백업 방식은 조금 이따가 이야기 해보도록 하겠다.

redis를 소개했을때 redis가 데이터를 저장하는 방식은 key-value방식으로 저장될수 있는 데이터 타입은 문자열, 리스트, 해시, 셋, 정렬된 셋등 다양한 방식의 타입을 지원한다. 특히 sorted-set으로 저장된 데이터는 빠르게 데이터를 가져올수있어 많은 요청에 대한 빠른 응답에 처리할때 용의하다.
사실 redis는 db로서의 기능도 있지만 pub/sub이라는 기능을 지원하여 redis adapter로 연결된 객체들간의 실시간 브로드캐스팅을 가능하게 한다. 이렇게 말하니 조금 헤깔릴수 있을것같아 쉽게 설명하자면 우리가 흔히알고 있는 그룹 채팅기능을 redis를 통해서 구현할수도 있다.

위에서 언급했던 redis의 대표적인 두가지 방식의 백업에 대해서 알아보도록 하겠다. 첫번째로는 RDB(snopshot)방식의 백업 방식이 있다. 이 방식은 사용자가 얼마간의 기간을 정해 놓고 그 기간안에 데이터의 변경이 한번이라도 일어난다면 바로 파일명.rdb 라는 파일이 생성되어 기록을 저장하게 된다. 이러한 방식은 버저닝 관리가 가능하여 원하는 버전으로 돌아갈수도 있고 이 백업 내용을 AWS 기준 S3에 배포하게 된다면 비교적 저렴한 가격으로 백업 유지할수있다. 다만 단점도 확연하다. 단점은 정해진 백업기간 외에서 장애가 일어나 로그들이 사라진다면 그 기간동안의 데이터는 복구가 안된다는 점이다.

두번째로는 AOF(append only file)방식의 백업 방법이 있다. 이것은 RDB와 다르게 기간을 정해두는것이 아닌 wrtie요청이 생기는 순간 바로바로 백업이 되어지는 방식이다. 자료조사 하던중 당연히 AOF가 RDB보다 낫다고 생각했지만 상황마다 다르다는것을 깨달았다. 왜냐하면 AOF같은 경우 결국 마지막 쓴 버전만 저장되지만 그것을 저장하기 위해 불필요한 쿼리 과정을 갖게 될것이라는 점이었다. 실제로 RDB방식과 AOF방식을 혼합해서 사용하는게 국룰이라고 한다.

오늘의 redis 관련 블로깅은 여기까지 하는걸로 하고 다음에는 실제로 사용하는 커맨드에 대해서 알아보도록 하겠다.

profile
왜? 라는 질문을 중요시하는 서버 개발자입니다

0개의 댓글