skarltjr / Memory_Write_Record

나의 모든 학습 기록
0 stars 0 forks source link

Redis 캐시 전략 #127

Open skarltjr opened 1 year ago

skarltjr commented 1 year ago
스크린샷 2022-08-22 오전 1 31 48

읽기 전략 / look aside

장점 :

단점 :

읽기 전략 / read through

장점 :

단점 :


쓰기 전략 / write behind

단점 :


### 쓰기 전략 / write through
- <img width="776" alt="스크린샷 2022-08-22 오전 1 49 55" src="https://user-images.githubusercontent.com/62214428/185802032-c7f4e2b8-2149-49ab-a288-4a14555a1570.png">

장점 :

단점 :

skarltjr commented 1 year ago

캐시 저장 방식 지침

캐시는 자주 사용되면서, 자주 변경되지 않는 데이터에 아주 적합하다

캐시 데이터는 언제든지 데이터가 날아갈 수 있는 휘발성이 기본이라는것을 인지해라

캐시 제거 방식 지침

캐시의 경우 대부분 디비에 저장된 데이터의 복사본으로 동작된다
이는 정합성의 문제가 분명히 발생할 수 있다.
따라서 캐시의 기본 만료 정책을 설정해야한다

이때 캐시의 ttl이 너무 짧아도 길어도 문제다. 고민이 매우 필요하다

문제는 캐시에 매우 많은 커넥션이 물려있을때 캐시가 만료되는 경우 해당 커넥션이 동시에 디비로 향한다. 이는 곧 디비 부하를 가져올 수 있으며 여러 커넥션이 동시에 필요 데이터를 함께 읽는 중복 읽기 읽어온 데이터를 여러 커넥션이 동시에 캐시하는 중복 쓰기가 발생하고 ttl이 짧은 경우 해당 상황이 더욱 빈번하게 일어날 수 있다

이 현상을 해결하기 위해 PER(Probablistic Early Recomputation) 알고리즘을 도입할 수 있습니다. 이 알고리즘은 키의 TTL이 실제로 만료되기 전에 일정 확률로 캐시를 갱신하는 방법입니다.

- ttl이 긴 경우

불필요한 데이터가 메모리를 잡아먹게되는 경우가 발생할 수 있다

skarltjr commented 1 year ago

cache stampede를 예방하는 방법

PER(Probablistic Early Recomputation)

디바운싱