캐시 객체를 무효화 / 업데이트하는 더 나은 방법이 무엇인지 알고 싶습니다.
전제 조건
- 원격 memcached 서버가있는 경우 (여러 응용 프로그램의 캐시 역할을 함)
- 모든 서버는 Azure (호환 지역, 동일한 데이터 센터)에서 호스팅됩니다.
- 캐시 오브젝트 크기는 200 바이트에서 50 킬로바이트까지입니다.
접근 방식 1 (캐시에 최대한 빨리 저장)
- 오브젝트 A가 작성 됨-> 데이터베이스에 저장하고 캐시에 저장
- 클라이언트가 요청한 오브젝트 A-> 캐시가 있는지 점검하십시오.
- 객체 A가 업데이트 됨-> 데이터베이스에 저장, 캐시에 저장
접근법 1이 더 직관적 인 것 같습니다. 무언가가 생성되면 최대한 빨리 캐시에 넣으십시오. 누군가에 관계없이 필요합니다.
접근법 2 (lazy cache store)
- 오브젝트 A가 작성 됨-> 데이터베이스에 저장
- 클라이언트가 요청한 오브젝트 A-> 캐시가 있는지 점검하십시오.
- 객체 A가 업데이트 됨-> 데이터베이스에 저장, 캐시에서 키 삭제
접근법 2는 더 많은 메모리를 인식하는 것으로 보입니다. 이 방법에서는 요청 된 항목 만 캐시로 이동합니다.
질문 1 : 성능을 고려할 때 더 나은 방법은 무엇입니까? 메모리 나 CPU는 아직 계산하지 않습니다.
질문 2 : 제 생각은 일종의 조기 최적화입니까?
질문 3 : 다른 생각? 다른 접근법?