내보내기(0) 인쇄
모두 확장

만료 및 제거(Azure 캐시의 역할 내 캐시)

업데이트 날짜: 2010년 7월

note참고
응용 프로그램에 대한 올바른 Azure 캐시 제품 선택에 대한 자세한 지침은 내게 적합한 Azure 캐시 기능를 참조하세요.

Microsoft Azure 캐시에서는 메모리에 캐시된 개체를 영구적으로 보존하지 않습니다. 캐시된 개체는 Remove 메서드를 사용하여 캐시에서 명시적으로 제거되는 것 외에, 캐시 클러스터에 의해 제거되거나 만료될 수도 있습니다.

캐시 만료는 캐시 클러스터가 캐시된 개체를 캐시에서 자동으로 제거하도록 허용합니다. Put 또는 Add 메서드를 사용하는 경우 캐시된 개체가 캐시에 상주하는 시간을 결정하는 특정 캐시 개체에 대해 개체 시간 제한 값을 옵션으로 설정할 수 있습니다. 개체 시간 초과 값이 개체가 캐시되는 시점에 제공되지 않으면 캐시된 개체에서 기본 만료 시간을 사용합니다. 이 값은 역할에서 캐싱을 사용하는지 아니면 공유 캐싱을 사용하는지에 따라 다릅니다.

역할 기반 캐싱을 사용하는 경우 세 가지 만료 옵션이 제공됩니다.

 

만료 유형 설명

없음

만료가 사용하지 않도록 설정됩니다. 항목을 제거하거나 캐시 클러스터를 다시 시작할 때까지 항목이 캐시에 유지됩니다.

절대

항목을 만든 시점으로부터 설정된 시간이 지나면 항목이 만료됩니다.

슬라이딩

항목에 마지막으로 액세스한 시점으로부터 설정된 시간이 지나면 항목이 만료됩니다. 개체에 액세스할 때마다 슬라이딩 기간이 다시 설정됩니다. 이로 인해 자주 사용되는 항목이 캐시에 더 오래 유지됩니다.

note참고
로컬 캐시와 함께 사용할 경우 슬라이딩 만료의 동작에 주의해야 합니다. 로컬 캐시에서 항목을 읽을 경우 캐시 클러스터에 있는 개체에 액세스하지 않습니다. 따라서 항목을 로컬에서 읽는 경우에도 항목이 서버에서 만료될 수 있습니다.

공유 캐싱에서는 만료가 항상 절대이므로 기본 만료 시간을 설정할 수 있는 방법은 없습니다. 공유 캐싱에서는 항목이 48시간 후 만료됩니다. 그러나 PutAdd 메서드를 사용하여 코드에서 명시적 만료 시간을 설정할 수 있습니다. ASP.NET 공급자는 이러한 오버로드를 자동으로 사용하여 세션 상태 및 출력 캐싱에 대한 명시적 시간 제한을 제공합니다. 세션 상태 및 출력 캐싱에서 캐시 크기가 공유 캐싱 기능의 제한을 초과하면 캐시에서 오래 전에 사용한 항목이 제거됩니다.

캐시된 개체가 동시성의 이유로 잠겨 있으면 만료 기한을 지나더라도 캐시에서 제거되지 않습니다. 잠금이 해제될 경우에는 만료 기한을 지난 캐시된 개체는 캐시에서 즉시 제거됩니다.

잠금이 해제된 만료 개체가 즉시 제거되지 않도록 하기 위해 Unlock 메서드는 캐시된 개체의 만료 연장도 지원합니다.

로컬 캐시의 무효화 유형에는 상호 보완적인 시간 제한 기반 무효화와 알림 기반 무효화의 두 가지가 있습니다.

Tip
개체가 로컬 캐시에 저장된 후 무효화될 때까지 응용 프로그램은 해당 개체를 사용할 수 있습니다. 이때 해당 개체가 캐시 클러스터의 다른 클라이언트에서 업데이트되는지는 상관없습니다. 이러한 이유로 자주 변경하지 않는 데이터에 대해 로컬 캐시를 사용하도록 설정하는 것이 가장 좋습니다.

개체가 로컬 캐시로 다운로드되면 캐시 클라이언트 구성 설정에 지정된 개체 시간 제한 값에 이를 때까지 보존됩니다. 이 시간 제한 값에 도달한 후에는 개체가 무효화되어 다음에 개체 관련 요청을 받으면 캐시 클러스터에서 개체를 새로 고칠 수 있습니다.

캐시 클라이언트가 로컬 캐시를 사용하도록 설정되어 있으면 캐시 알림을 사용하여 로컬로 캐시된 개체를 자동으로 무효화할 수 있습니다. 해당 개체의 수명을 "필요에 맞게" 단축함으로써 응용 프로그램이 부실 데이터를 사용할 가능성을 줄일 수 있습니다.

note참고
공유 캐싱에서는 알림이 지원되지 않습니다.

캐시 알림을 사용하면 응용 프로그램은 일정한 간격으로 캐시 클러스터를 검사하여 새 알림을 사용할 수 있는지 확인합니다. 이 간격을 폴링 간격이라고 하며, 기본적으로 매 300초로 설정되어 있습니다. 폴링 간격은 응용 프로그램 구성 설정에서 초 단위로 지정됩니다. 알림 기반 무효화를 함께 사용하더라도 시간 제한은 로컬 캐시의 항목에 그대로 적용된다는 점에 유의하십시오. 즉, 알림 기반 무효화는 시간 제한 기반 무효화와 상호 보완적입니다.

자세한 내용 및 예제는 로컬 캐시(Azure 캐시의 역할 내 캐시)를 참조하세요.

각 캐시 호스트에서 캐시에 사용 가능한 메모리 용량을 유지하기 위해 LRU(오래 전에 사용한 항목) 제거가 지원됩니다. 임계값을 사용하여 클러스터의 모든 캐시 호스트 전반에 걸쳐 메모리를 균등하게 분배할 수 있습니다. 이 임계값은 각 컴퓨터에서 사용 가능한 실제 메모리 양과 각 컴퓨터에서 예약된 캐싱 메모리의 백분율이라는 두 요소에 의해 결정됩니다.

메모리 소비가 메모리 임계값을 초과하면 메모리 가중이 해소될 때까지 개체가 만료되었는지 여부와 관계없이 개체가 메모리에서 제거됩니다. 그런 다음 캐시된 개체는 최적의 메모리 분배 상태를 유지하기 위해 캐시 클러스터의 다른 컴퓨터로 경로가 전환될 수 있습니다.

Warning경고
제거를 사용하지 않도록 설정하면 제한의 위험이 있습니다. 이 경우 메모리가 임계값을 초과하지만 메모리 부족을 완화할 수 있는 기능이 없습니다. 이 상태의 캐시에 항목을 추가하려고 하는 클라이언트는 문제가 해결될 때까지 예외를 수신합니다. 공유 캐싱에서는 캐시 제거를 사용하지 않도록 설정할 수 없습니다.

만료 및 제거 동작은 클러스터 구성 설정의 명명된 캐시 수준에서 구성됩니다.

다음 메서드를 사용하면 캐시에 지정된 기본 설정을 다시 정의할 수 있습니다.

  • AddPut 메서드는 캐시에 추가하는 개체에 한해 만료 시간 제한 값을 지정할 수 있는 오버로드를 제공합니다.

  • PutAndUnlockUnlock 메서드는 개체의 잠금이 해제된 후 만료를 연장할 수 있는 오버로드를 제공합니다.

  • ResetObjectTimeout 메서드는 명시적으로 개체의 수명을 연장하여 캐시의 만료 설정을 다시 정의할 수 있도록 합니다.

캐시 클러스터가 다시 시작될 경우에는 만료 또는 제거 설정과 상관없이 캐시의 모든 개체가 지워집니다. 데이터가 캐시에 없으면 응용 프로그램 코드를 통해 데이터 원본에서 캐시를 다시 로드해야 합니다. 이를 흔히 캐시 배제 프로그래밍 패턴이라고 합니다.

참고 항목

표시:
© 2014 Microsoft