Speicherverwaltung

Entfernungsrichtlinie

Wählen Sie eine Entfernungsrichtlinie, die für Ihre Anwendung geeignet ist. Die Standardrichtlinie für Azure Cache for Redis ist volatile-lru. Das bedeutet, dass nur Schlüssel, für die ein TTL-Wert mit einem Befehl wie EXPIRE festgelegt ist, entfernt werden können. Wenn keine Schlüssel über einen TTL-Wert verfügen, werden im System keine Schlüssel entfernt. Wenn das System bei hoher Speicherauslastung das Entfernen beliebiger Schlüssel erlauben soll, sollten Sie die allkeys-lru-Richtlinie in Betracht ziehen.

Ablauf von Schlüsseln

Legen Sie einen Ablaufwert für Ihre Schlüssel fest. Bei einem Ablauf werden Schlüssel proaktiv entfernt, anstatt zu warten, bis die Speicherauslastung hoch ist. Wird das Entfernen aufgrund hoher Speicherauslastung ausgelöst, kann dies mehr Last auf dem Server verursachen. Weitere Informationen finden Sie in der Dokumentation für die Befehle EXPIRE und EXPIREAT.

Minimieren der Speicherfragmentierung

Große Werte können dazu führen, dass der Speicher beim Auslagern fragmentiert wird, was zu einer hohen Speichernutzung und Serverauslastung führen kann.

Überwachen der Arbeitsspeicherauslastung

Fügen Sie eine Überwachung der Speichernutzung hinzu, um sicherzustellen, dass Ihnen nicht der Speicher ausgeht und Sie die Möglichkeit haben, Ihren Cache zu skalieren, bevor Probleme auftreten.

Konfigurieren der Einstellung „maxmemory-reserved“

Konfigurieren Sie Ihre maxmemory-reserved-Einstellung, um die Reaktionsfähigkeit des Systems zu verbessern:

  • Eine ausreichende Reservierungseinstellung ist besonders wichtig für schreibintensive Workloads oder wenn Sie Werte von 100 KB oder mehr in Ihrem Cache speichern. Wenn Sie einen Cache erstellen, sind standardmäßig ungefähr 10 % des verfügbaren Arbeitsspeichers für maxmemory-reserved reserviert. Weitere 10 % sind für maxfragmentationmemory-reserved reserviert. Sie können den reservierten Betrag erhöhen, wenn Ihre Last hohe Schreibraten erfordert.

  • Mit der Einstellung maxmemory-reserved wird die Arbeitsspeichermenge in MB pro Instanz in einem Cluster konfiguriert, die für andere Prozesse als Cacheprozesse reserviert ist, z. B. die Replikation während eines Failovers. Mit dem Festlegen dieses Werts können Sie dafür sorgen, dass Sie bei wechselnden Auslastungen eine konsistentere Redis-Servererfahrung erzielen. Für Workloads, die große Datenmengen schreiben, sollte ein höherer Wert festgelegt werden. Wenn Arbeitsspeicher für Vorgänge dieser Art reserviert ist, ist er nicht für die Zwischenspeicherung von Daten verfügbar. Der zulässige Bereich für maxmemory-reserved beträgt 10 bis 60 Prozent von maxmemory. Wenn Sie versuchen, diese Werte auf einen Wert unter 10 Prozent oder über 60 Prozent festzulegen, werden sie neu ausgewertet und auf den Minimalwert von 10 Prozent und den Maximalwert von 60 Prozent festgelegt. Die Werte werden in Megabytes gerendert.

  • Mit der Einstellung maxfragmentationmemory-reserved wird der Arbeitsspeicher in MB pro Instanz in einem Cluster konfiguriert, der für die Speicherfragmentierung reserviert ist. 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 Arbeitsspeicher für Vorgänge dieser Art reserviert ist, ist er nicht für die Zwischenspeicherung von Daten verfügbar. Der zulässige Bereich für maxfragmentationmemory-reserved beträgt 10 bis 60 Prozent von maxmemory. Wenn Sie versuchen, diese Werte auf einen Wert unter 10 Prozent oder über 60 Prozent festzulegen, werden sie neu ausgewertet und auf den Minimalwert von 10 Prozent und den Maximalwert von 60 Prozent festgelegt. Die Werte werden in Megabytes gerendert.

  • Bei der Auswahl eines neuen Speicherreservierungswerts (maxmemory-reserved oder maxfragmentationmemory-reserved) sollte berücksichtigt werden, wie sich diese Änderung auf einen Cache auswirkt, der bereits mit einer großen Datenmenge ausgeführt wird. Beispiel: Wenn Ihr Cache über eine Kapazität von 53 GB verfügt und 49 GB an Daten enthält, ändern Sie den Reservierungswert in 8 GB, um den maximal verfügbaren Arbeitsspeicher für das System auf 45 GB zu verringern. Wenn entweder der aktuelle Wert für used_memory oder der Wert für used_memory_rss höher als der neue Grenzwert von 45 GB ist, muss das System Daten entfernen, bis sowohl used_memory als auch used_memory_rss unter 45 GB liegen. Durch die Entfernung können sich Serverauslastung und Arbeitsspeicherfragmentierung erhöhen. Weitere Informationen zu Cachemetriken wie used_memory und used_memory_rss finden Sie unter Erstellen Ihrer eigenen Metriken.

Hinweis

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 beispielsweise maxmemory-reserved für einen 6-GB-Cache auf 3 GB festgelegt ist und Sie eine Skalierung auf einen 12-GB-Cache vornehmen, werden die Einstellungen während der Skalierung automatisch auf 6 GB aktualisiert. Wenn Sie herunterskalieren, ist es umgekehrt. Wenn Sie einen Cache mithilfe von PowerShell, der CLI oder der REST-API programmgesteuert hoch- oder herunterskalieren, werden alle Werte für maxmemory-reserved oder maxfragmentationmemory-reserved als Teil der Updateanforderung ignoriert. Nur Ihre Skalierungsänderung wird berücksichtigt. Sie können diese Speichereinstellungen aktualisieren, nachdem der Skalierungsvorgang abgeschlossen wurde.

Nächste Schritte