

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Garantire la disponibilità di memoria sufficiente per creare un'istantanea Valkey o Redis OSS
<a name="BestPractices.BGSAVE"></a>

**Istantanee e sincronizzazioni in Valkey 7.2 e versioni successive e Redis OSS versione 2.8.22 e successive**  
Valkey offre il supporto predefinito per istantanee e sincronizzazioni. Redis OSS 2.8.22 introduce un processo di salvataggio senza forkless che consente di allocare una maggiore quantità di memoria all'uso dell'applicazione senza aumentare l'utilizzo dello swap durante le sincronizzazioni e i salvataggi. Per ulteriori informazioni, consulta [Modalità di implementazione di sincronizzazione e backup](Replication.Redis.Versions.md).

**Istantanee e sincronizzazioni Redis OSS precedenti alla versione 2.8.22**

Quando si lavora con ElastiCache Redis OSS, Redis OSS richiama un comando di scrittura in background in diversi casi:
+ Durante la creazione di uno snapshot per un backup.
+ Durante la sincronizzazione delle repliche con il nodo principale in un gruppo di repliche
+ Quando si abilita la funzionalità di sola aggiunta di file (AOF) per Redis OSS.
+ Quando si promuove una replica a principale (il che causa una sincronizzazione). primary/replica

Ogni volta che Redis OSS esegue un processo di scrittura in background, è necessario disporre di memoria disponibile sufficiente per far fronte al sovraccarico del processo. La mancanza di memoria sufficiente provoca un errore del processo. Per questo motivo, è importante scegliere un tipo di istanza di nodo con memoria sufficiente durante la creazione del cluster Redis OSS.

## Processo di scrittura in background e utilizzo della memoria con Valkey e Redis OSS
<a name="BestPractices.BGSAVE.Process"></a>

Ogni volta che viene chiamato un processo di scrittura in background, Valkey e Redis OSS ne eseguono un fork (ricordate che questi motori sono a thread singolo). Un fork mantiene i dati su disco in un file snapshot Redis OSS .rdb. Tutti gli altri servizi fork eseguono operazioni di lettura e scrittura. Per garantire che lo snapshot sia di tipo point-in-time, tutte le aggiunte e gli aggiornamenti dei dati vengono scritti in un'area di memoria disponibile separata dall'area dati.

Finché è disponibile memoria sufficiente per registrare tutte le operazioni di scrittura mentre i dati vengono resi persistenti sul disco, non si dovrebbero avere problemi di memoria insufficiente. Potresti riscontrare problemi di memoria insufficiente qualora si verifichi uno dei seguenti casi:
+ L'applicazione esegue molte operazioni di scrittura e richiede pertanto un'elevata quantità di memoria disponibile per accettare dati nuovi o aggiornati.
+ Hai a disposizione una quantità di memoria veramente limitata in cui scrivere dati nuovi o aggiornati.
+ Il set di dati di cui disponi è di grandi dimensioni. Poiché per essere reso persistente sul disco è necessario molto tempo, sono necessarie numerose operazioni di scrittura.

Il diagramma seguente illustra l'utilizzo della memoria durante l'esecuzione di un processo di scrittura in background.

![Immagine. Diagramma dell'utilizzo della memoria durante una scrittura in background.](http://docs.aws.amazon.com/it_it/AmazonElastiCache/latest/dg/images/ElastiCache-bgsaveMemoryUseage.png)


Per informazioni sull'impatto di un backup sulle prestazioni, consulta [Impatto sulle prestazioni dei backup di cluster basati su nodi](backups.md#backups-performance).

Per ulteriori informazioni su come Valkey e Redis OSS eseguono le istantanee, consulta. [http://valkey.io](http://valkey.io)

Per ulteriori informazioni sulle regioni e sulle zone di disponibilità, consulta [Scelta delle regioni e delle zone di disponibilità per ElastiCache](RegionsAndAZs.md). 

## Come evitare di esaurire la memoria durante l'esecuzione di una scrittura in background
<a name="BestPractices.BGSAVE.memoryFix"></a>

Ogni volta che `BGREWRITEAOF` viene chiamato un processo di scrittura in background come `BGSAVE` o, per evitare che il processo abbia esito negativo, è necessario disporre di più memoria di quella che verrà consumata dalle operazioni di scrittura durante il processo. Lo scenario peggiore è che durante l'operazione di scrittura in background ogni record venga aggiornato e alcuni nuovi record vengano aggiunti alla cache. Per questo motivo, si consiglia di impostare su 50 (50 percento) per le versioni Redis OSS precedenti `reserved-memory-percent` alla 2.8.22 o su 25 (25 percento) per Valkey e tutte le versioni Redis OSS 2.8.22 e successive. 

Il valore `maxmemory` indica la memoria che hai a disposizione per i dati e il sovraccarico operativo. Poiché non puoi modificare il parametro `reserved-memory` nel gruppo di parametri di default, devi creare un gruppo di parametri personalizzato per il cluster. Il valore predefinito per `reserved-memory` è 0, che consente a Redis OSS di consumare tutta la *memoria massima con i dati, lasciando potenzialmente troppo poca memoria* per altri usi, ad esempio un processo di scrittura in background. Per i valori di `maxmemory` per tipo di istanza del nodo, consulta [Parametri specifici del tipo di nodo Redis OSS](ParameterGroups.Engine.md#ParameterGroups.Redis.NodeSpecific).

È inoltre possibile utilizzare il `reserved-memory` parametro per ridurre la quantità di memoria utilizzata sulla confezione.

Per ulteriori informazioni su Valkey e sui Redis-specific parametri in ElastiCache, vedere[Parametri Valkey e Redis OSS](ParameterGroups.Engine.md#ParameterGroups.Redis).

Per informazioni sulla creazione e sulla modifica di gruppi di parametri, consulta [Creazione di un gruppo di ElastiCache parametri](ParameterGroups.Creating.md) e [Modifica di un gruppo di ElastiCache parametri](ParameterGroups.Modifying.md).