현재 사용하고 있는 Redis의 백업을 해야할지 말지 고려하고 있는데,

Redis에 대해서 미리 공부하기 위해 작성하는 포스트

 


Redis 란?

키-값 기반의 인-메모리 데이터 저장소 (키-값 기반이라 쿼리를 따로 사용하지 않아도 됨)
다양한 데이터 구조를 지원 (String, Lists, Sets, Sorted Sets, Hashes)
싱글 스레드이기 때문에 atomic(원자성)을 보장한다.

 

왜 쓰는걸까?

사용자가 늘어남에 따라 'WEB-WAS-DB'의 3계층 구조를 사용하는 경우, DB에 부하가 가해지기 시작함 (느려짐)
이 부하를 줄이기 위해 한 번 읽어온 데이터를 저장하고, 다시 요청하는 경우 빠르게 결과 값을 받을 수 있도록 함 (캐싱)

 

캐시 사용구조

Client - Server - Cache - DB or Server - Cache

캐시 사용구조


여기서 캐시가 redis가 된다
look aside cache 기준으로
가장 먼저 캐시에 데이터가 있는지 확인하고,
데이터가 있으면 캐시 데이터 사용
데이터가 없으면 실제 DB데이터 사용
DB데이터를 캐시에 저장
혹은 일정 기간동안 캐시에 저장하고, 저장된 데이터를 DB에 저장하는 write back도 있음

 

활용 사례

  • 최근 검색 목록
  • 유저 인증 토큰
  • 랭킹 보드

 

단점, 주의사항

인 메모리 방식이기 때문에 장애 발생시 데이터 유실 발생
싱글 스레드이기 때문에, 1번에 1개의 명령어만 실행할 수 있어
한 서비스 요청건을 처리하기 전까지 다른 서비스 요청을 받아들일 수 없다
그래서 저장된 모든 키를 보여주는 명령어나, 모든 데이터를 소거하는 명령어와 같이
실행 대상을 전수처리 해야하는 경우 속도가 느려질 가능성이 크다
또한, RDB 기능을 사용하는 경우 장애가 발생할 요인이 많아 주의 필요

 

참고 자료

https://brunch.co.kr/@jehovah/20
https://sabarada.tistory.com/103
https://zdnet.co.kr/view/?no=20131119174125
https://www.youtube.com/watch?v=mPB2CZiAkKM (우아한테크세미나)

+ Recent posts