Condividi tramite


Gestione della memoria

Importante

Cache di Azure per Redis ha annunciato la sequenza temporale di ritiro per tutti gli SKU. È consigliabile spostare le istanze di Cache Redis di Azure esistenti in Azure Managed Redis non appena è possibile.

Per altre informazioni sul ritiro:

Questo articolo descrive le procedure consigliate per la gestione della memoria in Cache Redis di Azure.

Scegliere i criteri di rimozione corretti

Scegliere un criterio di rimozione valido per la propria applicazione. Il criterio predefinito per Cache Redis di Azure è volatile-lru, il che significa che solo le chiavi con un valore TTL (Time To Live) impostato con un comando come EXPIRE sono idonee per la rimozione. Se nessuna chiave ha un valore TTL, il sistema non rimuove alcuna chiave. Se vuoi che il sistema consenta la rimozione di qualsiasi chiave in caso di pressione sulla memoria, prendi in considerazione la allkeys-lru politica.

Impostare una data di scadenza delle chiavi

Lo sfratto a causa di pressione della memoria può causare un maggiore carico del server. Imposta un valore di scadenza sulle chiavi per rimuoverle in modo proattivo anziché attendere la pressione sulla memoria. Per altre informazioni, vedere la documentazione per i comandi Redis EXPIRE e EXPIREAT .

Ridurre al minimo la frammentazione della memoria

Coppie chiave-valore elevate possono causare la frammentazione della memoria al momento della rimozione e comportare un utilizzo elevato della memoria e un maggiore carico sul server.

Monitorare l'uso della memoria

Monitorare l'utilizzo della memoria per assicurarsi che non si esaurisca la memoria. Creare avvisi per consentire di ridimensionare la cache prima che si verifichino problemi.

Configurare l'impostazione maxmemory-reserved

Configurare le impostazioni maxmemory-reserved per ottimizzare la velocità di risposta del sistema. Le impostazioni di prenotazione sufficienti sono particolarmente importanti per i carichi di lavoro con un numero elevato di operazioni di scrittura o se si archiviano valori di 100 KB o più nella cache.

  • L'impostazione maxmemory-reserved configura la quantità di memoria, in MB per istanza in un cluster, riservata per operazioni non di cache, ad esempio la replica durante il failover. L’impostazione di questo valore consente di avere un'esperienza più coerente del server Redis quando il carico varia.

  • L'impostazione maxfragmentationmemory-reserved configura la quantità di memoria, in MB per istanza in un cluster, riservata per contenere la frammentazione della memoria. Quando si imposta questo valore, l'esperienza del server Redis è più coerente quando la cache è piena o quasi piena e il rapporto di frammentazione è elevato.

Quando la memoria è riservata per queste operazioni, non è disponibile per l'archiviazione dei dati memorizzati nella cache. Per impostazione predefinita, quando si crea una cache, circa 10% della memoria disponibile è riservata per maxmemory-reservede altri 10% è riservato per maxfragmentationmemory-reserved. È possibile aumentare gli importi riservati se si dispone di carichi pesanti di scrittura.

Gli intervalli consentiti per maxmemory-reserved e per maxfragmentationmemory-reserved sono da 10%a 60% di maxmemory. Se si tenta di impostare questi valori inferiori al 10% o superiori al 60%, vengono rivalutati e impostati sul valore minimo del 10% e massimo del 60%.

Quando si aumentano o diminuiscono le dimensioni di una cache, le impostazioni maxmemory-reserved e maxfragmentationmemory-reserved vengono ridimensionate automaticamente in proporzione alle dimensioni della cache. Ad esempio, se maxmemory-reserved è impostato su 3 GB in una cache da 6 GB e si passa a una cache da 12 GB, l'impostazione viene aggiornata automaticamente a 6 GB durante il ridimensionamento. Se si riducono le dimensioni, si verifica l'inverso.

Valutare il modo in cui la modifica di un maxmemory-reserved valore di prenotazione di memoria o maxfragmentationmemory-reserved potrebbe influire su una cache con una grande quantità di dati in essa già in esecuzione. Ad esempio, se si dispone di una cache da 53 GB con i valori riservati impostati sui 10% minimo, la memoria massima disponibile per il sistema è di circa 42 GB. Se i valori correnti used_memory o used_memory_rss sono superiori a 42 GB, il sistema deve rimuovere i dati fino a quando sia used_memory che used_memory_rss sono inferiori a 42 GB.

La rimozione può aumentare il carico del server e la frammentazione della memoria. Per altre informazioni sulle metriche della cache, ad esempio used_memory e used_memory_rss, vedere Creare metriche personalizzate.

Note

Quando si ridimensiona una cache verso l'alto o verso il basso in modo programmatico utilizzando Azure PowerShell, Azure CLI o REST API, le impostazioni maxmemory-reserved o maxfragmentationmemory-reserved incluse vengono ignorate come parte della richiesta di aggiornamento. Viene rispettata solo la modifica del ridimensionamento. È possibile aggiornare le impostazioni di memoria al termine dell'operazione di ridimensionamento.