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ürmaxfragmentationmemory-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ürmaxmemory-reserved
beträgt 10 bis 60 Prozent vonmaxmemory
. 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ürmaxfragmentationmemory-reserved
beträgt 10 bis 60 Prozent vonmaxmemory
. 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
odermaxfragmentationmemory-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ürused_memory
oder der Wert fürused_memory_rss
höher als der neue Grenzwert von 45 GB ist, muss das System Daten entfernen, bis sowohlused_memory
als auchused_memory_rss
unter 45 GB liegen. Durch die Entfernung können sich Serverauslastung und Arbeitsspeicherfragmentierung erhöhen. Weitere Informationen zu Cachemetriken wieused_memory
undused_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.