Freigeben über


Speicherverwaltung

In diesem Artikel werden bewährte Methoden für die Speicherverwaltung im Azure Cache für Redis beschrieben.

Wählen Sie die richtige Räumungsrichtlinie aus.

Wählen Sie eine Eviction-Richtlinie aus, die für Ihre Anwendung funktioniert. Die Standardrichtlinie für Azure Cache für Redis lautet volatile-lru, was bedeutet, dass nur Schlüssel, die eine Lebensdauer (TTL) mit einem Befehl wie EXPIRE festgelegt haben, zur Entfernung in Frage kommen. Wenn keine Schlüssel einen TTL-Wert haben, entfernt das System keine Schlüssel. Wenn Sie möchten, dass das System einen Schlüssel entfernen kann, wenn der Arbeitsspeicher unter Druck steht, sollten Sie die allkeys-lru Richtlinie in Betracht ziehen.

Festlegen eines Ablaufdatums für Schlüssel

Entfernung aufgrund der Speicherauslastung kann mehr Last auf Ihrem Server verursachen. Legen Sie einen Ablaufwert für Ihre Schlüssel fest, um Schlüssel proaktiv zu entfernen, anstatt darauf zu warten, bis Arbeitsspeicherdruck vorhanden ist. Weitere Informationen finden Sie in der Dokumentation für die Befehle " Redis EXPIRE" und "EXPIREAT" .

Minimieren der Speicherfragmentierung

Große Schlüsselwerte können den Speicher bei der Auslagerung fragmentiert hinterlassen und zu einer hohen Speicherauslastung sowie Serverlast führen.

Überwachen der Arbeitsspeicherauslastung

Überwachen Sie die Speicherauslastung , um sicherzustellen, dass nicht genügend Arbeitsspeicher vorhanden ist. Erstellen Sie Warnungen , um Ihnen die Möglichkeit zu geben, Den Cache zu skalieren, bevor Probleme auftreten.

Konfigurieren der Einstellung „maxmemory-reserved“

Konfigurieren Sie die Einstellungen für maxmemory-reserved, um die Reaktionsfähigkeit des Systems zu maximieren. Ausreichende Reservierungseinstellungen sind besonders wichtig für Schreiblasten, oder wenn Sie Werte von 100 KB oder mehr im Cache speichern.

  • Die maxmemory-reserved Einstellung konfiguriert die Arbeitsspeichermenge in MB pro Instanz in einem Cluster, die für Nichtcachevorgänge wie die Replikation während des Failovers reserviert ist. Mit dem Festlegen dieses Werts können Sie dafür sorgen, dass Sie bei wechselnden Auslastungen eine konsistentere Redis-Servererfahrung erzielen.

  • Die maxfragmentationmemory-reserved Einstellung konfiguriert die Speichermenge in MB pro Instanz in einem Cluster, die reserviert ist, um die Speicherfragmentierung zu berücksichtigen. Wenn Sie diesen Wert einstellen, ist die Erfahrung des Redis-Servers konsistenter, wenn der Cache voll oder fast voll ist und die Fragmentierungsrate hoch ist.

Wenn der Speicher für diese Vorgänge reserviert ist, ist er nicht zum Speichern zwischengespeicherter Daten verfügbar. Standardmäßig sind bei der Erstellung eines Caches ungefähr 10% des verfügbaren Speichers für maxmemory-reserved reserviert, und weitere 10% sind für maxfragmentationmemory-reserved reserviert. Sie können die reservierten Beträge erhöhen, wenn schreibintensive Lasten vorliegen.

Der zulässige Bereich für maxmemory-reserved und für maxfragmentationmemory-reserved ist 10%-60% von maxmemory. Wenn Sie versuchen, diese Werte auf einen Wert unter 10 % oder über 60 % festzulegen, werden sie neu ausgewertet und auf den Mindestwert von 10 % und den Höchstwert von 60 % festgelegt.

Wenn Sie einen Cache hoch- oder herunterskalieren, werden die Einstellungen sowohl für maxmemory-reserved als auch für maxfragmentationmemory-reserved automatisch proportional zur Cachegröße skaliert. Wenn sie beispielsweise maxmemory-reserved auf 3 GB für einen 6-GB-Cache festgelegt ist und Sie auf einen 12-GB-Cache skalieren, wird die Einstellung während der Skalierung automatisch auf 6 GB aktualisiert. Wenn Sie eine Skalierung nach unten ausführen, geschieht dies umgekehrt.

Erwägen Sie, wie sich das Ändern eines maxmemory-reservedmaxfragmentationmemory-reserved Speicherreservierungswerts auf einen Cache mit einer großen Datenmenge auswirken kann, die bereits ausgeführt wird. Wenn Sie beispielsweise über einen Cache mit 53 GB verfügen und die reservierten Werte auf die Mindestwerte von 10% festgelegt sind, beträgt der maximal verfügbare Arbeitsspeicher für das System etwa 42 GB. Wenn entweder Ihre aktuellen used_memory oder used_memory_rss Werte höher als 42 GB sind, muss das System Daten entfernen, bis beide used_memory und used_memory_rss unter 42 GB liegen.

Durch die Entfernung können sich Serverauslastung und Arbeitsspeicherfragmentierung erhöhen. Weitere Informationen zu Cachemetriken, z. B. used_memory und used_memory_rss, finden Sie unter Eigene Metriken erstellen.

Hinweis

Wenn Sie einen Cache programmgesteuert mithilfe von Azure PowerShell, Azure CLI oder REST-API skalieren, werden alle enthaltenen maxmemory-reserved oder maxfragmentationmemory-reserved Einstellungen als Teil der Updateanforderung ignoriert. Nur Ihre Skalierungsänderung wird berücksichtigt. Sie können die Speichereinstellungen aktualisieren, nachdem der Skalierungsvorgang abgeschlossen ist.