

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Administración de la memoria reservada para Valkey y Redis OSS
<a name="redis-memory-management"></a>

La memoria reservada es una memoria que se aparta del uso para los datos. Cuando se realiza una copia de seguridad o una conmutación por error, Valkey y Redis OSS usan la memoria disponible para registrar las operaciones de escritura en el clúster mientras los datos del clúster se escriben en el archivo .rdb. Si no dispone de suficiente memoria disponible para todas las operaciones de escritura, se produce un error en el proceso. A continuación se ofrece información sobre distintas opciones para administrar la memoria reservada para ElastiCache para Redis OSS y cómo aplicar dichas opciones.

**Topics**
+ [¿Cuánta memoria reservada necesita?](#redis-memory-management-need)
+ [Parámetros de administración de la memoria reservada](#redis-memory-management-parameters)
+ [Especificación del parámetro de administración de memoria reservada](#redis-reserved-memory-management-change)

## ¿Cuánta memoria reservada necesita?
<a name="redis-memory-management-need"></a>

Si ejecuta una versión de Redis OSS anterior a la 2.8.22, reserve más memoria para las copias de seguridad y las conmutaciones por error que si ejecuta la versión 2.8.22 de Redis OSS o posteriores. Este requisito se debe a las distintas maneras que ElastiCache para Redis OSS implementa el proceso de copia de seguridad. La norma general es reservar la mitad del valor de `maxmemory` del tipo de nodo como capacidad adicional para Redis OSS en versiones anteriores a la 2.8.22 y un cuarto de este mismo valor para Redis OSS versión 2.8.22 y posteriores. 

Debido a las diferentes formas en que ElastiCache implementa el proceso de copia de seguridad y replicación, la norma general es reservar el 25 % del valor de `maxmemory` de un tipo de nodo mediante el parámetro `reserved-memory-percent`. Este es el valor predeterminado y el valor recomendado para la mayoría de los casos.

Cuando los tipos de instancia micro y pequeñas ampliables funcionan cerca de los límites de `maxmemory`, es posible que se utilicen intercambios. Para mejorar la fiabilidad operativa en estos tipos de instancia durante las copias de seguridad, la replicación y los momentos de tráfico elevado, recomendamos aumentar el valor del parámetro `reserved-memory-percent` hasta un 30 % en los tipos de instancia pequeños y hasta un 50 % en los tipos de instancia micro.

Para cargas de trabajo con mucho volumen de escritura en clústeres de ElastiCache con organización de datos en niveles, recomendamos aumentar `reserved-memory-percent` hasta un 50 % de la memoria disponible del nodo.

Para obtener más información, consulte los siguientes temas:
+ [Forma de garantizar que dispone de memoria suficiente para crear una instantánea de Valkey o Redis OSS](BestPractices.BGSAVE.md)
+ [Cómo se implementan la sincronización y la copia de seguridad](Replication.Redis.Versions.md)
+ [Organización de datos en niveles en ElastiCache](data-tiering.md)

## Parámetros de administración de la memoria reservada
<a name="redis-memory-management-parameters"></a>

Desde el 16 de marzo de 2017, Amazon ElastiCache proporciona dos parámetros mutuamente excluyentes para administrar la memoria de Valkey o Redis OSS: `reserved-memory` y `reserved-memory-percent`. Ninguno de estos parámetros forma parte de la distribución de Valkey o Redis OSS. 

En función de cuándo haya comenzado a ser cliente de ElastiCache, uno de estos parámetros será el parámetro predeterminado de administración de la memoria. Este parámetro se aplica cuando crea un nuevo clúster o grupo de replicación de Valkey o Redis OSS y utiliza un grupo de parámetros predeterminado. 
+ Para clientes que comenzaron antes del 16 de marzo de 2017: cuando cree un clúster o grupo de replicación de Redis OSS mediante el grupo de parámetros predeterminado, el parámetro de administración de memoria es `reserved-memory`. En este caso, cero (0) bytes de memoria se encuentran reservados. 
+ Para clientes que comenzaron el 16 de marzo de 2017 o después de esa fecha: cuando cree un clúster o grupo de replicación de Valkey o Redis OSS mediante el grupo de parámetros predeterminado, el parámetro de administración de la memoria es `reserved-memory-percent`. En este caso, el 25 % del valor `maxmemory` del nodo se encuentra reservado para fines no relacionados con datos.

Después de leer sobre los dos parámetros de administración de la memoria de Valkey o Redis OSS, puede que prefiera utilizar el que no es el predeterminado o uno con valores no predeterminados. En este caso, puede cambiar al otro parámetro de administración de la memoria reservada. 

Para cambiar el valor de ese parámetro, puede crear un grupo de parámetros personalizado y modificarlo a fin de utilizar el parámetro y el valor de administración de la memoria preferidos. A continuación, podrá usar el grupo de parámetros personalizado cada vez que cree un nuevo clúster o grupo de replicación de Valkey o Redis OSS. Para los clústeres o grupos de reproducción existentes, puede modificarlos para que usen su grupo de parámetros personalizado.

 Para obtener más información, consulte los siguientes temas: 
+ [Especificación del parámetro de administración de memoria reservada](#redis-reserved-memory-management-change)
+ [Creación de un grupo de parámetros de ElastiCache](ParameterGroups.Creating.md)
+ [Modificación de un grupo de parámetros de ElastiCache](ParameterGroups.Modifying.md)
+ [Modificación de un clúster de ElastiCache](Clusters.Modify.md)
+ [Modificación de un grupo de reproducción](Replication.Modify.md)

### Parámetro reserved-memory
<a name="redis-memory-management-parameters-reserved-memory"></a>

Antes del 16 de marzo de 2017, toda la administración de la memoria reservada de ElastiCache para Redis OSS se realizaba con el parámetro `reserved-memory`. El valor predeterminado de `reserved-memory` es 0. Este valor predeterminado no reserva memoria alguna como capacidad adicional para Valkey o Redis OSS y permite que Valkey o Redis OSS consuma toda la memoria de un nodo con datos. 

La modificación del parámetro `reserved-memory` para tener suficiente memoria disponible para las copias de seguridad y las conmutaciones por error requiere crear un grupo de parámetros personalizado. En este grupo de parámetros personalizado, el parámetro `reserved-memory` se establece en un valor adecuado a la versión de Valkey o Redis OSS que ejecuta en su clúster y al tipo de nodo del clúster. Para obtener más información, consulte [¿Cuánta memoria reservada necesita?](#redis-memory-management-need)

El parámetro `reserved-memory` es específico para ElastiCache y no forma parte de la distribución general de Redis OSS.

El procedimiento siguiente muestra cómo usar `reserved-memory` para administrar la memoria en su clúster de Valkey o Redis OSS.

**Para reservar memoria mediante reserved-memory**

1. Cree un grupo de parámetros personalizado especificando la familia del grupo de parámetros que coincide con la versión del motor que está ejecutando, como, por ejemplo, la familia del grupo de parámetros `redis2.8`. Para obtener más información, consulte [Creación de un grupo de parámetros de ElastiCache](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. Calcule el número de bytes de memoria que se deben reservar para la sobrecarga de Valkey o Redis OSS. Encontrará el valor de `maxmemory` para su tipo de nodo en [Parámetros específicos de tipos de nodos de Redis OSS](ParameterGroups.Engine.md#ParameterGroups.Redis.NodeSpecific).

1. Modifique el grupo de parámetros personalizado de modo que el parámetro `reserved-memory` coincida con el número de bytes que calculó en el paso anterior. En el siguiente ejemplo de la AWS CLI, se da por sentado que ejecuta una versión de Redis OSS anterior a la 2.8.22 y que necesita reservar la mitad del valor de `maxmemory` del nodo. Para obtener más información, consulte [Modificación de un grupo de parámetros de ElastiCache](ParameterGroups.Modifying.md).

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

   Necesita un grupo de parámetros personalizado individual para cada tipo de nodo que utilice, ya que cada tipo de nodo tiene un valor de `maxmemory` distinto. Por lo tanto, cada tipo de nodo necesita un valor diferente para `reserved-memory`.

1. Modifique el clúster o grupo de replicación de Redis OSS de forma que use su grupo de parámetros personalizado.

   En el ejemplo de la CLI siguiente se modifica el clúster ` my-redis-cluster` de forma que comience a usar de inmediato el grupo de parámetros personalizado `redis28-m3xl`. Para obtener más información, consulte [Modificación de un clúster de ElastiCache](Clusters.Modify.md).

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

   En el ejemplo de la CLI siguiente se modifica el grupo de reproducción `my-redis-repl-grp` de forma que comience a usar de inmediato el grupo de parámetros personalizado `redis28-m3xl`. Para obtener más información, [Modificación de un grupo de reproducción](Replication.Modify.md).

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

### Parámetro reserved-memory-percent
<a name="redis-memory-management-parameters-reserved-memory-percent"></a>

El 16 de marzo de 2017, Amazon ElastiCache presentó el parámetro `reserved-memory-percent` y ahora se encuentra disponible en todas las versiones de ElastiCache para Redis OSS. El propósito del parámetro `reserved-memory-percent` es simplificar la administración de la memoria reservada en todos los clústeres. Esta simplificación se consigue al disponer de un único grupo de parámetros para cada familia de grupos de parámetros (como `redis2.8`) para administrar la memoria reservada de sus clústeres, sea cual sea el tipo de nodo. El valor de predeterminado para `reserved-memory-percent` es 25 (25 por ciento).

El parámetro `reserved-memory-percent` es específico para ElastiCache y no forma parte de la distribución general de Redis OSS.

Si el clúster utiliza un tipo de nodo de la familia r6gd y el uso de memoria alcanza el 75 por ciento, la organización de datos en niveles se activará automáticamente. Para obtener más información, consulte [Organización de datos en niveles en ElastiCache](data-tiering.md).

**Para reservar memoria mediante reserved-memory-percent**  
Para utilizar `reserved-memory-percent` a fin de administrar la memoria en su clúster de ElastiCache para Redis OSS, realice una de las acciones siguientes:
+ Si ejecuta Redis OSS 2.8.22 o versiones posteriores, asigne el grupo de parámetros predeterminado a su clúster. El valor predeterminado de 25 debe ser suficiente. De lo contrario, siga los pasos que se describen a continuación para cambiar el valor.
+ Si ejecuta una versión de Redis OSS anterior a la 2.8.22, probablemente tendrá que reservar más memoria que el 25 % predeterminado de `reserved-memory-percent`. Para ello, siga el procedimiento que se indica a continuación. 

**Para cambiar el valor porcentual de reserved-memory-percent**

1. Cree un grupo de parámetros personalizado especificando la familia del grupo de parámetros que coincide con la versión del motor que está ejecutando, como, por ejemplo, la familia del grupo de parámetros `redis2.8`. Necesita disponer de un grupo de parámetros personalizado porque no es posible modificar grupos de parámetros predeterminados. Para obtener más información, consulte [Creación de un grupo de parámetros de ElastiCache](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
   ```

   Dado que `reserved-memory-percent` se reserva la memoria como un porcentaje del valor `maxmemory` de un nodo, no necesita un grupo de parámetros personalizado para cada tipo de nodo.

1. Modifique el grupo de parámetros personalizados de modo que el parámetro `reserved-memory-percent` tenga el valor 50 (50 %). Para obtener más información, consulte [Modificación de un grupo de parámetros de ElastiCache](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. Use este grupo de parámetros personalizado para todos los clústeres o grupos de replicación de Redis OSS que ejecuten una versión de Redis OSS anterior a la 2.8.22.

   En el ejemplo de la CLI siguiente se modifica el clúster de Redis OSS `my-redis-cluster` de forma que comience a usar de inmediato el grupo de parámetros personalizado `redis28-50`. Para obtener más información, consulte [Modificación de un clúster de ElastiCache](Clusters.Modify.md).

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

   En el ejemplo de la CLI siguiente se modifica el grupo de replicación de Redis OSS `my-redis-repl-grp` de forma que comience a usar de inmediato el grupo de parámetros personalizado `redis28-50`. Para obtener más información, consulte [Modificación de un grupo de reproducción](Replication.Modify.md).

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

## Especificación del parámetro de administración de memoria reservada
<a name="redis-reserved-memory-management-change"></a>

Si ya era un cliente de ElastiCache el 16 de marzo de 2017, su parámetro predeterminado de administración de memoria reservada es `reserved-memory` con cero (0) bytes de memoria reservada. Si comenzó a ser cliente de ElastiCache después del 16 de marzo de 2017, su parámetro predeterminado de administración de memoria reservada es `reserved-memory-percent` con un 25 % de la memoria reservada del nodo. Esto se cumple independientemente de cuándo haya creado el clúster o grupo de replicación de ElastiCache para Redis OSS. Sin embargo, puede cambiar el parámetro de administración de memoria reservada, mediante la AWS CLI o la API de ElastiCache.

Los parámetros `reserved-memory` y `reserved-memory-percent` son mutuamente excluyentes. Un grupo de parámetros siempre tiene un parámetro, pero nunca ambos. Puede cambiar el parámetro que usa el grupo de parámetros para la administración de memoria reservada modificando el grupo de parámetros. El grupo de parámetros debe ser personalizado, ya que no es posible modificar grupos de parámetros predeterminados. Para obtener más información, consulte [Creación de un grupo de parámetros de ElastiCache](ParameterGroups.Creating.md).

**Para especificar reserved-memory-percent**  
Para utilizar `reserved-memory-percent` como parámetro de administración de memoria reservada, modifique un grupo de parámetros personalizado mediante el comando `modify-cache-parameter-group`. Utilice el parámetro `parameter-name-values` para especificar `reserved-memory-percent` y un valor para ello.

El siguiente ejemplo de la CLI modifica el grupo de parámetros personalizados `redis32-cluster-on` para usar el parámetro `reserved-memory-percent` para administrar la memoria reservada. Se debe asignar un valor a `ParameterValue` para que el grupo de parámetros utilice el parámetro `ParameterName` a fin de administrar la memoria reservada. Para obtener más información, consulte [Modificación de un grupo de parámetros de ElastiCache](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"
```

**Para especificar reserved-memory**  
Para utilizar `reserved-memory` como parámetro de administración de memoria reservada, modifique un grupo de parámetros personalizado mediante el comando `modify-cache-parameter-group`. Utilice el parámetro `parameter-name-values` para especificar `reserved-memory` y un valor para ello.

El siguiente ejemplo de la CLI modifica el grupo de parámetros personalizados `redis32-m3xl` para usar el parámetro `reserved-memory` para administrar la memoria reservada. Se debe asignar un valor a `ParameterValue` para que el grupo de parámetros utilice el parámetro `ParameterName` a fin de administrar la memoria reservada. Dado que la versión del motor es posterior a la versión 2.8.22, establecemos el valor en `3565158400`, que es el 25 % del valor de `cache.m3.xlarge` de `maxmemory`. Para obtener más información, consulte [Modificación de un grupo de parámetros de ElastiCache](ParameterGroups.Modifying.md).

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