Gestione della memoria
Criteri di rimozione
Scegliere un criterio di rimozione valido per la propria applicazione. Il criterio predefinito per la cache di Azure per Redis è volatile-lru
, secondo il quale solo le chiavi per cui è stato impostato un valore TTL con un comando come EXPIRE sono idonee per la rimozione. Se non ci sono chiavi con un valore TTL, il sistema non rimuoverà alcuna chiave. Se si vuole che il sistema consenta la rimozione di qualsiasi chiave in caso di utilizzo elevato della memoria, è opportuno considerare il criterio allkeys-lru
.
Scadenza delle chiavi
Impostare un valore di scadenza per le chiavi. Impostare una scadenza consente di rimuovere le chiavi in modo proattivo invece di attendere fino a quando non si verifica un utilizzo elevato della memoria. Quando l'eliminazione viene eseguita a causa di un utilizzo elevato della memoria, può aumentare il carico sul server. Per altre informazioni, vedere la documentazione relativa ai comandi EXPIRE ed EXPIREAT.
Ridurre al minimo la frammentazione della memoria
Valori elevati 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
Aggiungere il monitoraggio sull'utilizzo della memoria per assicurarsi che la memoria non si esaurisca e che sia possibile ridimensionare la cache prima di riscontrare problemi.
Configurare l'impostazione maxmemory-reserved
Configurare l'impostazione maxmemory-reserved per migliorare la velocità di risposta del sistema:
Un'impostazione sufficiente per la prenotazione è particolarmente importante per i carichi di lavoro con intensa attività di scrittura o se si intende memorizzare nella cache valori pari o superiori a 100 KB. Per impostazione predefinita, quando si crea una cache, circa il 10% della memoria disponibile viene riservato a
maxmemory-reserved
. Un altro 10% viene riservato amaxfragmentationmemory-reserved
. È possibile aumentare la quantità riservata se sono presenti carichi con intensa attività di scrittura.L'impostazione
maxmemory-reserved
consente di configurare la quantità di memoria in MB per istanza in un cluster che viene riservata alle operazioni non correlate alla 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. È necessario impostare un valore più elevato per carichi di lavoro che scrivono quantità elevate di dati. Quando la memoria è riservata per tali operazioni non è disponibile per l'archiviazione dei dati della cache. L'intervallo consentito permaxmemory-reserved
è compreso tra il 10% e il 60% del valore dimaxmemory
. Se si prova a impostare questi valori su meno del 10% o più del 60%, i valori vengono rivalutati e impostati sul valore minimo pari al 10% e massimo pari al 60%. I valori sono espressi in megabyte.L'impostazione
maxfragmentationmemory-reserved
consente di configurare la quantità di memoria in MB per istanza in un cluster che viene riservata alla 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 tali operazioni non è disponibile per l'archiviazione dei dati della cache. L'intervallo consentito permaxfragmentationmemory-reserved
è compreso tra il 10% e il 60% del valore dimaxmemory
. Se si prova a impostare questi valori su meno del 10% o più del 60%, i valori vengono rivalutati e impostati sul valore minimo pari al 10% e massimo pari al 60%. I valori sono espressi in megabyte.Un aspetto da considerare nella scelta di un nuovo valore per la prenotazione della memoria (
maxmemory-reserved
omaxfragmentationmemory-reserved
) è l'impatto di questa modifica su una cache già in esecuzione e che contiene grandi quantità di dati. Se, ad esempio, si ha una cache di 53 GB con 49 GB di dati e si modifica il valore della prenotazione a 8 GB, la quantità massima di memoria disponibile per il sistema si ridurrà a 45 GB. Se il valore corrente diused_memory
o il valore personalizzato diused_memory_rss
superano il nuovo limite di 45 GB, il sistema deve rimuovere i dati in modo che il valore diused_memory
e diused_memory_rss
sia inferiore a 45 GB. La rimozione può aumentare il carico del server e la frammentazione della memoria. Per altre informazioni sulle metriche della cache, ad esempioused_memory
eused_memory_rss
, vedere Creare metriche personalizzate.
Nota
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
è impostata su 3 GB in una cache da 6 GB e si passa alla cache da 12 GB, le impostazioni vengono aggiornate automaticamente a 6 GB durante il ridimensionamento. Quando si riducono le dimensioni, si verifica l'inverso.
Quando si aumentano o diminuiscono le dimensioni di una cache a livello di codice usando PowerShell, l'interfaccia della riga di comando o l'API REST, qualsiasi impostazione maxmemory-reserved
o maxfragmentationmemory-reserved
viene ignorata nella richiesta di aggiornamento. Viene rispettata solo la modifica del ridimensionamento. È possibile aggiornare queste impostazioni di memoria al termine dell'operazione di ridimensionamento.