Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

Ablauf und Entfernung in Azure In-Role Cache

Letzte Aktualisierung: August 2015

ImportantWichtig
Microsoft empfiehlt, für alle neuen Entwicklungen Azure Redis Cache zu verwenden. Eine aktuelle Dokumentation und Anleitung bei der Auswahl eines Azure Cache-Angebots finden Sie unter Welches Azure-Cache-Angebot ist das Richtige für mich?

Microsoft Azure Cache speichert zwischengespeicherte Objekte nicht dauerhaft im Arbeitsspeicher. Zwischengespeicherte Objekte können nicht nur ausdrücklich mithilfe der Methode Remove aus dem Cache entfernt werden, sondern auch ablaufen oder vom Cachecluster entfernt werden.

Durch den Cacheablauf kann der Cachecluster zwischengespeicherte Objekte automatisch aus dem Cache entfernen. Wenn die Methoden Put oder Add verwendet werden, kann ein optionaler Objekttimeoutwert für das betreffende zwischengespeicherte Objekt festgelegt werden, der bestimmt, wie lange das Objekt im Cache gespeichert bleibt. Wenn der Timeoutwert des Objekts nicht zu dem Zeitpunkt angegeben wird, an dem das Objekt zwischengespeichert wird, verwendet das zwischengespeicherte Objekt die Standardablaufzeit.

Wenn rollenbasiertes Zwischenspeichern verwendet wird, sind für den Ablauf drei Optionen verfügbar:

 

Ablauftyp Beschreibung

Keine

Der Ablauf ist deaktiviert. Elemente verbleiben im Cache, bis sie entfernt werden oder der Cachecluster neu gestartet wird.

Absolut

Elemente laufen in einem festgelegten Zeitraum nach ihrem Erstellungszeitpunkt ab.

Gleitend

Elemente laufen in einem festgelegten Zeitraum nach dem letzten Zugriff darauf ab. Bei jedem Zugriff auf das Objekt wird das gleitende Zeitfenster zurückgesetzt. Auf diese Weise verbleiben häufig verwendete Elemente länger im Cache.

noteHinweis
Beachten Sie unbedingt das Verhalten des Ablaufs vom Typ Gleitend, wenn eine Verwendung in Kombination mit einem lokalen Cache erfolgt. Wenn ein Element aus dem lokalen Cache gelesen wird, erfolgt kein Zugriff auf das Objekt auf dem Cachecluster. Daher ist es möglich, dass das Element auf dem Server abläuft, obwohl es lokal gelesen wurde.

In Shared Caching ist der Ablauf immer Absolut, und es gibt keine Möglichkeit, eine Standardablaufzeit festzulegen. Elemente in Shared Caching laufen nach 48 Stunden ab. Sie können jedoch die Methoden Put und Add zum Festlegen einer expliziten Ablaufzeit im Code verwenden. Beachten Sie, dass die ASP.NET-Anbieter diese Überladungen automatisch zum Bereitstellen expliziter Timeouts für den Sitzungsstatus und den Ausgabecache verwenden. In beiden Fällen werden die selten verwendeten Elemente aus dem Cache entfernt, wenn die Cachegröße die Grenzwerte Ihres Shared Caching-Angebots überschreitet.

Wenn zwischengespeicherte Objekte aus Parallelitätsgründen gesperrt sind, werden sie selbst dann nicht aus dem Cache entfernt, wenn sie abgelaufen sind. Sobald ihre Sperre aufgehoben wird, werden sie sofort aus dem Cache entfernt, wenn ihre Ablaufzeit überschritten ist.

Zum Verhindern der sofortigen Entfernung beim Aufheben der Sperre angelaufener Objekte unterstützt die Methode Unlock auch das Erweitern des Ablaufs des zwischengespeicherten Objekts.

Für den lokalen Cache sind zwei sich ergänzende Invalidierungstypen verfügbar: timeoutbasierte Invalidierung und benachrichtigungsbasierte Invalidierung.

TipTipp
Nachdem Objekte im lokalen Cache gespeichert wurden, kann Ihre Anwendung diese Objekte weiterhin verwenden, bis sie invalidiert werden. Dies geschieht unabhängig davon, ob diese Objekte durch einen anderen Client für den Cachecluster aktualisiert wurden. Aus diesem Grund wird der lokale Cache am besten für Daten aktiviert, die sich selten ändern.

Nachdem Objekte in den lokalen Cache heruntergeladen wurden, verbleiben sie dort, bis sie den in den Konfigurationseinstellungen des Cacheclients angegebenen Timeoutwert erreichen. Nachdem dieser Timeoutwert erreicht wurde, werden die Objekte invalidiert, damit das Objekt bei seiner nächsten Anforderung aus dem Cachecluster aktualisiert werden kann.

Wenn Ihr Cacheclient den lokalen Cache aktiviert hat, können Sie auch Cachebenachrichtigungen zum automatischen Invalidieren Ihrer lokalen zwischengespeicherten Objekte verwenden. Indem die Lebensdauer dieser Objekte "bei Bedarf" verkürzt wird, können Sie die Wahrscheinlichkeit verringern, dass Ihre Anwendung veraltete Daten verwendet.

noteHinweis
Benachrichtigungen werden in Shared Caching nicht unterstützt.

Wenn Sie Cachebenachrichtigungen verwenden, überprüft die Anwendung den Cachecluster in regelmäßigen Intervallen auf neue verfügbare Benachrichtigungen. Dieses Intervall, das als Abfrageintervall bezeichnet wird, beträgt standardmäßig 300 Sekunden. Das Abfrageintervall wird in den Anwendungskonfigurationseinstellungen in Sekundeneinheiten angegeben. Beachten Sie, dass auch bei benachrichtigungsbasierter Invalidierung Timeouts für Elemente im lokalen Cache weiterhin gelten. Auf diese Weise ergänzt die benachrichtigungsbasierte Invalidierung die timeoutbasierte Invalidierung.

Weitere Informationen und Beispiele finden Sie unter Lokaler Cache in Azure In-Role Cache.

Damit die Speicherkapazität für den Cache auf jedem Cachehost erhalten bleibt, wird LRU-Entfernung (Least Recently Used, selten verwendet) unterstützt. Schwellenwerte werden zur Sicherstellung verwendet, dass der Arbeitsspeicher gleichmäßig auf alle Cachehosts im Cluster verteilt wird. Dieser Schwellenwert wird durch zwei Faktoren festgelegt: durch die verfügbare Menge physischen Arbeitsspeichers auf jedem Computer und durch den Prozentsatz des Cachearbeitsspeichers, der auf jedem Computer reserviert wurde.

Wenn die Arbeitsspeichernutzung die Arbeitsspeicherschwelle überschreitet, werden Objekte aus dem Arbeitsspeicher entfernt. Dieser Vorgang erfolgt unabhängig davon, ob die Objekte abgelaufen sind, und er wird ausgeführt, bis die Arbeitsspeichernutzung wieder auf den niedrigen Grenzwert zurückgeht. Nachfolgend zwischengespeicherte Objekte werden ggf. an andere Computer im Cachecluster weitergeleitet, um eine optimale Verteilung des Arbeitsspeichers zu gewährleisten.

WarningWarnung
Wenn Sie die Entfernung deaktivieren, besteht das Risiko der Drosselung. In diesem Fall hat der Arbeitsspeicher den Schwellenwert überschritten, es gibt jedoch keine Möglichkeit, die Speicherknappheit zu beheben. Clients, die versuchen, dem Cache in diesem Status Elemente hinzuzufügen, erhalten eine Ausnahme, bis das Problem behoben wurde. Beachten Sie, dass Shared Caching die Deaktivierung von Entfernung für einen Cache nicht unterstützt.

Das Verhalten bei Ablauf und Entfernung wird auf der benannten Cacheebene in den Clusterkonfigurationseinstellungen konfiguriert.

Sie können die Standardeinstellungen im Cache mit den folgenden Methoden außer Kraft setzen:

  • Die Methoden Add und Put stellen Überladungen zur Verfügung, die das Angeben eines Ablauftimeoutwerts nur für das Objekt ermöglichen, das Sie dem Cache hinzufügen.

  • Die Methoden PutAndUnlock und Unlock stellen Überladungen zur Verfügung, die das Verlängern des Ablaufs eines Objekts nach dem Aufheben seiner Sperre ermöglichen.

  • Mit der Methode ResetObjectTimeout können Sie die Lebensdauer eines Objekts ausdrücklich erhöhen und die Ablaufeinstellungen für den Cache außer Kraft setzen.

Unabhängig von den Ablauf- oder Entfernungseinstellungen werden alle Objekte aus dem Cache entfernt, wenn ein Cachecluster neu gestartet wird. Ihr Anwendungscode muss den Cache aus der Datenquelle erneut laden, wenn die Daten im Cache nicht gefunden werden. Dies wird häufig als ein cachefremdes Programmierschema bezeichnet.

Siehe auch

Anzeigen: