

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à.

# Gestione della memoria riservata per Valkey e Redis OSS
<a name="redis-memory-management"></a>

La memoria prenotata è la memoria destinata all'utilizzo diverso dai dati. Quando si esegue un backup o un failover, Valkey e Redis OSS utilizzano la memoria disponibile per registrare le operazioni di scrittura sul cluster mentre i dati del cluster vengono scritti nel file.rdb. Se non disponi di memoria sufficiente per tutte le scritture, il processo non va a buon fine. Di seguito, è possibile trovare informazioni sulle opzioni per la gestione della memoria riservata ElastiCache per Redis OSS e su come applicarle.

**Topics**
+ [Qual è la quantità di memoria prenotata necessaria?](#redis-memory-management-need)
+ [Parametri per gestire memoria prenotata](#redis-memory-management-parameters)
+ [Specifica del parametro di gestione della memoria prenotata](#redis-reserved-memory-management-change)

## Qual è la quantità di memoria prenotata necessaria?
<a name="redis-memory-management-need"></a>

Se utilizzi una versione di Redis OSS precedente alla 2.8.22, riserva più memoria per i backup e i failover rispetto a Redis OSS 2.8.22 o successiva. Questo requisito è dovuto ai diversi modi in cui Redis OSS implementa il processo di backup. ElastiCache La regola generale consiste nel riservare metà del `maxmemory` valore di un tipo di nodo all'overhead Redis OSS per le versioni precedenti alla 2.8.22 e un quarto per le versioni Redis OSS 2.8.22 e successive. 

A causa delle diverse modalità di ElastiCache implementazione del processo di backup e replica, la regola generale consiste nel riservare il 25% del valore di un tipo di nodo utilizzando il parametro. `maxmemory` `reserved-memory-percent` Questo è il valore predefinito e consigliato nella maggior parte dei casi.

Quando i tipi di istanze micro e piccole istanze burstable funzionano vicino `maxmemory` ai limiti, è possibile che si verifichi l'utilizzo dello swap. Per migliorare l'affidabilità operativa di questi tipi di istanze durante il backup, la replica e il traffico elevato, consigliamo di aumentare il valore del `reserved-memory-percent` parametro fino al 30% sui tipi di istanze di piccole dimensioni e fino al 50% sui tipi di micro istanze.

Per carichi di lavoro impegnativi in scrittura su ElastiCache cluster con suddivisione dei dati su più livelli, consigliamo di aumentare la memoria disponibile del nodo fino `reserved-memory-percent` al 50%.

Per ulteriori informazioni, consulta gli argomenti seguenti:
+ [Garantire la disponibilità di memoria sufficiente per creare un'istantanea Valkey o Redis OSS](BestPractices.BGSAVE.md)
+ [Modalità di implementazione di sincronizzazione e backup](Replication.Redis.Versions.md)
+ [Suddivisione dei dati su più livelli in ElastiCache](data-tiering.md)

## Parametri per gestire memoria prenotata
<a name="redis-memory-management-parameters"></a>

A partire dal 16 marzo 2017, Amazon ElastiCache fornisce due parametri che si escludono a vicenda per la gestione della memoria Valkey o Redis OSS e. `reserved-memory` `reserved-memory-percent` Nessuno di questi parametri fa parte della distribuzione Valkey o Redis OSS. 

A seconda di quando sei diventato ElastiCache cliente, l'uno o l'altro di questi parametri è il parametro di gestione della memoria predefinito. Questo parametro si applica quando si crea un nuovo cluster o gruppo di replica Valkey o Redis OSS e si utilizza un gruppo di parametri predefinito. 
+ Per i clienti che hanno iniziato prima del 16 marzo 2017: quando si crea un cluster o un gruppo di replica Redis OSS utilizzando il gruppo di parametri predefinito, il parametro di gestione della memoria è. `reserved-memory` In questo caso, zero (0) byte di memoria sono riservati. 
+ Per i clienti che hanno iniziato il 16 marzo 2017 o dopo tale data: quando si crea un cluster o un gruppo di replica Valkey o Redis OSS utilizzando il gruppo di parametri predefinito, il parametro di gestione della memoria è. `reserved-memory-percent` In questo caso, il 25% del valore `maxmemory` del nodo è riservato per scopi non dati.

Dopo aver letto i due parametri di gestione della memoria Valkey o Redis OSS, potresti preferire utilizzare quello che non è quello predefinito o con valori non predefiniti. In questo caso, puoi passare all'altro parametro di gestione della memoria prenotata. 

Per modificare il valore di tale parametro, è possibile creare un gruppo di parametri personalizzato e modificarlo in modo da utilizzare il parametro e il valore di gestione della memoria preferiti. È quindi possibile utilizzare il gruppo di parametri personalizzato ogni volta che si crea un nuovo cluster o gruppo di replica Valkey o Redis OSS. Per cluster o gruppi di replica esistenti, puoi modificarli per utilizzare il gruppo di parametri personalizzato.

 Per ulteriori informazioni, consulta gli argomenti seguenti: 
+ [Specifica del parametro di gestione della memoria prenotata](#redis-reserved-memory-management-change)
+ [Creazione di un gruppo di ElastiCache parametri](ParameterGroups.Creating.md)
+ [Modifica di un gruppo di ElastiCache parametri](ParameterGroups.Modifying.md)
+ [Modifica di un cluster ElastiCache](Clusters.Modify.md)
+ [Modifica di un gruppo di replica](Replication.Modify.md)

### Il parametro reserved-memory
<a name="redis-memory-management-parameters-reserved-memory"></a>

Prima del 16 marzo 2017, tutta la gestione della memoria riservata ElastiCache per Redis OSS veniva eseguita utilizzando il parametro. `reserved-memory` Il valore di default di `reserved-memory` è 0. Questa impostazione predefinita non riserva memoria per il sovraccarico di Valkey o Redis OSS e consente a Valkey o Redis OSS di consumare tutta la memoria di un nodo con i dati. 

La modifica di `reserved-memory` per disporre di memoria sufficiente per i backup e i failover, richiede la creazione di un gruppo di parametri personalizzato. In questo gruppo di parametri personalizzati, viene impostato `reserved-memory` un valore appropriato per la versione Valkey o Redis OSS in esecuzione sul cluster e il tipo di nodo del cluster. Per ulteriori informazioni, consulta [Qual è la quantità di memoria prenotata necessaria?](#redis-memory-management-need)

Il parametro `reserved-memory` è specifico ElastiCache e non fa parte della distribuzione generale Redis OSS.

La procedura seguente mostra come utilizzare per `reserved-memory` gestire la memoria sul cluster Valkey o Redis OSS.

**Per prenotare la memoria utilizzando la memoria prenotata**

1. Creare un gruppo di parametri personalizzato specificando la famiglia di gruppi di parametri corrispondente alla versione del motore in esecuzione, ad esempio specificando la proprietà`redis2.8`famiglia di gruppi di parametri. Per ulteriori informazioni, consulta [Creazione di un gruppo di ElastiCache parametri](ParameterGroups.Creating.md).

   ```
   aws elasticache create-cache-parameter-group \
      --cache-parameter-group-name {{redis6x-m3xl}} \
      --description "{{Redis OSS 2.8.x for m3.xlarge node type}}" \
      --cache-parameter-group-family {{redis6.x}}
   ```

1. Calcola quanti byte di memoria riservare per il sovraccarico di Valkey o Redis OSS. Il valore di `maxmemory` per il tipo di nodo è disponibile in [Parametri specifici del tipo di nodo Redis OSS](ParameterGroups.Engine.md#ParameterGroups.Redis.NodeSpecific).

1. Modificare il gruppo di parametri personalizzato in modo che il parametro `reserved-memory` corrisponda al numero di byte calcolati nella fase precedente. L' AWS CLI esempio seguente presuppone che tu stia eseguendo una versione di Redis OSS precedente alla 2.8.22 e che sia necessario riservare metà di quella del nodo. `maxmemory` Per ulteriori informazioni, consulta [Modifica di un gruppo di ElastiCache parametri](ParameterGroups.Modifying.md).

   ```
   aws elasticache modify-cache-parameter-group \
      --cache-parameter-group-name {{redis28-m3xl}} \
      --parameter-name-values "ParameterName=reserved-memory, ParameterValue={{7130316800}}"
   ```

   Occorre un gruppo di parametri personalizzato separato per ogni tipo di nodo in uso, perché ogni tipo di nodo dispone di un valore `maxmemory` diverso. Pertanto, ogni tipo di nodo richiede un valore diverso per `reserved-memory`.

1. Modifica il cluster o il gruppo di replica Redis OSS per utilizzare il gruppo di parametri personalizzato.

   L'esempio CLI seguente modifica il cluster ` my-redis-cluster` per utilizzare da subito il gruppo di parametri personalizzato `redis28-m3xl`. Per ulteriori informazioni, consulta [Modifica di un cluster ElastiCache](Clusters.Modify.md).

   ```
   aws elasticache modify-cache-cluster \
      --cache-cluster-id {{my-redis-cluster}} \
      --cache-parameter-group-name {{redis28-m3xl}} \
      --apply-immediately
   ```

   L'esempio CLI seguente modifica il gruppo di replica `my-redis-repl-grp` per utilizzare da subito il gruppo di parametri personalizzato `redis28-m3xl`. Per ulteriori informazioni, consulta [Modifica di un gruppo di replica](Replication.Modify.md).

   ```
   aws elasticache modify-replication-group \
      --replication-group-id {{my-redis-repl-grp}} \
      --cache-parameter-group-name {{redis28-m3xl}} \
      --apply-immediately
   ```

### Il parametro reserved-memory-percent
<a name="redis-memory-management-parameters-reserved-memory-percent"></a>

Il 16 marzo 2017, Amazon ElastiCache ha introdotto il parametro `reserved-memory-percent` e lo ha reso disponibile su tutte le versioni ElastiCache di Redis OSS. Lo scopo di `reserved-memory-percent` è semplificare la gestione della memoria prenotata tra tutti i cluster. A tal fine, l'utente può disporre di un singolo gruppo di parametri per ogni famiglia di gruppo di parametri (ad esempio `redis2.8`) per gestire la memoria prenotata dei cluster, a prescindere dal tipo di nodo. Il valore di default per `reserved-memory-percent` è 25 (25 percento).

Il parametro `reserved-memory-percent` è specifico ElastiCache e non fa parte della distribuzione generale Redis OSS.

Se il cluster utilizza un tipo di nodo della famiglia r6gd e l'utilizzo della memoria raggiunge il 75%, il tiering di dati verrà attivato automaticamente. Per ulteriori informazioni, consulta [Suddivisione dei dati su più livelli in ElastiCache](data-tiering.md).

**Per prenotare memoria utilizzando la percentuale di reserved-percent**  
Da utilizzare `reserved-memory-percent` per gestire la memoria sul cluster ElastiCache for Redis OSS, esegui una delle seguenti operazioni:
+ Se utilizzi Redis OSS 2.8.22 o versione successiva, assegna il gruppo di parametri predefinito al cluster. Il valore di default di 25 percento dovrebbe essere adeguato. In caso contrario, attenersi alla procedura descritta di seguito per modificare il valore.
+ Se utilizzi una versione di Redis OSS precedente alla 2.8.22, probabilmente dovrai riservare più memoria rispetto al 25 percento predefinito. `reserved-memory-percent` A tale scopo, procedi come indicato di seguito. 

**Per modificare il valore percentuale di reserved-percent**

1. Creare un gruppo di parametri personalizzato specificando la famiglia di gruppi di parametri corrispondente alla versione del motore in esecuzione, ad esempio specificando la famiglia di gruppi di parametri `redis2.8`. Un gruppo di parametri di default è necessario perché non è possibile modificare un gruppo di parametri di default. Per ulteriori informazioni, consulta [Creazione di un gruppo di ElastiCache parametri](ParameterGroups.Creating.md).

   ```
   aws elasticache create-cache-parameter-group \
      --cache-parameter-group-name {{redis28-50}} \
      --description "{{Redis OSS 2.8.x 50% reserved}}" \
      --cache-parameter-group-family {{redis2.8}}
   ```

   Poiché `reserved-memory-percent` consente di riservare memoria con una percentuale della `maxmemory` del nodo, non è necessario un gruppo di parametri personalizzato per ogni tipo di nodo.

1. Modificare il gruppo di parametri personalizzato in modo che `reserved-memory-percent` sia 50 (50 percento). Per ulteriori informazioni, consulta [Modifica di un gruppo di ElastiCache parametri](ParameterGroups.Modifying.md).

   ```
   aws elasticache modify-cache-parameter-group \
      --cache-parameter-group-name {{redis28-50}} \
      --parameter-name-values "ParameterName=reserved-memory-percent, ParameterValue={{50}}"
   ```

1. Utilizzate questo gruppo di parametri personalizzato per qualsiasi cluster o gruppo di replica Redis OSS che esegue una versione di Redis OSS precedente alla 2.8.22.

   L'esempio CLI seguente modifica il cluster Redis OSS `my-redis-cluster` per utilizzare il gruppo di parametri personalizzato a partire da subito. `redis28-50` Per ulteriori informazioni, consulta [Modifica di un cluster ElastiCache](Clusters.Modify.md).

   ```
   aws elasticache modify-cache-cluster \
      --cache-cluster-id {{my-redis-cluster}} \
      --cache-parameter-group-name {{redis28-50}} \
      --apply-immediately
   ```

   L'esempio CLI seguente modifica il gruppo di replica Redis OSS `my-redis-repl-grp` per utilizzare il gruppo di parametri personalizzato a partire da subito. `redis28-50` Per ulteriori informazioni, consulta [Modifica di un gruppo di replica](Replication.Modify.md).

   ```
   aws elasticache modify-replication-group \
      --replication-group-id {{my-redis-repl-grp}} \
      --cache-parameter-group-name {{redis28-50}} \
      --apply-immediately
   ```

## Specifica del parametro di gestione della memoria prenotata
<a name="redis-reserved-memory-management-change"></a>

Se eri un ElastiCache cliente attuale il 16 marzo 2017, il tuo parametro di gestione della memoria riservata predefinito è `reserved-memory` pari a zero (0) byte di memoria riservata. Se sei diventato ElastiCache cliente dopo il 16 marzo 2017, il tuo parametro di gestione della memoria riservata predefinito prevede `reserved-memory-percent` il 25 percento della memoria riservata del nodo. Questo vale indipendentemente dal momento in cui hai creato il cluster o il gruppo di replica ElastiCache per Redis OSS. Tuttavia, è possibile modificare il parametro di gestione della memoria riservata utilizzando l'API AWS CLI o ElastiCache .

I parametri `reserved-memory` e `reserved-memory-percent` sono mutuamente esclusivi. Un gruppo di parametri ne conterrà sempre uno ma non entrambi. Puoi cambiare il parametro utilizzato da un gruppo di parametri per la gestione della memoria prenotata modificando il gruppo di parametri. Il gruppo di parametri deve essere un gruppo di parametri personalizzato, perché non puoi modificare i gruppi di parametri di default. Per ulteriori informazioni, consulta [Creazione di un gruppo di ElastiCache parametri](ParameterGroups.Creating.md).

**Per specificare la percentuale reserved-memory-percent**  
Per utilizzare `reserved-memory-percent` come parametro di gestione della memoria prenotata, modifica un gruppo di parametri personalizzato utilizzando il comando `modify-cache-parameter-group`. Utilizzo del parametro `parameter-name-values` per specificare `reserved-memory-percent` e un valore per esso.

L'esempio CLI seguente modifica il gruppo di parametri personalizzato `redis32-cluster-on` in modo che utilizzi `reserved-memory-percent` per gestire memoria prenotata. Affinché il gruppo di parametri utilizzi il parametro `ParameterName` per la gestione della memoria prenotata, occorre assegnare un valore a `ParameterValue`. Per ulteriori informazioni, consulta [Modifica di un gruppo di ElastiCache parametri](ParameterGroups.Modifying.md).

```
aws elasticache modify-cache-parameter-group \
   --cache-parameter-group-name {{redis32-cluster-on}} \
   --parameter-name-values "ParameterName=reserved-memory-percent, ParameterValue={{25}}"
```

**Per specificare la memoria reserved-memory**  
Per utilizzare `reserved-memory` come parametro di gestione della memoria prenotata, modifica un gruppo di parametri personalizzato utilizzando il comando `modify-cache-parameter-group`. Utilizzo del parametro `parameter-name-values` per specificare `reserved-memory` e un valore per esso.

L'esempio CLI seguente modifica il gruppo di parametri personalizzato `redis32-m3xl` in modo che utilizzi `reserved-memory` per gestire memoria prenotata. Affinché il gruppo di parametri utilizzi il parametro `ParameterName` per la gestione della memoria prenotata, occorre assegnare un valore a `ParameterValue`. Poiché la versione del motore è più recente di 2.8.22, impostiamo il valore su `3565158400` che è 25 percento di una `maxmemory` di `cache.m3.xlarge`. Per ulteriori informazioni, consulta [Modifica di un gruppo di ElastiCache parametri](ParameterGroups.Modifying.md).

```
aws elasticache modify-cache-parameter-group \
   --cache-parameter-group-name {{redis32-m3xl}} \
   --parameter-name-values "ParameterName=reserved-memory, ParameterValue={{3565158400}}"
```