Share via


Ablauf und Entfernung in Azure In-Role Cache

Wichtig

Microsoft empfiehlt, alle neuen Entwicklungen azure Redis Cache zu verwenden. Für aktuelle Dokumentation und Anleitungen zur Auswahl eines Azure Cache-Angebots finden Sie unter Welches Azure Cache-Angebot ist für mich richtig?

Microsoft Azure Cache behält keine zwischengespeicherten Objekte im Arbeitsspeicher dauerhaft. Zusätzlich zum expliziten Entfernen aus dem Cache mithilfe der Remove-Methode können zwischengespeicherte Objekte auch ablaufen oder vom Cachecluster entfernt werden.

Ablauf

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 Sie rollenbasierte Zwischenspeicherung verwenden, verfügen Sie über drei Optionen für den Ablauf:

Ablauftyp BESCHREIBUNG

None

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

Absolute

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.

Hinweis

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 Ablauf immer absolut und es gibt keine Möglichkeit, eine Standardablaufzeit festzulegen. Elemente in Shared Caching ablaufen nach 48 Stunden. Sie können jedoch die Methoden " Put " und " Hinzufügen " verwenden, um explizite Ablaufzeiten im Code festzulegen. 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 überschreitet Ihre Cachegröße die Grenzwerte Ihres Shared Caching-Angebots, werden die zuletzt verwendeten Elemente im Cache entfernt.

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.

Lokale Cacheinvalidierung

Es gibt zwei ergänzende Arten von Ungültigkeit für den lokalen Cache: Timeout-basierte Ungültigkeit und Benachrichtigungsbasierte Ungültigkeit.

Tipp

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.

Timeoutbasierte Invalidierung

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.

Benachrichtigungsbasierte Invalidierung

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.

Hinweis

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.

Entfernung

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 bestimmt: die Menge der verfügbaren physischen Arbeitsspeicher auf jedem Computer und den Prozentsatz des auf jedem Computer reservierten Cachespeichers.

Wenn die Arbeitsspeicherbelegung den Schwellenwert für den Arbeitsspeicher überschreitet, werden Objekte aus dem Arbeitsspeicher entfernt, bis die Speicherauslastung sich normalisiert. Dies geschieht unabhängig davon, ob die Objekte tatsächlich abgelaufen sind. Nachfolgend zwischengespeicherte Objekte werden ggf. an andere Computer im Cachecluster weitergeleitet, um eine optimale Verteilung des Arbeitsspeichers zu gewährleisten.

Warnung

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 Auslassungen in einem Cache nicht unterstützt.

Angeben von Ablauf- und Entfernungseinstellungen

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 "Hinzufügen " und " Put " bieten Überladungen, mit denen Sie nur einen Ablaufzeitoutwert für das Objekt angeben können, das Sie dem Cache hinzufügen.

  • Die Methoden"PutAndUnlock" und "Entsperren" bieten Überladungen, mit denen Sie den Ablauf eines Objekts erweitern können, nachdem sie entsperrt wurden.

  • Mit der ResetObjectTimeout-Methode können Sie die Lebensdauer eines Objekts explizit erweitern und die Ablaufeinstellungen des Caches 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.

Weitere Informationen

Konzepte

Rollencachefunktionen in Azure Cache