캐시 전략, 무효화와 스탬피드 대응
·
IT
캐시를 붙이면 빨라진다. 그런데 캐시를 붙이고 나면 새로운 문제가 생긴다. 데이터가 갱신됐는데 옛날 값이 보이고, 캐시가 만료되는 순간 데이터베이스가 몰려드는 요청에 쓰러진다. 이 글은 캐시를 도입할 때 반드시 결정해야 하는 무효화 전략, 만료 설계, 동시 만료 대응 세 가지를 정리한다.읽기 캐시의 세 가지 패턴먼저 어디에 캐시를 두고 누가 채우는지를 정해야 한다.Cache-Aside(Lazy Loading)가 가장 흔하다. 애플리케이션이 캐시를 먼저 보고, 없으면 데이터베이스에서 읽어 캐시에 넣는다.def get_user(uid): v = cache.get(f"user:{uid}") if v is not None: return v v = db.query_user(uid) ..