[Redis] 1. Cache와 Redis

최진민·2021년 11월 25일
0

Redis

목록 보기
1/6
post-thumbnail
  • Cache
  • Redis
  • 서비스의 규모가 커질수록 모든 요청을 DB 직접 참조 또는 API 호출로 처리하면 성능이 저하되고, 에러 발생 가능성이 높아진다. 이를 위해 등장한 것이 바로 Cache이다.



1. Cache


1.1 정의

  • 캐시(Cache) : 다시 요청할 결과를 미리 저장해둔 후 빠르게 응답해주는 서비스

    • 미리 저장한 결과에 대한 요청을 DB와 API르르 참조하지 않고 캐시를 접근하여 응답.
  • 파레토 법칙 : 80% 결과는 20% 원인으로 인해 발생한다.

    • 즉, 모든 결과를 캐싱할 필요가 없다.
    • 서비스를 운영할 때, 자주 사용되는 20%의 데이터를 캐싱하면 전체적으로 큰 영향을 미친다.

1.2 사용 구조

  • 과정

    1. Client 요청
    2. Cache와 연결 (작업)
    3. 실제 DB와 연결
    4. 다시 Cache 연결
  • 사용법 (2가지)

    • look aside cache (Lazy Loading)

      • 특징
        • 가장 흔한 프로세스
        • 캐시에 접근하여 데이터가 있으면 사용, 없으면 DB 또는 API 호출
      • 과정
        1. Cache에 데이터 유무 확인
        2. 데이터가 있으면 사용
        3. 데이터가 없으면 실제 DB 데이터 사용
        4. 데이터를 Cache에 저장
    • write back

      • 특징
        • 대량의 데이터를 읽거나 쓰면 DB는 디스크에 접근하기 때문에 성능 저하가 발생할 수 있다.
        • 데이터를 Cache에 모아 일정한 주기일정한 크기가 됐을 때, 한 번에 처리
      • 과정
        1. 데이터를 Cache에 저장
        2. Cache에 있는 데이터를 일정하게(주기, 크기) 확인
        3. 모인 데이터를 DB에 저장
        4. Cache 데이터 삭제



2. Redis


2.1 특징

  • key - value
  • 컬렉션 지원 : List, Set, Sorted Set, Hash
  • 싱글 스레드 : 원자성 보장
  • persistent : RDB, AOF, 서버가 꺼져도 데이터를 다시 불러들일 수 있음
  • 복제 : 마스터 - 슬레이브

2.2 사용

  • 원격 데이터 저장소
    • race condition에 대비할 필요가 있는 서비스에서 유용
  • 인증 토큰 개발
  • Ranking Board
  • 유저 API limit
  • Job Queue

참고

profile
열심히 해보자9999

0개의 댓글