

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.

# Trabajando con ElastiCache
<a name="WorkingWithElastiCache"></a>

 En esta sección encontrará detalles sobre cómo gestionar los distintos componentes de la ElastiCache implementación. 

**Topics**
+ [Instantánea y restauración](backups.md)
+ [Versiones de motores y actualizaciones en ElastiCache](engine-versions.md)
+ [Procedimientos recomendados y estrategias de almacenamiento en caché de ElastiCache](BestPractices.md)
+ [Administrar su clúster basado en nodos en ElastiCache](manage-self-designed-cluster.md)
+ [Conexión automática de una instancia de EC2 y una caché de ElastiCache](compute-connection.md)
+ [Escalado ElastiCache](Scaling.md)
+ [Introducción a los filtros de Bloom](BloomFilters.md)
+ [Cómo empezar a usar Watch in Serverless](ServerlessWatch.md)
+ [Introducción a la búsqueda vectorial](vector-search.md)
+ [Introducción a JSON para Valkey y Redis OSS](json-gs.md)
+ [Etiquetar sus recursos ElastiCache](Tagging-Resources.md)
+ [Uso del enfoque Well-Architected de Amazon ElastiCache](WellArchitechtedLens.md)
+ [Pasos comunes de solución de problemas y prácticas recomendadas con ElastiCache](wwe-troubleshooting.md)

# Instantánea y restauración
<a name="backups"></a>

 ElastiCache Las cachés de Amazon que ejecutan Valkey, Redis OSS o Serverless Memcached pueden hacer copias de seguridad de sus datos mediante la creación de una instantánea. Puede utilizar la copia de seguridad para restaurar una caché o para propagar los datos iniciales de una nueva caché. La copia de seguridad se compone de los metadatos de la caché, junto con todos los datos de la caché. Todas las copias de seguridad se escriben en Amazon Simple Storage Service (Amazon S3), lo que proporciona un almacenamiento duradero. Puede restaurar sus datos en cualquier momento creando una nueva caché de Valkey, Redis OSS o Memcached sin servidor y rellenándola con los datos de una copia de seguridad. Con ElastiCache, puede administrar las copias de seguridad mediante la Consola de administración de AWS,AWS Command Line Interface()AWS CLI y la API. ElastiCache 

Si está pensando en eliminar la caché y es importante conservar los datos, puede tomar una medida de precaución adicional. Para ello, cree primero una copia de seguridad manual, compruebe que su estado sea *disponible* y elimine la caché. Con este procedimiento, se asegura de que seguirá disponiendo de los datos de la caché aunque haya un error en la copia de seguridad. Puede volver a intentar realizar una copia de seguridad siguiendo las prácticas recomendadas descritas anteriormente.

**Topics**
+ [Limitaciones del proceso de copia de seguridad](#backups-constraints)
+ [Impacto en el rendimiento de las copias de seguridad de los clústeres basados en nodos](#backups-performance)
+ [Programación de copias de seguridad automáticas](backups-automatic.md)
+ [Copias de seguridad manuales](backups-manual.md)
+ [Creación de una copia de seguridad final](backups-final.md)
+ [Descripción de copias de seguridad](backups-describing.md)
+ [Copiar copias de seguridad](backups-copying.md)
+ [Exportación de una copia de seguridad](backups-exporting.md)
+ [Restauración desde una copia de seguridad a una nueva caché](backups-restoring.md)
+ [Eliminación de una copia de seguridad](backups-deleting.md)
+ [Etiquetado de copias de seguridad](backups-tagging.md)
+ [Tutorial: propagación de un nuevo clúster basado en nodos con una copia de seguridad creada externamente](backups-seeding-redis.md)

## Limitaciones del proceso de copia de seguridad
<a name="backups-constraints"></a>

Debe tener en cuenta las limitaciones siguientes a la hora de planear o realizar copias de seguridad:
+ La copia de seguridad y restauración solo es compatible con las cachés que se ejecutan en Valkey, Redis OSS o Memcached sin servidor.
+ Para los clústeres de Valkey o Redis OSS (modo de clúster deshabilitado), la copia de seguridad y la restauración no son compatibles con los nodos `cache.t1.micro`. Todos los demás tipos de nodos de caché son compatibles con la característica.
+ Para los clústeres de Valkey o Redis OSS (modo de clúster habilitado), la copia de seguridad y la restauración son compatibles con todos los tipos de nodos.
+ Durante 24 horas continuas, no podrá crear más de 24 copias de seguridad manuales por caché sin servidor. En el caso de los clústeres basados en nodos de Valkey y Redis OSS, no podrá crear más de 20 copias de seguridad manuales por cada nodo del clúster.
+ Valkey o Redis OSS (modo de clúster habilitado) solo permiten realizar copias de seguridad en el clúster (para la API o la CLI, en el grupo de replicación). Valkey o Redis OSS (modo de clúster habilitado) no permiten realizar copias de seguridad en las particiones (para la API o la CLI, en el grupo de nodos).
+ Durante el proceso de copia de seguridad, no podrá realizar operaciones de la API o la CLI en la caché sin servidor. Puede realizar operaciones de la API o la CLI en un clúster basado en nodos durante la copia de seguridad.
+ Si utiliza cachés de Valkey o Redis OSS con organización de datos en niveles, no puede exportar una copia de seguridad a Amazon S3.
+ Puede restaurar una copia de seguridad de un clúster utilizando el tipo de nodo r6gd solo en clústeres que utilicen el tipo de nodo r6gd.

## Impacto en el rendimiento de las copias de seguridad de los clústeres basados en nodos
<a name="backups-performance"></a>

Las copias de seguridad en las cachés sin servidor son transparentes para la aplicación y no afectan al rendimiento. Sin embargo, al crear copias de seguridad para clústeres basados en nodos, el rendimiento puede verse afectado en cierta medida en función de la memoria reservada disponible. Las copias de seguridad de los clústeres basados en nodos no están disponibles en Memcached, pero sí en Redis OSS. ElastiCache ElastiCache 

A continuación, se ofrecen algunas pautas para mejorar el rendimiento de la realización de copias de seguridad para clústeres basados en nodos.
+ Defina el `reserved-memory-percent` parámetro: para mitigar el exceso de paginación, le recomendamos que configure el parámetro. *reserved-memory-percent* Este parámetro impide que Valkey o Redis OSS consuma toda la memoria disponible del nodo y puede ayudar a reducir la cantidad de páginas creadas. También puede ver mejoras de rendimiento simplemente usando un nodo de mayor tamaño. Para obtener más información sobre la *memoria reservada* y *reserved-memory-percent*los parámetros, consulte. [Administración de la memoria reservada para Valkey y Redis OSS](redis-memory-management.md)

   
+ Cree copias de seguridad a partir de una réplica de lectura: si ejecuta Valkey o Redis OSS en un grupo de nodos con más de un nodo, puede tomar una copia de seguridad del nodo principal o una de las réplicas de lectura. Dados los orígenes del sistema requeridos durante BGSAVE, recomendamos que cree copias de seguridad de una de las réplicas de lectura. Aunque la copia de seguridad se está creando a partir de la réplica, el nodo principal no se ve afectado por los requisitos de recursos del comando BGSAVE. El nodo principal puede continuar atendiendo a las solicitudes sin ralentizarse.

  Para hacer esto, consulte [Creación de una copia de seguridad manual (consola)](backups-manual.md#backups-manual-CON) y en el campo **Cluster Name** (Nombre del clúster) en la ventana **Create Backup** (Crear copia de seguridad), elija una réplica en lugar del nodo primario predeterminado.

Si elimina un grupo de replicación y solicita una copia de seguridad final, ElastiCache siempre toma la copia de seguridad del nodo principal. De este modo, se garantiza que se capturan los datos de Valkey o Redis OSS más recientes antes de eliminar el grupo de replicación.

# Programación de copias de seguridad automáticas
<a name="backups-automatic"></a>

Puede habilitar copias de seguridad automáticas para cualquier caché sin servidor de Valkey o Redis OSS o para cualquier clúster basado en nodos. Cuando las copias de seguridad automáticas están habilitadas, ElastiCache crea una copia de seguridad de la memoria caché a diario. Esto no afecta a la caché y el cambio es inmediato. Las copias de seguridad automáticas pueden ayudarle a protegerse frente a la pérdida de datos. En caso de error, puede crear una nueva caché y restaurar los datos de la copia de seguridad más reciente. El resultado es una caché iniciada en activo; es decir, ya está cargada con sus datos y lista para el uso. Para obtener más información, consulte [Restauración desde una copia de seguridad a una nueva caché](backups-restoring.md).

Puede habilitar copias de seguridad automáticas para cualquier caché sin servidor de Memcached. Cuando las copias de seguridad automáticas están habilitadas, ElastiCache crea una copia de seguridad de la memoria caché a diario. Esto no afecta a la caché y el cambio es inmediato. Las copias de seguridad automáticas pueden ayudarle a protegerse frente a la pérdida de datos. En caso de error, puede crear una nueva caché y restaurar los datos de la copia de seguridad más reciente. El resultado es una caché iniciada en activo; es decir, ya está cargada con sus datos y lista para el uso. Para obtener más información, consulte [Restauración desde una copia de seguridad a una nueva caché](backups-restoring.md).

Al programar copias de seguridad automáticas, debe planificar los ajustes siguientes:
+ **Hora de inicio de la copia** de seguridad: hora del día en la que se ElastiCache comienza a crear una copia de seguridad. Puede configurar la ventana de copia de seguridad en el momento que le resulte más conveniente. Si no especifica una ventana de copia de seguridad, ElastiCache asigna una automáticamente.

   
+ **Límite de retención de copia de seguridad**: número de días que se retiene la copia de seguridad en Amazon S3. Por ejemplo, si establece el límite de retención en 5, una copia de seguridad que se realice hoy se conservaría durante 5 días. Al finalizar el límite de retención, la copia de seguridad se eliminará automáticamente.

  El límite máximo de retención de copia de seguridad es de 35 días. Si el límite de retención de copia de seguridad se establece en 0, las copias de seguridad se deshabilitarán en la caché.

Cuando programe copias de seguridad automáticas, ElastiCache empezará a crear la copia de seguridad. Puede configurar la ventana de copia de seguridad en el momento que le resulte más conveniente. Si no especificas una ventana de respaldo, ElastiCache asigna una automáticamente.

Puede activar o desactivar las copias de seguridad automáticas al crear una caché nueva o al actualizar una caché existente mediante la ElastiCache consola AWS CLI, la API o la ElastiCache API. En el caso de Valkey y Redis OSS, esto se hace marcando la casilla **Habilitar copias de seguridad automáticas** en las secciones **Configuración avanzada de Valkey** o **Configuración avanzada de Redis OSS**. En el caso de Memcached, esto se hace marcando la casilla **Habilitar copias de seguridad automáticas** en la sección **Configuración avanzada de Memcached**.

# Copias de seguridad manuales
<a name="backups-manual"></a>

Además de las copias de seguridad automáticas, puede crear una copia de seguridad *manual* en cualquier momento. A diferencia de las copias de seguridad automáticas, que se eliminan automáticamente después de un periodo de retención determinado, las copias de seguridad manuales no tienen periodo de retención que determine su eliminación automática. Aunque elimine la memoria caché, se conservarán todas las copias de seguridad manuales de esa memoria caché. Si ya no desea conservar una copia de seguridad manual, deberá eliminarla de forma explícita.

Además de crear una copia de seguridad manual, puede crear copias de seguridad manuales de las maneras siguientes:
+ [Copiar copias de seguridad](backups-copying.md). No importa si la copia de seguridad de origen se creó automáticamente o manualmente.
+ [Creación de una copia de seguridad final](backups-final.md). Cree una copia de seguridad inmediatamente antes de eliminar un clúster o nodo.

Puede crear una copia de seguridad manual de una memoria caché mediante la Consola de administración de AWSAWS CLI, la o la ElastiCache API.

Puede generar copias de seguridad manuales a partir de réplicas tanto si tienen habilitado el modo de clúster como si no.



## Creación de una copia de seguridad manual (consola)
<a name="backups-manual-CON"></a>

**Para crear una copia de seguridad de una caché (consola)**

1. Inicie sesión en Consola de administración de AWS y abra la ElastiCache consola en [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. En el panel de navegación, elija **Cachés de Valkey**, **Cachés de Redis OSS** o **Cachés de Memcached**, según sean sus preferencias.

1. Elija la casilla situada a la izquierda del nombre de la caché de la que desea realizar la copia de seguridad.

1. Elija **Backup (Copia de seguridad)**.

1. En el cuadro de diálogo **Create Backup**, escriba un nombre para la copia de seguridad en el cuadro **Backup Name**. Recomendamos que el nombre indique que el clúster proviene de una copia de seguridad y especifique la fecha y la hora en que se creó la copia de seguridad.

   Las restricciones para la asignación de nombres de clúster son las siguientes:
   + Deben contener entre 1 y 40 caracteres alfanuméricos o guiones.
   + Deben comenzar por una letra.
   + No pueden contener dos guiones consecutivos.
   + No pueden terminar con un guion.

1. Elija **Create Backup**.

   El estado del clúster cambia a *snapshotting*.

## Creación de una copia de seguridad manual (AWS CLI)
<a name="backups-manual-CLI"></a>

**Copia de seguridad manual de una memoria caché sin servidor con AWS CLI**

Para crear una copia de seguridad manual de una caché mediante el AWS CLI, utilice la `create-serverless-snapshot`AWS CLI operación con los siguientes parámetros:
+ `--serverless-cache-name`: el nombre de la memoria caché sin servidor cuya copia de seguridad está realizando.
+ `--serverless-cache-snapshot-name`: nombre de la instantánea que se creará.

Para Linux, macOS o Unix:
+ 

  ```
  aws elasticache create-serverless-snapshot \
                          --serverless-cache-name CacheName \
                          --serverless-cache-snapshot-name bkup-20231127
  ```

Para Windows:
+ 

  ```
  aws elasticache create-serverless-snapshot ^
      --serverless-cache-name CacheName ^
      --serverless-cache-snapshot-name bkup-20231127
  ```

**Copia de seguridad manual de un clúster basado en nodos con el AWS CLI**

Para crear una copia de seguridad manual de un clúster basado en nodos mediante el AWS CLI, utilice la `create-snapshot`AWS CLI operación con los siguientes parámetros:
+ `--cache-cluster-id`
  + Si el clúster del que va a realizar la copia de seguridad no tiene nodos de réplica, `--cache-cluster-id` es el nombre del clúster del que va a hacer la copia de seguridad, por ejemplo. *mycluster*
  + Si el clúster que está copiando tiene uno o varios nodos de réplica, `--cache-cluster-id` será el nombre del nodo del clúster que desea usar para la copia de seguridad. Por ejemplo, el nombre podría ser*mycluster-002*.

  Utilice este parámetro solo para realizar copias de seguridad de un clúster de Valkey o Redis OSS (modo de clúster deshabilitado).

   
+ `--replication-group-id`: nombre del clúster (CLI/API: grupo de replicación) de Valkey o Redis OSS (modo de clúster habilitado) que se utilizará como origen de la copia de seguridad. Utilice este parámetro para realizar copias de seguridad de un clúster de Valkey o Redis OSS (modo de clúster habilitado).

   
+ `--snapshot-name`: nombre de la instantánea que se creará.

  Las restricciones para la asignación de nombres de clúster son las siguientes:
  + Deben contener entre 1 y 40 caracteres alfanuméricos o guiones.
  + Deben comenzar por una letra.
  + No pueden contener dos guiones consecutivos.
  + No pueden terminar con un guion.

### Ejemplo 1: Creación de una copia de seguridad de un clúster de Valkey o Redis OSS (modo de clúster deshabilitado) que no tiene nodos de réplica
<a name="backups-manual-CLI-example1"></a>

La siguiente AWS CLI operación crea la copia `bkup-20150515` de seguridad a partir del clúster OSS (modo de clúster desactivado) de Valkey o Redis `myNonClusteredRedis` que no tiene réplicas de lectura.

Para Linux, macOS o Unix:

```
aws elasticache create-snapshot \
    --cache-cluster-id myNonClusteredRedis \
    --snapshot-name bkup-20150515
```

Para Windows:

```
aws elasticache create-snapshot ^
    --cache-cluster-id myNonClusteredRedis ^
    --snapshot-name bkup-20150515
```

### Ejemplo 2: Creación de una copia de seguridad de un clúster de Valkey o Redis OSS (modo de clúster deshabilitado) con nodos de réplica
<a name="backups-manual-CLI-example2"></a>

La siguiente AWS CLI operación crea la copia `bkup-20150515` de seguridad desde el clúster OSS de Valkey o Redis (modo de clúster desactivado). `myNonClusteredRedis` Esta copia de seguridad dispone de una o más réplicas de lectura.

Para Linux, macOS o Unix:

```
aws elasticache create-snapshot \
    --cache-cluster-id myNonClusteredRedis-001 \
    --snapshot-name bkup-20150515
```

Para Windows:

```
aws elasticache create-snapshot ^
    --cache-cluster-id myNonClusteredRedis-001 ^
    --snapshot-name bkup-20150515
```

**Ejemplo de resultados: Copia de seguridad de un clúster de Valkey o Redis OSS (modo clúster deshabilitado) con nodos de réplica**

La salida de la operación será similar a lo que se indica a continuación.

```
{
    "Snapshot": {
        "Engine": "redis", 
        "CacheParameterGroupName": "default.redis6.x", 
        "VpcId": "vpc-91280df6", 
        "CacheClusterId": "myNonClusteredRedis-001", 
        "SnapshotRetentionLimit": 0, 
        "NumCacheNodes": 1, 
        "SnapshotName": "bkup-20150515", 
        "CacheClusterCreateTime": "2017-01-12T18:59:48.048Z", 
        "AutoMinorVersionUpgrade": true, 
        "PreferredAvailabilityZone": "us-east-1c", 
        "SnapshotStatus": "creating", 
        "SnapshotSource": "manual", 
        "SnapshotWindow": "08:30-09:30", 
        "EngineVersion": "6.0", 
        "NodeSnapshots": [
            {
                "CacheSize": "", 
                "CacheNodeId": "0001", 
                "CacheNodeCreateTime": "2017-01-12T18:59:48.048Z"
            }
        ], 
        "CacheSubnetGroupName": "default", 
        "Port": 6379, 
        "PreferredMaintenanceWindow": "wed:07:30-wed:08:30", 
        "CacheNodeType": "cache.m3.2xlarge",
        "DataTiering": "disabled"
    }
}
```

### Ejemplo 3: Creación de una copia de seguridad de un clúster de Valkey o Redis OSS (modo de clúster habilitado)
<a name="backups-manual-CLI-example3"></a>

La siguiente AWS CLI operación crea la copia `bkup-20150515` de seguridad desde el clúster OSS (modo de clúster activado) de Valkey o Redis. `myClusteredRedis` Tenga en cuenta que debe usar el `--replication-group-id` en lugar del `--cache-cluster-id` para identificar el origen. Tenga en cuenta también que ElastiCache realiza la copia de seguridad mediante el nodo de réplica cuando está presente y, de forma predeterminada, pasa al nodo principal si un nodo de réplica no está disponible.

Para Linux, macOS o Unix:

```
aws elasticache create-snapshot \
    --replication-group-id myClusteredRedis \
    --snapshot-name bkup-20150515
```

Para Windows:

```
aws elasticache create-snapshot ^
    --replication-group-id myClusteredRedis ^
    --snapshot-name bkup-20150515
```

**Ejemplo de resultados: Creación de una copia de seguridad de un clúster de Valkey o Redis OSS (modo de clúster habilitado)**

La salida de esta operación será similar a lo que se indica a continuación.

```
{
    "Snapshot": {
        "Engine": "redis", 
        "CacheParameterGroupName": "default.redis6.x.cluster.on", 
        "VpcId": "vpc-91280df6", 
        "NodeSnapshots": [
            {
                "CacheSize": "", 
                "NodeGroupId": "0001"
            }, 
            {
                "CacheSize": "", 
                "NodeGroupId": "0002"
            }
        ], 
        "NumNodeGroups": 2, 
        "SnapshotName": "bkup-20150515", 
        "ReplicationGroupId": "myClusteredRedis", 
        "AutoMinorVersionUpgrade": true, 
        "SnapshotRetentionLimit": 1, 
        "AutomaticFailover": "enabled", 
        "SnapshotStatus": "creating", 
        "SnapshotSource": "manual", 
        "SnapshotWindow": "10:00-11:00", 
        "EngineVersion": "6.0", 
        "CacheSubnetGroupName": "default", 
        "ReplicationGroupDescription": "2 shards 2 nodes each", 
        "Port": 6379, 
        "PreferredMaintenanceWindow": "sat:03:30-sat:04:30", 
        "CacheNodeType": "cache.r3.large",
        "DataTiering": "disabled"
    }
}
```

### Temas relacionados
<a name="backups-manual-CLI-see-also"></a>

Para obtener más información, consulte [create-snapshot](https://docs.aws.amazon.com/cli/latest/reference/elasticache/create-snapshot.html) en la *Referencia de comandos de la AWS CLI*.

## Crear una copia de seguridad mediante CloudFormation
<a name="backups-CFN"></a>

Puede utilizarla CloudFormation para crear una copia de seguridad de su caché de ElastiCache Redis OSS o Valkey mediante las propiedades `AWS::ElastiCache::ServerlessCache` o`AWS::ElastiCache::ReplicationGroup`.

**Uso del recurso `AWS::ElastiCache::ServerlessCache`**

Use esto para crear una copia de seguridad utilizando el AWS::ElastiCache::ServerlessCache recurso:

```
Resources:
                    iotCatalog:
                        Type: AWS::ElastiCache::ServerlessCache
                            Properties:
                            ...
                            ServerlessCacheName: "your-cache-name"
                            Engine: "redis"
                            CacheUsageLimits
```

**Uso del AWS::ElastiCache::ReplicationGroup recurso**

Utilice el recurso `AWS::ElastiCache::ReplicationGroup`:

```
Resources:
                    iotCatalog:
                        Type: AWS::ElastiCache::ReplicationGroup 
                            Properties:
                            ...
                            ReplicationGroupDescription: "Description of your replication group"
                            Engine: "redis"
                            CacheNodeType
                            NumCacheClusters
                            AutomaticFailoverEnabled
                            AtRestEncryptionEnabled
```

# Creación de una copia de seguridad final
<a name="backups-final"></a>

Puede crear una copia de seguridad final mediante la ElastiCache consola AWS CLI, la o la ElastiCache API.

## Creación de una copia de seguridad final (consola)
<a name="backups-final-CON"></a>

Puede crear una copia de seguridad final al eliminar una caché sin servidor de Valkey, Memcached o Redis OSS, o un clúster basado en nodos de Valkey o Redis OSS, mediante la consola. ElastiCache 

Para crear una copia de seguridad final al eliminar una caché, seleccione **Sí** en el cuadro de diálogo de eliminación, bajo **Crear copia de seguridad**, y póngale un nombre a la copia de seguridad.

**Temas relacionados**
+ [Usando el Consola de administración de AWS](Clusters.Delete.md#Clusters.Delete.CON)
+ [Eliminación de un grupo de reproducción (consola)](Replication.DeletingRepGroup.md#Replication.DeletingRepGroup.CON)

## Creación de una copia de seguridad final (AWS CLI)
<a name="backups-final-CLI"></a>

Puede crear una copia de seguridad final al eliminar una caché de Redis usando la AWS CLI.

**Topics**
+ [Al eliminar una caché de Valkey, una caché sin servidor de Memcached o una caché de Redis OSS](#w2aac24b7c29b7b1b7)
+ [Al eliminar un clúster de Valkey o Redis OSS sin réplicas de lectura](#w2aac24b7c29b7b1b9)
+ [Al eliminar un clúster de Valkey o Redis OSS con réplicas de lectura](#w2aac24b7c29b7b1c11)

### Al eliminar una caché de Valkey, una caché sin servidor de Memcached o una caché de Redis OSS
<a name="w2aac24b7c29b7b1b7"></a>

Para crear una copia de seguridad final, utilice la operación con los siguientes parámetros. `delete-serverless-cache`AWS CLI
+ `--serverless-cache-name`: nombre de la caché que va a eliminar.
+ `--final-snapshot-name`: nombre de la copia de seguridad.

El siguiente código crea la copia de seguridad final `bkup-20231127-final` al eliminar la caché `myserverlesscache`.

Para Linux, macOS o Unix:

```
aws elasticache delete-serverless-cache \
        --serverless-cache-name myserverlesscache \
        --final-snapshot-name bkup-20231127-final
```

Para Windows:

```
aws elasticache delete-serverless-cache ^
        --serverless-cache-name myserverlesscache ^
        --final-snapshot-name bkup-20231127-final
```

Para obtener más información, consulte [delete-serverless-cache](https://docs.aws.amazon.com/cli/latest/reference/elasticache/delete-serverless-cache.html) en la *Referencia de comandos de la AWS CLI*.

### Al eliminar un clúster de Valkey o Redis OSS sin réplicas de lectura
<a name="w2aac24b7c29b7b1b9"></a>

Para crear una copia de seguridad final para un clúster basado en nodos sin réplicas de lectura, utilice la `delete-cache-cluster`AWS CLI operación con los siguientes parámetros.
+ `--cache-cluster-id`: nombre del clúster que va a eliminar.
+ `--final-snapshot-identifier`: nombre de la copia de seguridad.

El siguiente código crea la copia de seguridad final `bkup-20150515-final` al eliminar el clúster `myRedisCluster`.

Para Linux, macOS o Unix:

```
aws elasticache delete-cache-cluster \
        --cache-cluster-id myRedisCluster \
        --final-snapshot-identifier bkup-20150515-final
```

Para Windows:

```
aws elasticache delete-cache-cluster ^
        --cache-cluster-id myRedisCluster ^
        --final-snapshot-identifier bkup-20150515-final
```

Para obtener más información, consulte [delete-cache-cluster](https://docs.aws.amazon.com/cli/latest/reference/elasticache/delete-cache-cluster.html) en la *Referencia de comandos de la AWS CLI*.

### Al eliminar un clúster de Valkey o Redis OSS con réplicas de lectura
<a name="w2aac24b7c29b7b1c11"></a>

Para crear una copia de seguridad final al eliminar un grupo de replicación, utilice la `delete-replication-group`AWS CLI operación con los siguientes parámetros:
+ `--replication-group-id`: nombre del grupo de replicación que se va a eliminar.
+ `--final-snapshot-identifier`: nombre de la copia de seguridad final.

El siguiente código realiza la copia de seguridad final `bkup-20150515-final` al eliminar el grupo de reproducción `myReplGroup`.

Para Linux, macOS o Unix:

```
aws elasticache delete-replication-group \
        --replication-group-id myReplGroup \
        --final-snapshot-identifier bkup-20150515-final
```

Para Windows:

```
aws elasticache delete-replication-group ^
        --replication-group-id myReplGroup ^
        --final-snapshot-identifier bkup-20150515-final
```

Para obtener más información, consulte [delete-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/delete-replication-group.html) en la *Referencia de los c‎omandos de AWS CLI*.

# Descripción de copias de seguridad
<a name="backups-describing"></a>

Los procedimientos siguientes muestran cómo mostrar una lista de sus copias de seguridad. Si lo desea, también puede ver los detalles de una copia de seguridad determinada.

## Descripción de copias de seguridad (consola)
<a name="backups-describing-CON"></a>

**Para mostrar las copias de seguridad mediante Consola de administración de AWS**

1. Inicie sesión en Consola de administración de AWS y abra la ElastiCache consola en [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. En el panel de navegación, seleccione **Backups (Copias de seguridad)**.

1. Para ver los detalles de una copia de seguridad determinada, elija la casilla situada a la izquierda del nombre de la copia de seguridad.

## Descripción de las copias de seguridad sin servidor (AWS CLI)
<a name="backups-describing-serverless-CLI"></a>

Para mostrar una lista de las copias de seguridad sin servidor y, de forma opcional, los detalles de una copia de seguridad específica, use la operación `describe-serverless-cache-snapshots` de la CLI. 

**Ejemplos**

La operación siguiente usa el parámetro `--max-records` para mostrar hasta 20 copias de seguridad asociadas a su cuenta. La omisión del parámetro `--max-records` permite mostrar hasta 50 copias de seguridad.

```
aws elasticache describe-serverless-cache-snapshots --max-records 20
```

La operación siguiente usa el parámetro `--serverless-cache-name` para mostrar solo las copias de seguridad asociadas a la caché `my-cache`.

```
aws elasticache describe-serverless-cache-snapshots --serverless-cache-name my-cache
```

La operación siguiente usa el parámetro `--serverless-cache-snapshot-name` para mostrar los detalles de la copia de seguridad `my-backup`.

```
aws elasticache describe-serverless-cache-snapshots --serverless-cache-snapshot-name my-backup
```

Para obtener más información, consulte [describe-serverless-cache-snapshots](https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-serverless-cache-snapshots.html)la Referencia de AWS CLI comandos.

## Descripción de las copias de seguridad de clústeres basados en nodos (AWS CLI)
<a name="backups-describing-CLI"></a>

Para mostrar una lista de las copias de seguridad de clústeres basados en nodos y, de forma opcional, los detalles específicos de una copia de seguridad, use la operación de la CLI `describe-snapshots`. 

**Ejemplos**

La operación siguiente usa el parámetro `--max-records` para mostrar hasta 20 copias de seguridad asociadas a su cuenta. La omisión del parámetro `--max-records` permite mostrar hasta 50 copias de seguridad.

```
aws elasticache describe-snapshots --max-records 20
```

La operación siguiente usa el parámetro `--cache-cluster-id` para mostrar solo las copias de seguridad asociadas al clúster `my-cluster`.

```
aws elasticache describe-snapshots --cache-cluster-id my-cluster
```

La operación siguiente usa el parámetro `--snapshot-name` para mostrar los detalles de la copia de seguridad `my-backup`.

```
aws elasticache describe-snapshots --snapshot-name my-backup
```

Para obtener más información, consulte [describe-snapshots](https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-snapshots.html) en la Referencia de comandos.AWS CLI

# Copiar copias de seguridad
<a name="backups-copying"></a>

Puede realizar una copia de cualquier copia de seguridad, independientemente de si se creó de forma automática o manual. También puede exportar su copia de seguridad para poder acceder a ella desde fuera ElastiCache. Para obtener instrucciones acerca de cómo exportar su copia de seguridad, consulte [Exportación de una copia de seguridad](backups-exporting.md).

Los procedimientos siguientes muestran cómo copiar una copia de seguridad.

## Copia de copias de seguridad (consola)
<a name="backups-copying-CON"></a>

**Para copiar una copia de seguridad (consola)**

1. Inicia sesión en Consola de administración de AWS y abre la ElastiCache consola en [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. Para ver una lista de las copias de seguridad, en el panel de navegación izquierdo, elija **Backups (Copias de seguridad)**.

1. En la lista de copias de seguridad, active la casilla situada a la izquierda del nombre de la copia de seguridad que desea copiar.

1. Seleccione **Acciones** y **Copiar**.

1. En el cuadro **New backup name (Nombre del nuevo backup)**, escriba un nombre para la nueva copia de seguridad.

1. Elija **Copiar**.

## Copia de una copia de seguridad sin servidor (AWS CLI)
<a name="backups-copying-CLI"></a>

Para copiar una copia de seguridad de una caché sin servidor, utilice la operación `copy-serverless-cache-snapshot`.

**Parameters**
+ `--source-serverless-cache-snapshot-name`: nombre de la copia de seguridad que se copiará.
+ `--target-serverless-cache-snapshot-name`: nombre de la copia de seguridad.

El ejemplo siguiente realiza una copia de una copia de seguridad automática.

Para Linux, macOS o Unix:

```
aws elasticache copy-serverless-cache-snapshot \
    --source-serverless-cache-snapshot-name automatic.my-cache-2023-11-27-03-15 \
    --target-serverless-cache-snapshot-name my-backup-copy
```

Para Windows:

```
aws elasticache copy-serverless-cache-snapshot ^
    --source-serverless-cache-snapshot-name automatic.my-cache-2023-11-27-03-15 ^
    --target-serverless-cache-snapshot-name my-backup-copy
```

Para obtener más información, consulte [https://docs.aws.amazon.com/cli/latest/reference/elasticache/copy-serverless-cache-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/elasticache/copy-serverless-cache-snapshot.html) en la *AWS CLI*.

## Copia de la copia de seguridad de un clúster basado en nodos (AWS CLI)
<a name="backups-copying-self-designed-CLI"></a>

Para copiar una copia de seguridad de un clúster basado en nodos, utilice la operación `copy-snapshot`.

**Parameters**
+ `--source-snapshot-name`: nombre de la copia de seguridad que se copiará.
+ `--target-snapshot-name`: nombre de la copia de seguridad.
+ `--target-bucket`: reservado para la exportación de la copia de seguridad. No use este parámetro cuando realice una copia de una copia de seguridad. Para obtener más información, consulte [Exportación de una copia de seguridad](backups-exporting.md).

El ejemplo siguiente realiza una copia de una copia de seguridad automática.

Para Linux, macOS o Unix:

```
aws elasticache copy-snapshot  \
    --source-snapshot-name automatic.my-redis-primary-2014-03-27-03-15 \
    --target-snapshot-name amzn-s3-demo-bucket
```

Para Windows:

```
aws elasticache copy-snapshot ^
    --source-snapshot-name automatic.my-redis-primary-2014-03-27-03-15 ^
    --target-snapshot-name amzn-s3-demo-bucket
```

Para obtener más información, consulte [https://docs.aws.amazon.com/cli/latest/reference/elasticache/copy-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/elasticache/copy-snapshot.html) en la *AWS CLI*.

# Exportación de una copia de seguridad
<a name="backups-exporting"></a>

Amazon ElastiCache admite la exportación de su copia de seguridad OSS ElastiCache para Redis a un bucket de Amazon Simple Storage Service (Amazon S3), lo que le permite acceder a ella desde el exterior. ElastiCache Puede exportar una copia de seguridad mediante la ElastiCache consola AWS CLI, la o la ElastiCache API.

Exportar una copia de seguridad puede resultar útil si necesitas lanzar un clúster en otra AWS región. Puede exportar sus datos a una AWS región, copiar el archivo.rdb a la nueva AWS región y, a continuación, usar ese archivo.rdb para almacenar la nueva caché en lugar de esperar a que el nuevo clúster se llene debido al uso. Para obtener información acerca de la propagación de datos en un nuevo clúster, consulte [Tutorial: propagación de un nuevo clúster basado en nodos con una copia de seguridad creada externamente](backups-seeding-redis.md). Otro motivo por el que es posible que desee exportar los datos de su caché es para usar el archivo .rdb para el procesamiento sin conexión.

**importante**  
 La ElastiCache copia de seguridad y el bucket de Amazon S3 en el que desea copiarla deben estar en la misma AWS región.  
Aunque las copias de seguridad copiadas en un bucket de Amazon S3 se encuentran cifradas, recomendamos encarecidamente que no conceda acceso a otras personas al bucket de Amazon S3 en el que desea almacenar las copias de seguridad.
La exportación de una copia de seguridad a Amazon S3 no se admite en clústeres que utilizan la organización de datos en niveles. Para obtener más información, consulte [Organización de datos en niveles en ElastiCache](data-tiering.md).
La exportación de copias de seguridad está disponible para: clústeres de Valkey basados en nodos, clústeres de Redis OSS basados en nodos y cachés sin servidor de Valkey, Memcached y Redis OSS. No se puede exportar una copia de seguridad para los clústeres de Memcached basados en nodos.

Para poder exportar una copia de seguridad a un bucket de Amazon S3, debe tener un bucket de Amazon S3 en la misma AWS región que la copia de seguridad. Conceda ElastiCache acceso al depósito. Los primeros dos pasos muestran cómo realizar esto último.

## Crear un bucket de Amazon S3
<a name="backups-exporting-create-s3-bucket"></a>

En los siguientes pasos, utilice la consola de Amazon S3 para crear un bucket de Amazon S3 en el que exporte y almacene la ElastiCache copia de seguridad.

**Creación de un bucket de Amazon S3**

1. Inicie sesión en la consola de Amazon S3 Consola de administración de AWS y ábrala en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Seleccione la opción **Crear bucket**.

1. En **Create a Bucket - Select a Bucket Name and Region**, haga lo siguiente:

   1. En **Bucket Name** (Nombre del bucket), escriba un nombre para el bucket de Amazon S3.

      El nombre del bucket de Amazon S3 debe estar conforme con DNS. De lo contrario, no ElastiCache podrá acceder al archivo de respaldo. Las reglas para la conformidad con DNS son:
      + Los nombres deben tener un mínimo de 3 y un máximo de 63 caracteres de largo.
      + Los nombres deben ser una serie de una o más etiquetas separadas por un punto (.) en el que cada etiqueta:
        + Comienza por una letra minúscula o un número.
        + Termina con una letra minúscula o un número.
        + Solo contiene letras minúsculas, números y guiones.
      + Los nombres no pueden tener el formato de una dirección IP (por ejemplo, 192.0.2.0).

   1. En la lista de **regiones**, selecciona una AWS región para tu bucket de Amazon S3. Esta AWS región debe ser la misma AWS región que la ElastiCache copia de seguridad que desea exportar.

   1. Seleccione **Crear**.

Para obtener más información sobre la creación de un bucket de Amazon S3, consulte la sección de [Creación de un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingaBucket.html) en la *Guía del usuario de Amazon Simple Storage Service*. 

## Conceda ElastiCache acceso a su bucket de Amazon S3
<a name="backups-exporting-grant-access"></a>

 ElastiCache Para poder copiar una instantánea en un bucket de Amazon S3, debe actualizar su política de bucket de IAM para conceder ElastiCache acceso al bucket. 

**aviso**  
Aunque las copias de seguridad copiadas en un bucket de Amazon S3 se encuentran cifradas, cualquier persona que tenga acceso al bucket de Amazon S3 puede acceder a sus datos. Por tanto, recomendamos encarecidamente que establezca políticas de IAM para impedir el acceso no autorizado a este bucket de Amazon S3. A fin de obtener más información, consulte [Administración del acceso](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html) en la *Guía del usuario de Amazon S3*.

Para crear los permisos adecuados en un bucket de Amazon S3, siga los pasos que se describen a continuación.

**Para conceder ElastiCache acceso a un bucket de S3**

1. Inicie sesión en la consola de Amazon S3 Consola de administración de AWS y ábrala en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Elija el nombre del bucket de Amazon S3 en el que desea copiar la copia de seguridad. Este debe ser el bucket de S3 que creó en [Crear un bucket de Amazon S3](#backups-exporting-create-s3-bucket).

1. Elija la pestaña **Permissions** (Permisos) y debajo **Permissions** (Permisos), elija **Access control list (ACL)** (Lista de control de acceso (ACL)) y luego **Edit** (Editar).

1. Agregue la identificación canónica `540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353` con las siguientes opciones:
   + **Objetos: List (Lista) o Write (Escribir)**
   + **ACL de bucket: Read (Lectura) o Write (Escritura)**
**nota**  
Para la GovCloud región PDT, el identificador canónico es. `40fa568277ad703bd160f66ae4f83fc9dfdfd06c2f1b5060ca22442ac3ef8be6`
Para la GovCloud región OSU, el identificador canónico es. `c54286759d2a83da9c480405349819c993557275cf37d820d514b42da6893f5c`

1. Seleccione **Save**.

## Exportación y copia de seguridad ElastiCache
<a name="backups-exporting-procedures"></a>

Ahora ha creado su bucket de S3 y ha otorgado ElastiCache permisos para acceder a él. A continuación, puede usar la ElastiCache consola, la AWS CLI o la ElastiCache API para exportarle la instantánea. 

A continuación, se muestra un ejemplo del aspecto que tendría la política actualizada.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "Policy15397346",
    "Statement": [
        {
            "Sid": "Stmt15399484",
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::hkg-elasticache-backup",
                "arn:aws:s3:::hkg-elasticache-backup/*"
            ]
        }
    ]
}
```

------

A continuación, se muestra un ejemplo del aspecto que tendría la política de IAM actualizada para el bucket de S3 de las regiones a las que se suscribió. (En este ejemplo se utiliza la región Asia Pacífico (Hong Kong).

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "Policy15397346",
    "Statement": [
        {
            "Sid": "Stmt15399483",
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::hkg-elasticache-backup",
                "arn:aws:s3:::hkg-elasticache-backup/*"
            ]
        },
        {
            "Sid": "Stmt15399484",
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::hkg-elasticache-backup",
                "arn:aws:s3:::hkg-elasticache-backup/*"
            ]
        }
    ]
}
```

------

### Exportación y ElastiCache copia de seguridad (consola)
<a name="backups-exporting-CON"></a>

En los siguientes pasos, se utiliza la ElastiCache consola para exportar una copia de seguridad a un bucket de Amazon S3 para que pueda acceder a ella desde fuera ElastiCache. El bucket de Amazon S3 debe estar en la misma AWS región que la ElastiCache copia de seguridad.

**Para exportar una ElastiCache copia de seguridad a un bucket de Amazon S3**

1. Inicie sesión en Consola de administración de AWS y abra la ElastiCache consola en [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. Para ver una lista de las copias de seguridad, en el panel de navegación izquierdo, elija **Backups (Copias de seguridad)**.

1. De la lista de copias de seguridad, active la casilla situada a la izquierda del nombre de la copia de seguridad que desea exportar. 

1. Elija **Copiar**.

1. En **Create a Copy of the Backup? (¿Desea crear una copia del backup?)**, haga lo siguiente: 

   1. En el cuadro **New backup name (Nombre del nuevo backup)**, escriba un nombre para la nueva copia de seguridad.

      El nombre debe tener entre 1 y 1 000 caracteres y debe admitir la codificación UTF-8.

      ElastiCache añade un identificador de instancia y `.rdb` al valor que introduzcas aquí. Por ejemplo, si especifica `my-exported-backup`, ElastiCache creará `my-exported-backup-0001.rdb`.

   1. Desde la lista de **Target S3 Location** (Ubicación de S3 de destino), elija el nombre del bucket de Amazon S3 al que desea copiar la copia de seguridad (el bucket que creó en [Crear un bucket de Amazon S3](#backups-exporting-create-s3-bucket)).

      La **ubicación S3 de destino** debe ser un depósito de Amazon S3 en la AWS región de la copia de seguridad con los siguientes permisos para que el proceso de exportación se realice correctamente.
      + Acceso al objeto: **Read** (Lectura) y **Write** (Escritura).
      + Permisos de acceso: **lectura**.

      Para obtener más información, consulte [Conceda ElastiCache acceso a su bucket de Amazon S3](#backups-exporting-grant-access). 

   1. Elija **Copiar**.

**nota**  
Si su bucket de S3 no tiene los permisos necesarios ElastiCache para exportar una copia de seguridad a él, recibirá uno de los siguientes mensajes de error. Vuelva a [Conceda ElastiCache acceso a su bucket de Amazon S3](#backups-exporting-grant-access) para añadir los permisos especificados y vuelva a intentar exportar la copia de seguridad.  
ElastiCache no se le han concedido los permisos de LECTURA %s en el bucket de S3.  
**Solución:** añada los permisos Read en el bucket.
ElastiCache no se le han concedido los permisos de ESCRITURA %s en el bucket de S3.  
**Solución:** añada los permisos Write en el bucket.
ElastiCache no se le han concedido los permisos READ\$1ACP %s en el bucket de S3.  
**Solución:** añada **Read** como permiso de acceso en el bucket.

Si desea copiar la copia de seguridad en otra AWS región, utilice Amazon S3 para copiarla. Para obtener más información, consulte [Copia de objetos](https://docs.aws.amazon.com/AmazonS3/latest/userguide/MakingaCopyofanObject.html) en la *Guía del usuario de Amazon Simple Storage Service*.

### Exportación de una copia de seguridad ElastiCache sin servidor ()AWS CLI
<a name="backups-exporting-CLI"></a>

**Exportación de una copia de seguridad de una caché sin servidor**

Exporte la copia de seguridad a un bucket de Amazon S3 con la operación de la CLI `export-serverless-cache-snapshot` con los siguientes parámetros:

**Parameters**
+ `--serverless-cache-snapshot-name`: nombre de la copia de seguridad que se copiará.
+ `--s3-bucket-name`: escriba el nombre del bucket de Amazon S3 donde desea exportar la copia de seguridad. Se realizará una copia de la copia de seguridad en el bucket especificado.

  `--s3-bucket-name`Debe ser un bucket de Amazon S3 en la AWS región de la copia de seguridad con los siguientes permisos para que el proceso de exportación se realice correctamente.
  + Acceso al objeto: **Read** (Lectura) y **Write** (Escritura).
  + Permisos de acceso: **lectura**.

La operación siguiente permite copiar una copia de seguridad en my-s3-bucket.

Para Linux, macOS o Unix:

```
aws elasticache export-serverless-cache-snapshot \
    --serverless-cache-snapshot-name automatic.my-redis-2023-11-27 \
    --s3-bucket-name my-s3-bucket
```

Para Windows:

```
aws elasticache export-serverless-cache-snapshot ^
    --serverless-cache-snapshot-name automatic.my-redis-2023-11-27 ^
    --s3-bucket-name my-s3-bucket
```

### Exportación de una copia de seguridad de un ElastiCache clúster basada en nodos ()AWS CLI
<a name="backups-exporting-self-designed-CON"></a>

**Exportación de una copia de seguridad de un clúster basado en nodos**

Exporte la copia de seguridad a un bucket de Amazon S3 con la operación de la CLI `copy-snapshot` con los siguientes parámetros:

**Parameters**
+ `--source-snapshot-name`: nombre de la copia de seguridad que se copiará.
+ `--target-snapshot-name`: nombre de la copia de seguridad.

  El nombre debe tener entre 1 y 1 000 caracteres y debe admitir la codificación UTF-8.

  ElastiCache añade un identificador de instancia y `.rdb` al valor que introduzcas aquí. Por ejemplo, si especifica `my-exported-backup`, ElastiCache creará `my-exported-backup-0001.rdb`.
+ `--target-bucket`: escriba el nombre del bucket de Amazon S3 donde desea exportar la copia de seguridad. Se realizará una copia de la copia de seguridad en el bucket especificado.

  `--target-bucket`Debe ser un bucket de Amazon S3 en la AWS región de la copia de seguridad con los siguientes permisos para que el proceso de exportación se realice correctamente.
  + Acceso al objeto: **Read** (Lectura) y **Write** (Escritura).
  + Permisos de acceso: **lectura**.

  Para obtener más información, consulte [Conceda ElastiCache acceso a su bucket de Amazon S3](#backups-exporting-grant-access).

La operación siguiente permite copiar una copia de seguridad en my-s3-bucket.

Para Linux, macOS o Unix:

```
aws elasticache copy-snapshot \
    --source-snapshot-name automatic.my-redis-primary-2016-06-27-03-15 \
    --target-snapshot-name my-exported-backup \
    --target-bucket my-s3-bucket
```

Para Windows:

```
aws elasticache copy-snapshot ^
    --source-snapshot-name automatic.my-redis-primary-2016-06-27-03-15 ^
    --target-snapshot-name my-exported-backup ^
    --target-bucket my-s3-bucket
```

# Restauración desde una copia de seguridad a una nueva caché
<a name="backups-restoring"></a>

Puede restaurar una copia de seguridad existente desde Valkey en una nueva caché de Valkey o en un clúster basado en nodos, y restaurar una copia de seguridad de Redis OSS existente en una nueva caché de Redis OSS o en un clúster basado en nodos. También puede restaurar una copia de seguridad de una caché sin servidor de Memcached existente en una nueva caché sin servidor de Memcached. 

## Restauración de una copia de seguridad en una caché sin servidor (consola)
<a name="backups-restoring-CON"></a>

**nota**  
ElastiCache Serverless admite archivos RDB compatibles con Valkey 7.2 y superior, y versiones de Redis OSS entre 5.0 y la última versión disponible.

**Para restaurar una copia de seguridad en una caché sin servidor (consola)**

1. Inicie sesión en Consola de administración de AWS y abra la consola en. ElastiCache [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)

1. En el panel de navegación, seleccione **Backups (Copias de seguridad)**.

1. En la lista de copias de seguridad, active la casilla situada a la izquierda del nombre de la copia de seguridad que desea restaurar.

1. Elija **Acciones** y, a continuación, **Restaurar**.

1. Escriba un nombre para la nueva caché sin servidor y, si lo desea, una descripción.

1. Haga clic en **Crear** para crear la nueva caché e importar los datos de la copia de seguridad.

## Restauración de una copia de seguridad en un clúster basado en nodos (consola)
<a name="backups-restoring-self-designedCON"></a>

**Cómo restaurar una copia de seguridad en un clúster basado en nodos (consola)**

1. Inicie sesión en Consola de administración de AWS y abra la ElastiCache consola en [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. En el panel de navegación, seleccione **Backups (Copias de seguridad)**.

1. En la lista de copias de seguridad, active la casilla situada a la izquierda del nombre de la copia de seguridad que desea restaurar.

1. Elija **Acciones** y, a continuación, **Restaurar**.

1. Elija **Caché basada en nodos** y personalice la configuración del clúster con, por ejemplo, el tipo de nodo, los tamaños, la cantidad de particiones, las réplicas, la ubicación en las zonas de disponibilidad y la configuración de seguridad.

1. Elija **Crear** para crear el nuevo clúster basado en nodos e importar los datos de la copia de seguridad.

## Restauración de una copia de seguridad en una caché sin servidor (AWS CLI)
<a name="backups-restoring-CLI"></a>

**nota**  
ElastiCache Serverless admite archivos RDB compatibles con Valkey 7.2 y versiones posteriores, y versiones de Redis OSS entre la 5.0 y la última versión disponible.

**Para restaurar una copia de seguridad en una caché sin servidor (AWS CLI)**

El siguiente AWS CLI ejemplo crea una nueva caché utilizando `create-serverless-cache` e importa datos de una copia de seguridad. 

Para Linux, macOS o Unix:

```
aws elasticache create-serverless-cache \

    --serverless-cache-name CacheName \
    --engine redis
    --snapshot-arns-to-restore Snapshot-ARN
```

Para Windows:

```
aws elasticache create-serverless-cache ^

    --serverless-cache-name CacheName ^
    --engine redis ^
    --snapshot-arns-to-restore Snapshot-ARN
```

# Eliminación de una copia de seguridad
<a name="backups-deleting"></a>

Las copias de seguridad automáticas se eliminan automáticamente cuando finaliza el límite de retención. Si elimina un clúster, también se eliminarán todas sus copias de seguridad automáticas. Si elimina un grupo de reproducción, también se eliminarán todas las copias de seguridad automáticas de los clústeres de dicho grupo.

ElastiCache proporciona una operación de API de eliminación que le permite eliminar una copia de seguridad en cualquier momento, independientemente de si la copia de seguridad se creó automática o manualmente. Dado que las copias de seguridad manuales no tienen límite de retención, estas copias solo se pueden eliminar de forma manual.

Puede eliminar una copia de seguridad mediante la ElastiCache consola AWS CLI, la ElastiCache API o la consola.

## Eliminación de una copia de seguridad (consola)
<a name="backups-deleting-CON"></a>

El siguiente procedimiento elimina una copia de seguridad mediante la ElastiCache consola.

**Para eliminar una copia de seguridad**

1. Inicie sesión en Consola de administración de AWS y abra la ElastiCache consola en [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. En el panel de navegación, elija **Backups**.

   Aparecerá la pantalla Backups (Copias de seguridad) con una lista de sus copias de seguridad.

1. Elija la casilla situada a la izquierda del nombre de la copia de seguridad que desee eliminar.

1. Elija **Eliminar**.

1. Si desea eliminar este backup, seleccione **Delete** en la pantalla de confirmación **Delete Backup**. El estado cambia a *deleting*.

## Eliminación de una copia de seguridad sin servidor (AWS CLI)
<a name="backups-deleting-serverless-CLI"></a>

Utilice la AWS CLI operación delete-snapshot con el siguiente parámetro para eliminar una copia de seguridad sin servidor.
+ `--serverless-cache-snapshot-name`: nombre de la copia de seguridad que se va a eliminar.

El código siguiente elimina la copia de seguridad `myBackup`.

```
aws elasticache delete-serverless-cache-snapshot --serverless-cache-snapshot-name myBackup
```

Para obtener más información, consulte [delete-serverless-cache-snapshot](https://docs.aws.amazon.com/cli/latest/reference/elasticache/delete-serverless-cache-snapshot.html) en la *Referencia de comandos de la AWS CLI*.

## Eliminación de una copia de seguridad del clúster basado en nodos (AWS CLI)
<a name="backups-deleting-CLI"></a>

Utilice la AWS CLI operación de eliminación de instantáneas con el siguiente parámetro para eliminar una copia de seguridad de un clúster basada en nodos.
+ `--snapshot-name`: nombre de la copia de seguridad que se va a eliminar.

El código siguiente elimina la copia de seguridad `myBackup`.

```
aws elasticache delete-snapshot --snapshot-name myBackup
```

Para obtener más información, consulte [delete-snapshot](https://docs.aws.amazon.com/cli/latest/reference/elasticache/delete-snapshot.html) en la *Referencia de comandos de la AWS CLI*.

# Etiquetado de copias de seguridad
<a name="backups-tagging"></a>

Puede asignar sus propios metadatos a cada copia de seguridad en forma de etiquetas. Las etiquetas permiten clasificar las copias de seguridad de diversas maneras, por ejemplo, según su finalidad, propietario o entorno. Esto es útil cuando tiene muchos recursos del mismo tipo: puede identificar rápidamente un recurso específico en función de las etiquetas que le haya asignado. Para obtener más información, consulte [Recursos que se pueden etiquetar](Tagging-Resources.md#Tagging-your-resources).

Las etiquetas de asignación de costos permiten realizar un seguimiento de los costos de varios servicios de AWS al agrupar los gastos de las facturas por valores de etiqueta. Para obtener más información sobre las etiquetas de asignación de costos, consulte [Uso de etiquetas de asignación de costos](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html).

Utilice la consola de ElastiCache, la AWS CLI o la API de ElastiCache para agregar, mostrar, modificar, eliminar o copiar las etiquetas de asignación de costos en sus copias de seguridad. Para obtener más información, consulte [Monitoreo de costos con etiquetas de asignación de costos](Tagging.md).

# Tutorial: propagación de un nuevo clúster basado en nodos con una copia de seguridad creada externamente
<a name="backups-seeding-redis"></a>

Si crea un nuevo clúster basado en nodos de Valkey o Redis OSS, puede propagarlo con datos de un archivo de copia de seguridad .rdb de Valkey o Redis OSS. La inicialización del clúster es útil si actualmente administra una instancia de OSS de Valkey o Redis desde fuera ElastiCache y desea rellenar su nuevo clúster basado en nodos de OSS ElastiCache para Redis con sus datos de OSS de Valkey o Redis existentes.

Para iniciar un nuevo clúster basado en nodos de Valkey o Redis OSS a partir de una copia de seguridad de Valkey o Redis OSS creada en Amazon, consulte. ElastiCache [Restauración desde una copia de seguridad a una nueva caché](backups-restoring.md)

Cuando use un archivo .rdb de Valkey o Redis OSS para propagar un nuevo clúster basado en nodos, podrá hacer lo siguiente:
+ Actualizar desde un clúster no particionado a un clúster basado en nodos de Valkey o Redis OSS (modo de clúster habilitado) que ejecute la versión 3.2.4 de Redis OSS.
+ Especificar un número de particiones (denominadas “grupos de nodos” en la API y la CLI) en el nuevo clúster basado en nodos. Este número puede ser distinto del número de particiones del clúster basado en nodos que se utilizó para crear el archivo de copia de seguridad.
+ Especificar un tipo de nodo distinto para el nuevo clúster basado en nodos, más grande o más pequeño que el que se utilizó en el clúster que creó la copia de seguridad. Si escala a un tipo de nodo más pequeño, asegúrese de que el nuevo tipo de nodo tenga suficiente memoria para los datos y la sobrecarga de Valkey o Redis OSS. Para obtener más información, consulte [Forma de garantizar que dispone de memoria suficiente para crear una instantánea de Valkey o Redis OSS](BestPractices.BGSAVE.md).
+ Distribuya las claves en las ranuras del nuevo clúster de Valkey o Redis OSS (modo de clúster habilitado) de manera distinta que en el clúster que se utilizó para crear el archivo de copia de seguridad.

**nota**  
No puede inicializar un clúster de Valkey o Redis OSS (modo de clúster deshabilitado) a partir de un archivo .rdb creado con un clúster de Valkey o Redis OSS (modo de clúster habilitado).

**importante**  
Debe asegurarse de que los datos de la copia de seguridad de Valkey o Redis OSS no superen los recursos del nodo. Por ejemplo, no puede cargar un archivo .rdb con 5 GB de datos de Valkey o Redis OSS a un nodo cache.m3.medium que tenga 2,9 GB de memoria.  
Si la copia de seguridad es demasiado grande, el clúster resultante tendrá el estado `restore-failed`. Si esto ocurre, deberá eliminar el clúster y empezar de nuevo.  
Para obtener una lista completa de los tipos y especificaciones de los nodos, consulta las [características [Parámetros específicos de tipos de nodos de Redis OSS](ParameterGroups.Engine.md#ParameterGroups.Redis.NodeSpecific) y detalles de los ElastiCache productos de Amazon](https://aws.amazon.com/elasticache/details/).
Solo puede cifrar un archivo .rdb de Valkey o Redis OSS con cifrado del servidor de Amazon S3 (SSE-S3). Para obtener más información, consulte [Protección de los datos con el cifrado del servidor](https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html).

A continuación, encontrará temas que le ayudarán a migrar su clúster desde fuera ElastiCache para Valkey o Redis OSS a ElastiCache Redis OSS.

**Topics**
+ [Paso 1: crear una copia de seguridad de Valkey o Redis OSS](#backups-seeding-redis-create-backup)
+ [Paso 2: crear un bucket y una carpeta de Amazon S3](#backups-seeding-redis-create-s3-bucket)
+ [Paso 3: cargar la copia de seguridad a Amazon S3](#backups-seeding-redis-upload)
+ [Paso 4: Otorgue acceso de ElastiCache lectura al archivo.rdb](#backups-seeding-redis-grant-access)

**Topics**
+ [Paso 1: crear una copia de seguridad de Valkey o Redis OSS](#backups-seeding-redis-create-backup)
+ [Paso 2: crear un bucket y una carpeta de Amazon S3](#backups-seeding-redis-create-s3-bucket)
+ [Paso 3: cargar la copia de seguridad a Amazon S3](#backups-seeding-redis-upload)
+ [Paso 4: Otorgue acceso de ElastiCache lectura al archivo.rdb](#backups-seeding-redis-grant-access)

## Paso 1: crear una copia de seguridad de Valkey o Redis OSS
<a name="backups-seeding-redis-create-backup"></a>

**Para crear la copia de seguridad de Valkey o Redis OSS para iniciar su ElastiCache instancia de OSS para Redis**

1. Conéctese a su instancia de Valkey o Redis OSS existente.

1. Ejecute la operación `BGSAVE` o `SAVE` para crear una copia de seguridad. Tenga en cuenta la ubicación de su archivo .rdb.

   `BGSAVE` es una operación asincrónica y no bloquea otros clientes durante el procesamiento. Para obtener más información, consulte la operación [BGSAVE](https://valkey.io/commands/bgsave) en el sitio web de Valkey.

   `SAVE` es una operación sincrónica y bloquea otros procesos hasta que finalice. Para obtener más información, consulte la operación [SAVE](https://valkey.io/commands/save) en el sitio web de Valkey.

Para obtener más información adicional acerca de la creación de copias de seguridad, consulte [Persistence](https://valkey.io/topics/persistence) en el sitio web de Valkey.

## Paso 2: crear un bucket y una carpeta de Amazon S3
<a name="backups-seeding-redis-create-s3-bucket"></a>

Una vez que se crea el archivo de copia de seguridad, deberá cargarlo en una carpeta de un bucket de Amazon S3. Para ello, primero debe disponer de un bucket de Amazon S3 y de una carpeta en dicho bucket. Si ya dispone de un bucket de Amazon S3 y una carpeta con los permisos pertinentes, puede pasar a [Paso 3: cargar la copia de seguridad a Amazon S3](#backups-seeding-redis-upload).

**Creación de un bucket de Amazon S3**

1. Inicie sesión en la consola de Amazon S3 Consola de administración de AWS y ábrala en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Siga las instrucciones para crear un bucket de Amazon S3 en [Creación de un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) en la *Guía del usuario de Amazon Simple Storage Service*.

   El nombre del bucket de Amazon S3 debe estar conforme con DNS. De lo contrario, no ElastiCache podrá acceder al archivo de respaldo. Las reglas para la conformidad con DNS son:
   + Los nombres deben tener un mínimo de 3 y un máximo de 63 caracteres de largo.
   + Los nombres deben ser una serie de una o más etiquetas separadas por un punto (.) en el que cada etiqueta:
     + Comienza por una letra minúscula o un número.
     + Termina con una letra minúscula o un número.
     + Solo contiene letras minúsculas, números y guiones.
   + Los nombres no pueden tener el formato de una dirección IP (por ejemplo, 192.0.2.0).

   Debe crear su bucket de Amazon S3 en la misma AWS región que su nuevo clúster OSS ElastiCache para Redis. Este enfoque garantiza la máxima velocidad de transferencia de datos al ElastiCache leer el archivo.rdb de Amazon S3.
**nota**  
Para conservar la máxima seguridad de los datos, asegúrese de que los permisos de su bucket de Amazon S3 sean lo más restrictivos posible. Al mismo tiempo, los permisos seguirán teniendo que permitir que se utilicen el bucket y su contenido para inicializar su nuevo clúster de Valkey o Redis OSS.

**Para agregar una carpeta a un bucket de Amazon S3**

1. Inicie sesión en la consola de Amazon S3 Consola de administración de AWS y ábrala en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Elija el nombre del bucket en el que va a cargar el archivo .rdb.

1. Elija **Crear carpeta**.

1. Escriba un nombre para la nueva carpeta.

1. Seleccione **Save**.

   Anote el nombre del bucket y el nombre de la carpeta.

## Paso 3: cargar la copia de seguridad a Amazon S3
<a name="backups-seeding-redis-upload"></a>

Ahora, cargue el archivo .rdb que creó en [Paso 1: crear una copia de seguridad de Valkey o Redis OSS](#backups-seeding-redis-create-backup). Cárguelo en el bucket de Amazon S3 y la carpeta que creó en [Paso 2: crear un bucket y una carpeta de Amazon S3](#backups-seeding-redis-create-s3-bucket). Para obtener más información sobre esta tarea, consulte [Agregar un objeto a un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html). Entre los pasos 2 y 3, elija el nombre de la carpeta que creó.

**Para cargar el archivo .rdb a una carpeta de Amazon S3**

1. Inicie sesión en la consola de Amazon S3 Consola de administración de AWS y ábrala en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Elija el nombre del bucket de Amazon S3 que creó en el paso 2.

1. Elija el nombre de la carpeta que creó en el paso 2.

1. Seleccione **Cargar**.

1. Elija **Add files**.

1. Examine el archivo o los archivos que desea cargar y, a continuación, elija el archivo o los archivos. Para elegir varios archivos, mantenga pulsada la tecla Ctrl al mismo tiempo que selecciona un nombre de archivo.

1. Elija **Open**.

1. Asegúrese de que se muestran los archivos correctos en el cuadro de diálogo **Upload** y, a continuación, elija **Upload**.

Escriba la ruta del archivo .rdb. Por ejemplo, si el nombre del bucket es `myBucket` y la ruta es `myFolder/redis.rdb`, escriba `myBucket/myFolder/redis.rdb`. Necesitará esta ruta para propagar en el nuevo clúster los datos de la copia de seguridad.

Para obtener más información, consulte [Restricciones y limitaciones de los buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html) en la *Guía del usuario de Amazon Simple Storage Service*.

## Paso 4: Otorgue acceso de ElastiCache lectura al archivo.rdb
<a name="backups-seeding-redis-grant-access"></a>

Ahora, conceda acceso de ElastiCache lectura a su archivo de copia de seguridad .rdb. El ElastiCache acceso al archivo de copia de seguridad se concede de una forma diferente en función de si el depósito se encuentra en una AWS región predeterminada o en una región opcional AWS.

AWS Las regiones introducidas antes del 20 de marzo de 2019 están habilitadas de forma predeterminada. Puede empezar a trabajar en estas AWS regiones de forma inmediata. Las regiones que se presentaron después del 20 de marzo de 2019, como Asia-Pacífico (Hong Kong) y Medio Oriente (Baréin), se encuentran deshabilitadas de forma predeterminada. Debe habilitar o suscribirse a estas regiones antes de poder utilizarlas, tal y como se describe en [Administración de regiones de AWS](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html) en *Referencia general de AWS*.

Elija su enfoque en función de su AWS región:
+ Para una región predeterminada, utilice el procedimiento de [Conceda acceso de ElastiCache lectura al archivo.rdb en una región predeterminada](#backups-seeding-redis-default-region).
+ Para una región con suscripción, utilice el procedimiento de [Otorgue acceso de ElastiCache lectura al archivo.rdb en una región incluida](#backups-seeding-opt-in-region).

### Conceda acceso de ElastiCache lectura al archivo.rdb en una región predeterminada
<a name="backups-seeding-redis-default-region"></a>

AWS Las regiones introducidas antes del 20 de marzo de 2019 están habilitadas de forma predeterminada. Puede empezar a trabajar en estas AWS regiones de forma inmediata. Las regiones que se presentaron después del 20 de marzo de 2019, como Asia-Pacífico (Hong Kong) y Medio Oriente (Baréin), se encuentran deshabilitadas de forma predeterminada. Debe habilitar o suscribirse a estas regiones antes de poder utilizarlas, tal y como se describe en [Administración de regiones de AWS](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html) en *Referencia general de AWS*.

**Conceder el acceso de ElastiCache lectura al archivo de respaldo en una AWS región, está activado de forma predeterminada**

1. Inicie sesión en la consola de Amazon S3 Consola de administración de AWS y ábrala en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Elija el nombre del bucket de S3 que contiene su archivo .rdb.

1. Elija el nombre de la carpeta que contiene su archivo .rdb.

1. Elija el nombre de su archivo de copia de seguridad .rdb. El nombre del archivo seleccionado aparecerá encima de las pestañas, en la parte superior de la página.

1. Elija **Permisos**.

1. Si **aws-scs-s3-readonly** o uno de los canónicos de IDs la siguiente lista no aparece como usuario, haga lo siguiente:

   1. **En **Acceso para otras AWS cuentas**, selecciona Añadir beneficiario.**

   1. En el cuadro, añade el ID canónico de la AWS región, tal y como se muestra a continuación:
      + AWS GovCloud Región (EE. UU.-Oeste): 

        ```
        40fa568277ad703bd160f66ae4f83fc9dfdfd06c2f1b5060ca22442ac3ef8be6
        ```
**importante**  
La copia de seguridad debe estar ubicada en un bucket de S3 AWS GovCloud (US) para poder descargarla en un clúster de OSS de Valkey o Redis.AWS GovCloud (US)
      + AWS Regiones habilitadas de forma predeterminada: 

        ```
        540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353
        ```

   1. Establezca los permisos en el bucket eligiendo **Yes (Sí)** para los valores siguientes:
      + **Objetos List (Lista) o Write (Escribir)**
      + **Read/write object ACL permissions** (Permisos de lectura y escritura de ACL)

   1. Seleccione **Save**.

1. Elija **Overview (Información general)** y, a continuación, elija **Download (Descargar)**.

### Otorgue acceso de ElastiCache lectura al archivo.rdb en una región incluida
<a name="backups-seeding-opt-in-region"></a>

AWS Las regiones introducidas antes del 20 de marzo de 2019 están habilitadas de forma predeterminada. Puede empezar a trabajar en estas AWS regiones de forma inmediata. Las regiones que se presentaron después del 20 de marzo de 2019, como Asia-Pacífico (Hong Kong) y Medio Oriente (Baréin), se encuentran deshabilitadas de forma predeterminada. Debe habilitar o suscribirse a estas regiones antes de poder utilizarlas, tal y como se describe en [Administración de regiones de AWS](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html) en *Referencia general de AWS*.

Ahora, conceda acceso de ElastiCache lectura a su archivo de respaldo .rdb. 

**Para conceder acceso de ElastiCache lectura al archivo de copia de seguridad**

1. Inicie sesión en la consola de Amazon S3 Consola de administración de AWS y ábrala en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Elija el nombre del bucket de S3 que contiene su archivo .rdb.

1. Elija el nombre de la carpeta que contiene su archivo .rdb.

1. Elija el nombre de su archivo de copia de seguridad .rdb. El nombre del archivo seleccionado aparecerá encima de las pestañas, en la parte superior de la página.

1. Elija la pestaña **Permisos**.

1. En **Permissions** (Permisos), elija **Bucket policy** (Política de bucket), y luego **Edit** (Editar).

1. Actualice la política para conceder los permisos ElastiCache necesarios para realizar operaciones:
   + Agregue `[ "Service" : "region-full-name.elasticache-snapshot.amazonaws.com" ]` a `Principal`.
   + Agregue los siguientes permisos necesarios para exportar una instantánea al bucket de Amazon S3: 
     + `"s3:GetObject"`
     + `"s3:ListBucket"`
     + `"s3:GetBucketAcl"`

   A continuación, se muestra un ejemplo del aspecto que tendría la política actualizada.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Id": "Policy15397346",
       "Statement": [
           {
               "Sid": "Stmt15399483",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:ListBucket",
                   "s3:GetBucketAcl"
               ],
               "Resource": [
                   "arn:aws:s3:::amzn-s3-demo-bucket",
                   "arn:aws:s3:::amzn-s3-demo-bucket/backup1.rdb",
                   "arn:aws:s3:::amzn-s3-demo-bucket/backup2.rdb"
               ]
           }
       ]
   }
   ```

------

1. Seleccione **Save changes (Guardar cambios)**.

### Siembre el ElastiCache clúster con los datos del archivo.rdb
<a name="backups-seeding-redis-seed-cluster"></a>

Ahora está listo para crear un ElastiCache clúster e iniciarlo con los datos del archivo.rdb. Para crear el clúster, siga las instrucciones que se detallan en [Creación de un clúster para Valkey o Redis OSS](Clusters.Create.md) o [Creación de un grupo de replicación de Valkey o Redis OSS desde cero](Replication.CreatingReplGroup.NoExistingCluster.md). Asegúrese de elegir Valkey o Redis OSS como motor del clúster.

El método que utilice para saber ElastiCache dónde encontrar la copia de seguridad que cargó en Amazon S3 depende del método que utilice para crear el clúster:

**Inserte el ElastiCache clúster OSS o el grupo de replicación de Redis con los datos del archivo.rdb**
+ **Uso de la consola ElastiCache **

  Al seleccionar la **Cluster settings** (Configuración del clúster), elija **Restore from backups** (Restaurar a partir de copias de seguridad) como método de creación del clúster y, a continuación, elija **Other backups** (Otras copias de seguridad) como **Source** (Origen) en la sección **Backup source** (Origen de copias de seguridad). En el cuadro **Seed RDB file S3 location** (Inicializar ubicación de S3 del archivo RDB), escriba la ruta de Amazon S3 de los archivos. Si tiene varios archivos.rdb, escriba la ruta para cada archivo en una lista separada por comas. La ruta de Amazon S3 tendrá un aspecto similar a `myBucket/myFolder/myBackupFilename.rdb`.
+ **Uso del AWS CLI**

  Si usa la operación `create-cache-cluster` o `create-replication-group`, use el parámetro `--snapshot-arns` para especificar un ARN completo para cada archivo .rdb. Por ejemplo, `arn:aws:s3:::myBucket/myFolder/myBackupFilename.rdb`. El ARN debe resolverse en los archivos de copia de seguridad que almacenó en Amazon S3.
+ **Uso de la ElastiCache API**

  Si utiliza la operación `CreateCacheCluster` o la `CreateReplicationGroup` ElastiCache API, utilice el parámetro `SnapshotArns` para especificar un ARN totalmente cualificado para cada archivo.rdb. Por ejemplo, `arn:aws:s3:::myBucket/myFolder/myBackupFilename.rdb`. El ARN debe resolverse en los archivos de copia de seguridad que almacenó en Amazon S3.

**importante**  
Al inicializar un clúster de Valkey o Redis OSS (modo de clúster habilitado), debe configurar cada grupo de nodos (partición) del nuevo clúster o grupo de replicación. Para ello, utilice el parámetro `--node-group-configuration` (API: `NodeGroupConfiguration`). Para obtener más información, consulte los siguientes temas:  
CLI: [create-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/create-replication-group.html)en la AWS CLI referencia
API: [CreateReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateReplicationGroup.html)en la referencia de la ElastiCache API

Durante el proceso de creación de su clúster, los datos de su copia de seguridad de Valkey o Redis OSS se escribirán en el clúster. Puede supervisar el progreso viendo los mensajes del ElastiCache evento. Para ello, ve a la ElastiCache consola y selecciona **Caché los eventos**. También puede utilizar la interfaz de línea de AWS ElastiCache comandos o la ElastiCache API para obtener los mensajes de eventos. Para obtener más información, consulte [Visualización de ElastiCache eventos](ECEvents.Viewing.md).

# Versiones de motores y actualizaciones en ElastiCache
<a name="engine-versions"></a>

En esta sección, se detallan los motores admitidos de Valkey, Memcached y Redis OSS y se explica cómo actualizarlos. Tenga en cuenta que todas las características de Redis OSS 7.2 están disponibles en Valkey 7.2 y versiones posteriores de forma predeterminada. También puede actualizar algunos motores OSS existentes ElastiCache para Redis a un motor Valkey.

# Actualización de las versiones del motor, incluidas las actualizaciones de varios motores
<a name="VersionManagement.HowTo"></a>

**Valkey y Redis OSS**

Con Valkey y Redis OSS, las actualizaciones de versiones de su clúster o grupo de replicación se inician al realizar modificaciones con la consola de ElastiCache, la AWS CLI o la API de ElastiCache y al especificar una versión del motor más reciente. 

También puede realizar una actualización de varias versiones de Redis OSS a Valkey. Para obtener más información sobre la actualización de varias versiones, consulte [Cómo actualizar de Redis OSS a Valkey](#VersionManagement.HowTo.cross-engine-upgrade).

**Topics**
+ [Cómo actualizar de Redis OSS a Valkey](#VersionManagement.HowTo.cross-engine-upgrade)
+ [Resolución de actualizaciones bloqueadas del motor de Valkey o Redis OSS](#resolving-blocked-engine-upgrades)


****  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/VersionManagement.HowTo.html)

**Memcached**

Con Memcached, para comenzar las actualizaciones de versiones en su clúster, modifíquelo y especifique una versión del motor más reciente. Para ello, puede utilizar la consola de ElastiCache, la AWS CLI o la API de ElastiCache:
+ Para utilizar la Consola de administración de AWS, consulte: [Uso de la Consola de administración de AWS de ElastiCache](Clusters.Modify.md#Clusters.Modify.CON).
+ Para utilizar la AWS CLI, consulte [Uso de la AWS CLI con ElastiCache](Clusters.Modify.md#Clusters.Modify.CLI).
+ Para utilizar la API de ElastiCache, consulte [Uso de la API de ElastiCache](Clusters.Modify.md#Clusters.Modify.API).

## Cómo actualizar de Redis OSS a Valkey
<a name="VersionManagement.HowTo.cross-engine-upgrade"></a>

Valkey está diseñado como un sustituto directo de Redis OSS 7. Puede actualizar de Redis OSS a Valkey mediante la consola, la API o la CLI, especificando el nuevo motor y la versión principal del motor. La actualización no modificará la dirección IP del punto de conexión ni ningún otro aspecto de la aplicación. Al actualizar desde Redis OSS 5.0.6 y versiones posteriores, no experimentará ningún tiempo de inactividad. 

**nota**  
**Requisitos de la versión de la CLI de AWS para las actualizaciones de Redis OSS a Valkey:**  
Para la versión 1 de la CLI de AWS: versión mínima requerida 1.35.2 (versión actual: 1.40.22)
Para la versión 2 de la CLI de AWS: versión mínima requerida 2.18.2 (versión actual: 2.27.22)

**nota**  
Al actualizar desde una versión anterior a la 5.0.6 de Redis OSS, es posible que se produzca un tiempo de conmutación por error de 30 a 60 segundos durante la propagación del DNS.
Si desea actualizar un clúster de un solo nodo de Redis OSS (modo de clúster deshabilitado) existente al motor de Valkey, primero debe seguir estos pasos: [Creación de un grupo de reproducción mediante un clúster existente](Replication.CreatingReplGroup.ExistingCluster.md). Después de añadir el clúster de un solo nodo de Redis OSS (modo de clúster deshabilitado) en un grupo de replicación, puede actualizar desde varios motores a Valkey.

### Actualización de un grupo de replicación de Redis OSS a Valkey
<a name="cross-engine-upgrades.replication-group"></a>

Si ya tiene un grupo de replicación de Redis OSS que está utilizando el grupo de parámetros de caché predeterminado, puede actualizarlo a Valkey especificando el nuevo motor y la versión del motor con la API modify-replication-group.

Para Linux, macOS o Unix:

```
aws elasticache modify-replication-group \
   --replication-group-id myReplGroup \
   --engine valkey \
   --engine-version 8.0
```

Para Windows:

```
aws elasticache modify-replication-group ^
   --replication-group-id myReplGroup ^
   --engine valkey ^
   --engine-version 8.0
```

Si tiene un grupo de parámetros de caché personalizado aplicado al grupo de replicación de Redis OSS existente que desea actualizar, también tendrá que incluir un grupo de parámetros de caché de Valkey personalizado en la solicitud. El grupo de parámetros personalizados de Valkey introducido debe tener los mismos valores de parámetros estáticos de Redis OSS que el grupo de parámetros personalizados de Redis OSS existente.

Para Linux, macOS o Unix:

```
aws elasticache modify-replication-group \
   --replication-group-id myReplGroup \
   --engine valkey \
   --engine-version 8.0 \
   --cache-parameter-group-name myParamGroup
```

Para Windows:

```
aws elasticache modify-replication-group ^
   --replication-group-id myReplGroup ^
   --engine valkey ^
   --engine-version 8.0 ^
   --cache-parameter-group-name myParamGroup
```

### Actualización de una caché sin servidor de Redis OSS a Valkey con la CLI
<a name="cross-engine-upgrades.cli"></a>

Para Linux, macOS o Unix:

```
aws elasticache modify-serverless-cache \
   --serverless-cache-name myCluster \
   --engine valkey \
   --major-engine-version 8
```

Para Windows:

```
aws elasticache modify-serverless-cache ^
   --serverless-cache-name myCluster ^
   --engine valkey ^
   --major-engine-version 8
```

### Actualización de Redis OSS a Valkey con la consola
<a name="cross-engine-upgrades.console"></a>

**Actualización desde Redis OSS 5 a Valkey**

1. Seleccione la caché de Redis OSS que desea actualizar.

1. Debería aparecer la ventana **Actualice a Valkey**. Seleccione el botón **Actualice a Valkey**.

1. Vaya a **Configuración de la caché** y, a continuación, seleccione **Versión del motor**. Se recomienda utilizar la versión más reciente de Valkey.

1. Si esta caché es sin servidor, tendrá que actualizar el grupo de parámetros. Vaya al área **Grupos de parámetros** de la **Configuración de la caché** y seleccione un grupo de parámetros adecuado, como *default.valkey8*.

1. Seleccione **Actualizar**.

Esta caché ahora aparecerá en el área de Valkey de la consola.

**nota**  
La actualización directa desde Redis OSS 4 o una versión anterior a Valkey puede incluir un tiempo de conmutación por error mayor, de 30 a 60 segundos, durante la propagación del DNS.

### Cómo cambiar a una versión menor desde Valkey a Redis OSS
<a name="cross-engine-downgrades.console"></a>

 Si por alguna razón desea revertir la actualización del clúster, Amazon ElastiCache admite la reversión de una caché de Valkey 7.2 a Redis OSS 7.1. Puede revertir siguiendo los mismos pasos de la consola, la API o la CLI que en una actualización del motor y especificando Redis OSS 7.1 como la versión del motor de destino. Las reversiones utilizan los mismos procesos que los de una actualización. La reversión no modificará la dirección IP del punto de conexión ni todos los demás aspectos de la aplicación y tampoco se generará tiempo de inactividad. 

 Además, puede restaurar una instantánea creada a partir de la caché de Valkey 7.2 como una caché de Redis OSS 7.1. Al restaurar a partir de una instantánea, puede especificar Redis OSS 7.1 como la versión del motor de destino. Al utilizar esta opción, se creará una nueva caché a partir de la instantánea. La restauración a partir de una instantánea no afecta a la caché de Valkey desde la que se creó la instantánea. 

 Al revertir, se aplican los siguientes requisitos y limitaciones: 
+  ElastiCache solo admite la reversión desde Valkey 7.2 a Redis OSS 7.1. Esto es cierto incluso si ha actualizado a Valkey 7.2 desde una versión anterior a Redis OSS 7.1. 
+  Todos los grupos de usuarios y usuarios asociados al grupo de replicación o a la caché sin servidor que se va a revertir deben configurarse con el tipo de motor `REDIS`. 

## Resolución de actualizaciones bloqueadas del motor de Valkey o Redis OSS
<a name="resolving-blocked-engine-upgrades"></a>

Tal y como se muestra en la siguiente tabla, la operación de actualización del motor de Valkey o Redis OSS se bloqueará si tiene una operación de escalado vertical pendiente.


****  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/VersionManagement.HowTo.html)

**Cómo resolver una actualización del motor de Valkey o Redis OSS bloqueada**
+ Realice una de las siguientes acciones:
  + Programe la operación de actualización del motor de Redis OSS o Valkey para el siguiente periodo de mantenimiento desactivando la casilla de verificación **Aplicar inmediatamente**. 

    Con la CLI, utilice `--no-apply-immediately`. Con la API, utilice `ApplyImmediately=false`.
  + Espere al siguiente periodo de mantenimiento (o después) para realizar la operación de actualización del motor de Redis OSS.
  + Añada la operación de escalado vertical de Redis OSS a esta modificación de clúster con la casilla de verificación **Aplicar inmediatamente** activada. 

    Con la CLI, utilice `--apply-immediately`. Con la API, utilice `ApplyImmediately=true`. 

    Con este enfoque, la actualización del motor se realizará inmediatamente, por lo que quedará cancelada para el siguiente periodo de mantenimiento.

# Soporte extendido de ElastiCache
<a name="extended-support"></a>

Con el soporte extendido de ElastiCache, puede seguir ejecutando su caché en una versión principal del motor después de la fecha de finalización del soporte estándar por un precio adicional. Si no actualiza después de la fecha de finalización del soporte estándar, se le cobrará. 

El soporte extendido ofrece las siguientes actualizaciones y soporte técnico:
+ Actualizaciones de seguridad para las CVE críticas y elevadas para la caché y el motor de la caché
+ Correcciones de errores y parches para problemas críticos
+ Posibilidad de abrir casos de soporte y recibir ayuda para la solución de problemas según el acuerdo de nivel de servicio de ElastiCache

Esta oferta de pago le da más tiempo para llevar a cabo la actualización a una versión principal del motor compatible. 

Por ejemplo, la fecha de finalización del soporte estándar de ElastiCache para Redis OSS 4.0.10 es el 31 de enero de 2026. Si no se ha preparado para actualizar manualmente a Valkey o a Redis OSS 6 o posterior antes de esa fecha, ElastiCache inscribirá automáticamente sus cachés en el soporte extendido y podrá seguir ejecutando Redis OSS 4.0.10. A partir del primer día del mes siguiente a la finalización del soporte estándar, el 1 de febrero de 2026, ElastiCache le cobrará automáticamente por el soporte extendido.

El soporte extendido está disponible durante un máximo de 3 años después de la fecha de finalización del soporte estándar para una versión principal del motor. En el caso de las versiones 4 y 5 de ElastiCache para Redis OSS, será el 31 de enero de 2029. Después de esta fecha, todas las cachés que sigan ejecutando las versiones 4 y 5 de Redis OSS se actualizarán automáticamente a la última versión de Valkey.

Cuando finalice el período de soporte de un motor, las cachés que sigan ejecutando esa versión anterior pasarán automáticamente al soporte extendido. Se le notificará antes de la fecha de inicio de los precios de soporte extendido para que, en su lugar, pueda actualizar su instancia. También puede renunciar de forma explícita en cualquier momento actualizándola a las versiones compatibles.

Para obtener más información sobre las fechas de finalización del soporte estándar y las fechas de finalización del soporte extendido, consulte [ElastiCache calendario de fin de vida de las versiones para Redis OSS](engine-versions.md#deprecated-engine-versions) para Valkey, Memcached o Redis OSS.

**Topics**
+ [Precios del soporte extendido de ElastiCache](extended-support-charges.md)
+ [Versiones con el soporte extendido de ElastiCache](extended-support-versions.md)
+ [ElastiCache y las responsabilidades del cliente con el soporte extendido de ElastiCache](extended-support-responsibilities.md)

# Precios del soporte extendido de ElastiCache
<a name="extended-support-charges"></a>

Todos los motores inscritos en el soporte extendido de ElastiCache incurrirán en cargos a partir del día siguiente a la fecha de finalización del soporte estándar. Para conocer la fecha de finalización del soporte estándar de ElastiCache, consulte [Versiones con el soporte extendido de ElastiCache](extended-support-versions.md).

El cargo adicional del soporte extendido de ElastiCache se detendrá automáticamente si realiza una de las siguientes acciones:
+ Actualizar a una versión de motor incluida en el soporte estándar.
+ Eliminar la caché en la que se ejecuta una versión principal pasada la fecha de finalización del soporte estándar de ElastiCache.

Los cargos se reiniciarán si la versión del motor de destino se incluye en el soporte extendido de ElastiCache en el futuro.

Por ejemplo, supongamos que la versión 4 de ElastiCache para Redis OSS entra en el soporte extendido el 1 de febrero de 2026 y que usted actualiza las cachés de la versión 4 a la versión 6 el 1 de enero de 2027. Solo se le cobrarán 11 meses de soporte extendido de la versión 4 de ElastiCache para Redis OSS. Si continúa ejecutando la versión 6 de ElastiCache para Redis OSS después de la fecha de finalización del soporte estándar, que es el 31 de enero de 2027, esas cachés volverán a incurrir en cargos por el soporte extendido a partir del 1 de febrero de 2027.

Puede evitar que se le cobre por el soporte extendido de ElastiCache impidiendo que ElastiCache cree o restaure una caché pasada la fecha de finalización del soporte estándar de ElastiCache.

Para obtener más información, consulte [Precios de Amazon ElastiCache](https://aws.amazon.com/elasticache/pricing/).

# Versiones con el soporte extendido de ElastiCache
<a name="extended-support-versions"></a>

Las versiones 4 y 5 del software de código abierto (OSS) de Redis llegaron al final de su vida útil en la comunidad en 2020 y 2022, respectivamente. Esto significa que la comunidad no lanzará más actualizaciones, correcciones de errores ni parches de seguridad. El soporte estándar para las versiones 4 y 5 de ElastiCache Redis OSS en ElastiCache finalizará el 31 de enero de 2026. Si continúa utilizando versiones no compatibles de Redis OSS, sus datos podrían quedar expuestos a [Vulnerabilidades y exposiciones comunes](https://nvd.nist.gov/vuln-metrics/cvss) (CVE) conocidas.

A partir del 1 de febrero de 2026, las cachés de ElastiCache que aún se estén ejecutando en las versiones 4 y 5 de Redis OSS se inscribirán automáticamente en el soporte extendido para ofrecer disponibilidad y seguridad continuas. Si bien el soporte extendido ofrece flexibilidad, recomendamos considerar el final del soporte estándar como un hito en la planificación de sus cargas de trabajo de producción. Le recomendamos encarecidamente que actualice sus cachés de Redis OSS versión 4 y 5 a ElastiCache para Valkey o Redis OSS versión 6 o posterior, antes de que finalice el soporte estándar.

En la siguiente tabla se muestra la fecha de finalización del soporte estándar de Amazon ElastiCache y las fechas del soporte extendido.

**Programación del soporte extendido y del fin de la vida útil**


| Versión principal del motor | Fecha de finalización del soporte estándar | Inicio del soporte extendido Y1 Premium | Inicio del soporte extendido Y2 Premium | Inicio del soporte extendido Y3 Premium | Fin del soporte extendido y versión EOL | 
| --- | --- | --- | --- | --- | --- | 
| Redis OSS versión 4 | 31/1/2026 | 1/2/2026 | 1/2/2027 | 1/2/2028 | 31/1/2029 | 
| Redis OSS versión 5 | 31/1/2026 | 1/2/2026 | 1/2/2027 | 1/2/2028 | 31/1/2029 | 
| Redis OSS versión 6 | 31/1/2027 | 1/2/2027 | 1/2/2028 | 1/2/2029 | 31/1/2030 | 

El soporte extendido solo se ofrecerá para la última versión de parche compatible de cada una de las versiones principales de Redis OSS. Si el soporte extendido comienza el 1 de febrero de 2026, si los clústeres de Redis OSS versión 4 y 5 aún no tienen las versiones más recientes del parche, se actualizarán automáticamente a la versión 4.0.10 para Redis OSS versión 4 y a la versión 5.0.6 para Redis OSS versión 5 antes de inscribirse en el soporte extendido. De este modo se garantiza que reciba las actualizaciones de seguridad y las correcciones de errores a través del soporte extendido. No necesita realizar ninguna acción para actualizar a las versiones más recientes de los parches como parte de la transición al soporte extendido.

# ElastiCache y las responsabilidades del cliente con el soporte extendido de ElastiCache
<a name="extended-support-responsibilities"></a>

A continuación se detallan las responsabilidades de Amazon ElastiCache y sus responsabilidades con el soporte extendido de ElastiCache.

**Responsabilidades de Amazon ElastiCache**

Tras la fecha de finalización del soporte estándar de ElastiCache, Amazon ElastiCache proporcionará parches, correcciones de errores y actualizaciones para los motores inscritos en el soporte extendido de ElastiCache. Esto ocurrirá durante un máximo de 3 años o hasta que deje de utilizar el soporte extendido de los motores, lo que ocurra primero.

**Sus responsabilidades**

Usted debe aplicar los parches, las correcciones de errores y las actualizaciones proporcionadas para las cachés en el soporte extendido de ElastiCache. Amazon ElastiCache se reserva el derecho de modificar, sustituir o retirar dichos parches, correcciones de errores y actualizaciones en cualquier momento. Si se necesita un parche para solucionar problemas de seguridad o estabilidad críticos, Amazon ElastiCache se reserva el derecho de actualizar sus cachés con el parche o bien de solicitarle que instale el parche.

También es responsable de actualizar el motor a una versión más reciente antes de la fecha de finalización del soporte extendido de ElastiCache. La fecha de finalización del soporte extendido de ElastiCache suele ser 3 años después de la fecha de finalización del soporte estándar de ElastiCache. 

Si no actualiza el motor, después de la fecha de finalización del soporte extendido de ElastiCache, Amazon ElastiCache intentará actualizar el motor a una versión más reciente del motor que admita el soporte estándar de ElastiCache. Si se produce un error en la actualización, Amazon ElastiCache se reserva el derecho de eliminar la memoria caché en la que se ejecuta el motor una vez pasada la fecha de finalización del soporte estándar de ElastiCache. Sin embargo, antes de hacerlo, Amazon ElastiCache conservará los datos de ese motor.

# Administración de versiones para ElastiCache
<a name="VersionManagement"></a>

Gestione la forma en que desea actualizar sus ElastiCache cachés y los clústeres basados en nodos actualizados para los motores OSS de Valkey, Memcached y Redis.

## Administración de versiones para ElastiCache Serverless Cache
<a name="VersionManagement-serverless"></a>

Administre si se actualiza la caché ElastiCache sin servidor y cuándo, y realice las actualizaciones de versión según sus propios términos y plazos.

ElastiCache Serverless aplica automáticamente la última versión de software secundaria y de parche a la memoria caché, sin que la aplicación se vea afectada ni se produzca ningún tiempo de inactividad. No tiene que hacer nada. 

Cuando haya una nueva versión principal disponible, ElastiCache Serverless le enviará una notificación en la consola y un evento en ella. EventBridge Puede optar por actualizar la memoria caché a la última versión principal modificando la memoria caché mediante la consola, la CLI o la API y seleccionando la versión más reciente del motor. De igual modo que en las actualizaciones menores y de parches, las actualizaciones de las versiones principales se realizan sin que se produzca ningún tiempo de inactividad de la aplicación.

## Administración de versiones para clústeres basados en nodos ElastiCache
<a name="VersionManagement-clusters"></a>

Al trabajar con ElastiCache clústeres basados en nodos, puede controlar si el software que alimenta el clúster se actualiza a las nuevas versiones compatibles con ellas. ElastiCache Puede controlar cuándo actualizar la caché a las versiones principal, secundaria y de parche más recientes disponibles. Para iniciar la actualización de las versiones del motor en el clúster o el grupo de reproducción, modifíquelo y especifique una nueva versión del motor.

Puede controlar si el software compatible con el protocolo que alimenta su clúster se actualiza a las nuevas versiones compatibles con ellas y cuándo. ElastiCache Este nivel de control permite mantener la compatibilidad con versiones concretas, probar nuevas versiones con la aplicación antes de implementarlas en producción y realizar actualizaciones de versiones en los horarios y los plazos que más le convengan.

Como las actualizaciones de versión pueden conllevar algunos riesgos de compatibilidad, no se producen automáticamente. Debe iniciarlas. 

**Clústeres de Valkey y Redis OSS**

**nota**  
Si un clúster de Valkey o Redis OSS se replica en una o más regiones, la versión del motor se actualiza para las regiones secundarias y, después, para la región principal.
 ElastiCache en el caso de Redis, las versiones de OSS se identifican con una versión semántica que consta de un componente principal y uno secundario. Por ejemplo, en Redis OSS 6.2, la versión principal es 6 y la versión secundaria es 2. Cuando se utilizan clústeres basados en nodos, ElastiCache en el caso de Redis OSS también se expone el componente del parche, por ejemplo, Redis OSS 6.2.1, y la versión del parche es la 1.   
Las versiones principales son para cambios incompatibles con la API y las versiones secundarias son para nuevas funciones que se añaden de manera compatible con versiones anteriores. Las versiones de parche son para correcciones de errores compatibles con versiones anteriores y cambios no funcionales. 

Con Valkey y Redis OSS, para iniciar la actualización de las versiones del motor en el clúster o el grupo de replicación, modifíquelo y especifique una nueva versión del motor. Para obtener más información, consulte [Modificación de un grupo de reproducción](Replication.Modify.md).

**Memcached**

Con Memcached, para actualizar a una versión más reciente, debe modificar su cluster y especificar la nueva versión del motor que desea utilizar. La actualización a una nueva versión de Memcached es un proceso destructivo: perderá los datos y deberá comenzar con una caché nueva. Para obtener más información, consulte [Modificación de un clúster de ElastiCache](Clusters.Modify.md).

Debe tener en cuenta los requisitos siguientes a la hora de actualizar de una versión antigua de Memcached a la versión 1.4.33 o posterior. Se produce un error con `CreateCacheCluster` y `ModifyCacheCluster` en las condiciones que se describen a continuación:
+ Si `slab_chunk_max > max_item_size`.
+ Si `max_item_size modulo slab_chunk_max != 0`.
+ Si `max_item_size > ((max_cache_memory - memcached_connections_overhead) / 4)`.

  El valor `(max_cache_memory - memcached_connections_overhead)` es la memoria útil del nodo para los datos. Para obtener más información, consulte [Capacidad adicional para conexiones de Memcached](ParameterGroups.Engine.md#ParameterGroups.Memcached.Overhead).

## Motores y versiones compatibles
<a name="supported-engine-versions"></a>

ElastiCache Las cachés sin servidor son compatibles con la ElastiCache versión 7.2 para Valkey y versiones posteriores, la 1.6 para Memcached y ElastiCache versiones posteriores y la 7.0 para Redis OSS y versiones posteriores. ElastiCache 

 ElastiCache Los clústeres basados en nodos admiten la ElastiCache versión 7.2 para Valkey y versiones posteriores, la ElastiCache versión 1.4.5 para Memcached y versiones posteriores y la 4.0.10 para Redis OSS y versiones posteriores. ElastiCache 

**Topics**
+ [Versiones de Valkey compatibles](#supported-engine-versions.valkey)
+ [Valley 8.2](#valkey-version-8.2)
+ [Valley 8.1](#valkey-version-8.1)
+ [Valley 8.0](#valkey-version-8)
+ [ElastiCache versión 7.2.6 para Valkey](#valkey-version-7.2.6)

### Versiones de Valkey compatibles
<a name="supported-engine-versions.valkey"></a>

Estas son las versiones de Valkey compatibles. Tenga en cuenta que Valkey es compatible de forma predeterminada con la mayoría de las funciones disponibles en la ElastiCache versión 7.2 para Redis OSS.
+ También puede actualizar sus ElastiCache clústeres con versiones anteriores a la 5.0.6. El proceso involucrado es el mismo, pero puede incurrir en un tiempo de conmutación por error más largo durante la propagación de DNS (de 30 s a 1 m). 
+ A partir de Redis OSS 7, ElastiCache permite cambiar entre Valkey o Redis OSS (modo de clúster desactivado) y Valkey o Redis OSS (modo de clúster activado).
+ El proceso de actualización del motor OSS de Amazon ElastiCache for Redis está diseñado para hacer todo lo posible por conservar los datos existentes y requiere una replicación correcta de Redis OSS. 
+ Al actualizar el motor, ElastiCache finalizará las conexiones de cliente existentes. Para minimizar el tiempo de inactividad durante las actualizaciones del motor, le recomendamos que implemente [las prácticas recomendadas para los clientes de Redis OSS](BestPractices.Clients.redis.md), con reintentos de errores y retrocesos exponenciales, así como las prácticas recomendadas para [minimizar el tiempo de inactividad durante el mantenimiento](BestPractices.MinimizeDowntime.md). 
+ No puede actualizar directamente de Valkey o Redis OSS (modo de clúster deshabilitado) a Valkey o Redis OSS (modo de clúster habilitado) cuando actualiza su motor. El siguiente procedimiento muestra cómo actualizar de Valkey o Redis OSS (modo de clúster deshabilitado) a Valkey o Redis OSS (modo de clúster habilitado).

**Actualización de una versión de motor de Valkey o Redis OSS (modo de clúster deshabilitado) a la versión del motor de Valkey o Redis OSS (modo de clúster habilitado)**

  1. Realice una copia de seguridad de su clúster o grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado). Para obtener más información, consulte [Copias de seguridad manuales](backups-manual.md).

  1. Utilice la copia de seguridad para crear y propagar un clúster de Valkey o Redis OSS (modo de clúster habilitado) con una partición (grupo de nodo). Especifique la nueva versión de motor y habilite el modo de clúster al crear el clúster o grupo de reproducción. Para obtener más información, consulte [Tutorial: propagación de un nuevo clúster basado en nodos con una copia de seguridad creada externamente](backups-seeding-redis.md).

  1. Elimine el clúster o el grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) anterior. Para obtener más información, consulte [Eliminar un clúster en ElastiCache](Clusters.Delete.md) o [Eliminación de un grupo de reproducción](Replication.DeletingRepGroup.md).

  1. Escale el nuevo grupo de replicación o clúster de Valkey o Redis OSS (modo de clúster habilitado) al número de particiones (grupos de nodo) que necesita. Para obtener más información, consulte [Escalado de clústeres de Valkey o Redis OSS (modo de clúster habilitado)](scaling-redis-cluster-mode-enabled.md)
+ Cuando actualiza las versiones principales del motor, por ejemplo de 5.0.6 a 6.0, debe seleccionar un grupo de parámetros nuevo que sea compatible con la versión del motor nueva.
+ Para clústeres de Redis OSS sencillos y clústeres con multi-AZ deshabilitado, recomendamos disponer de suficiente memoria para Redis OSS, tal y como se describe en [Forma de garantizar que dispone de memoria suficiente para crear una instantánea de Valkey o Redis OSS](BestPractices.BGSAVE.md). En estos casos, el nodo principal no está disponible para las solicitudes de servicio durante el proceso de actualización.
+ Para clústeres de Redis OSS con multi-AZ habilitado, también recomendamos que programe actualizaciones del motor durante los periodos de poco tráfico entrante. Cuando se actualiza a Redis OSS 5.0.6 o a una versión posterior, el clúster principal sigue disponible para atender solicitudes durante el proceso de actualización. 

  Los clústeres y grupos de reproducción con varias particiones se procesan y se aplican parches de la siguiente manera:
  + Todas las particiones se procesan en paralelo. Solo se realiza una operación de actualización en una partición a la vez.
  + En cada partición, todas las réplicas se procesan antes que el principal. Si hay menos réplicas en una partición, el principal de esa partición podrá procesarse antes que las réplicas de otras particiones terminen de procesarse.
  + En todas las particiones, los nodos principales se procesan en series. Solo se actualiza un nodo principal a la vez.
+ Si el cifrado se encuentra habilitado en su grupo de reproducción o clúster actual, no puede actualizar a una versión del motor que no admita cifrado, como de la versión 3.2.6 a la 3.2.10.

**Consideraciones sobre Memcached**

Cuando actualice un clúster de Memcached basado en nodos, tenga en cuenta lo siguiente.
+ La administración de la versión del motor está diseñada para que pueda tener el mayor control posible sobre cómo se produce la aplicación de parches. Sin embargo, ElastiCache se reserva el derecho de aplicar parches al clúster en su nombre en el improbable caso de que se produzca una vulnerabilidad de seguridad crítica en el sistema o en el software de la memoria caché.
+ Puesto que el motor de Memcached no es compatible con la persistencia, las actualizaciones de versión del motor de Memcached son siempre un proceso disruptivo que borra todos los datos de caché del clúster.

### ElastiCache versión 8.2 para Valkey
<a name="valkey-version-8.2"></a>

Estas son algunas de las nuevas funciones introducidas en Valkey 8.2 (en comparación con ElastiCache Valkey 8.1):
+ Compatibilidad nativa con la [búsqueda vectorial](vector-search.md), que le permite almacenar, indexar, buscar y actualizar miles de millones de incrustaciones vectoriales de alta dimensionalidad en la memoria con latencias tan bajas como de microsegundos.

Para obtener más información sobre Valkey, consulte [Valkey](https://valkey.io/).

Para obtener más información sobre la versión 8.2 de Valkey, que incluye la búsqueda vectorial, consulte [Valkey Search](https://github.com/valkey-io/valkey-search).

### ElastiCache versión 8.1 para Valkey
<a name="valkey-version-8.1"></a>

Estas son algunas de las nuevas funciones introducidas en Valkey 8.1 (en comparación con ElastiCache Valkey 8.0):
+ Una [nueva implementación de tabla hash](https://valkey.io/blog/new-hash-table/) que reduce la sobrecarga de memoria para reducir el uso de memoria hasta en un 20% para los patrones más comunes key/value .
+ Compatibilidad nativa con los [filtros de Bloom](https://valkey.io/topics/bloomfilters/), un nuevo tipo de datos que permite realizar búsquedas utilizando hasta un 98 % menos de memoria en comparación con el tipo de datos Set.
+ Nuevo comando [COMMANDLOG](https://valkey.io/commands/commandlog-get/) que registra las ejecuciones lentas y las solicitudes y respuestas de gran tamaño.
+ Nueva compatibilidad con la actualización condicional del comando SET con el argumento IFEQ.
+ Mejoras del rendimiento, que incluyen una latencia hasta un 45 % menor para el comando ZRANK, un rendimiento hasta 12 veces más rápido para PFMERGE y PFCOUNT, y un rendimiento hasta un 514 % mayor para BITCOUNT. 

Para obtener más información sobre Valkey, consulte [Valkey](https://valkey.io/)

Para obtener más información sobre la versión 8.1 de Valkey, consulte las [Valkey 8.1 Release Notes](https://github.com/valkey-io/valkey/blob/8.1/00-RELEASENOTES).

### ElastiCache versión 8.0 para Valkey
<a name="valkey-version-8"></a>

Estas son algunas de las nuevas funciones introducidas en Valkey 8.0 (en comparación con ElastiCache Valkey 7.2.6):
+ Mejoras en la eficiencia de la memoria, que permiten a los usuarios almacenar hasta un 20 % más de datos por nodo sin realizar cambios en la aplicación.
+ Recientemente se ha introducido una infraestructura de métricas por ranura para clústeres basados en nodos, que proporciona una visibilidad detallada del rendimiento y el uso de recursos de las ranuras individuales.
+ ElastiCache Serverless for Valkey 8.0 puede duplicar las solicitudes por segundo (RPS) admitidas cada 2 o 3 minutos, hasta alcanzar los 5 millones de RPS por caché desde cero en menos de 13 minutos, con una latencia de lectura constante de p50 por debajo de un milisegundo.

Para obtener más información sobre Valkey, consulte [Valkey](https://valkey.io/)

Para obtener más información sobre la versión 8 de Valkey, consulte las [Valkey 8 Release Notes](https://github.com/valkey-io/valkey/blob/8.0/00-RELEASENOTES).

### ElastiCache versión 7.2.6 para Valkey
<a name="valkey-version-7.2.6"></a>

El 10 de octubre de 2024, se lanzó ElastiCache la versión 7.2.6 para Valkey. Estas son algunas de las nuevas funciones introducidas en la versión 7.2 (en comparación con la ElastiCache versión 7.1 de Redis OSS):
+ Optimizaciones del rendimiento y la memoria para varios tipos de datos: optimización de la memoria para las teclas de tipo lista y conjunto, optimización de la velocidad para comandos de conjuntos ordenados, optimización del rendimiento para comandos con varias teclas en modo clúster, mejoras en el pub/sub rendimiento, optimización del rendimiento para los comandos SCAN, SSCAN, HSCAN, ZSCAN y muchas otras optimizaciones más pequeñas.
+ Nueva opción WITHSCORE para los comandos ZRANK y ZREVRANK
+ CLIENT NO-TOUCH permite a los clientes ejecutar comandos sin afectar a las teclas. LRU/LFU 
+ Nuevo comando CLUSTER MYSHARDID que devuelve el ID de partición del nodo para agrupar los nodos de forma lógica en el modo de clúster en función de la replicación.

Para obtener más información sobre Valkey, consulte [Valkey](https://valkey.io/)

Para obtener más información sobre la ElastiCache versión 7.2 para Valkey, consulte las [notas de la versión 7.2.4 de Redis OSS](https://github.com/valkey-io/valkey/blob/d2c8a4b91e8c0e6aefd1f5bc0bf582cddbe046b7/00-RELEASENOTES) (la ElastiCache versión 7.2 de Valkey incluye todos los cambios desde la ElastiCache versión 7.1 de Redis OSS hasta la versión 7.2.4 de Redis OSS ElastiCache ). Notas de la versión 7.2 de [Valkey en adelante](https://github.com/valkey-io/valkey/blob/7.2/00-RELEASENOTES). GitHub

## ElastiCache versión 8.2 para Valkey
<a name="valkey-version-8.2.main"></a>

Estas son algunas de las nuevas funciones introducidas en Valkey 8.2 (en comparación con ElastiCache Valkey 8.1):
+ Compatibilidad nativa con la [búsqueda vectorial](vector-search.md), que le permite almacenar, indexar, buscar y actualizar miles de millones de incrustaciones vectoriales de alta dimensionalidad en la memoria con latencias tan bajas como de microsegundos.

Para obtener más información sobre Valkey, consulte [Valkey](https://valkey.io/).

Para obtener más información sobre la versión 8.2 de Valkey, que incluye la búsqueda vectorial, consulte [Valkey Search](https://github.com/valkey-io/valkey-search).

## ElastiCache versión 8.1 para Valkey
<a name="valkey-version-8.1.main"></a>

Estas son algunas de las nuevas funciones introducidas en Valkey 8.1 (en comparación con ElastiCache Valkey 8.0):
+ Una [nueva implementación de tabla hash](https://valkey.io/blog/new-hash-table/) que reduce la sobrecarga de memoria para reducir el uso de memoria hasta en un 20% para los patrones más comunes key/value .
+ Compatibilidad nativa con los [filtros de Bloom](https://valkey.io/topics/bloomfilters/), un nuevo tipo de datos que permite realizar búsquedas utilizando hasta un 98 % menos de memoria en comparación con el tipo de datos Set.
+ Nuevo comando [COMMANDLOG](https://valkey.io/commands/commandlog-get/) que registra las ejecuciones lentas y las solicitudes y respuestas de gran tamaño.
+ Nueva compatibilidad con la actualización condicional del comando SET con el argumento IFEQ.
+ Mejoras del rendimiento, que incluyen una latencia hasta un 45 % menor para el comando ZRANK, un rendimiento hasta 12 veces más rápido para PFMERGE y PFCOUNT, y un rendimiento hasta un 514 % mayor para BITCOUNT. 

Para obtener más información sobre Valkey, consulte [Valkey](https://valkey.io/)

Para obtener más información sobre la versión 8.1 de Valkey, consulte las [Valkey 8.1 Release Notes](https://github.com/valkey-io/valkey/blob/8.1/00-RELEASENOTES).

## ElastiCache versión 8.0 para Valkey
<a name="valkey-version-8.main"></a>

Estas son algunas de las nuevas funciones introducidas en Valkey 8.0 (en comparación con ElastiCache Valkey 7.2.6):
+ Mejoras en la eficiencia de la memoria, que permiten a los usuarios almacenar hasta un 20 % más de datos por nodo sin realizar cambios en la aplicación.
+ Recientemente se ha introducido una infraestructura de métricas por ranura para clústeres basados en nodos, que proporciona una visibilidad detallada del rendimiento y el uso de recursos de las ranuras individuales.
+ ElastiCache Serverless for Valkey 8.0 puede duplicar las solicitudes por segundo (RPS) admitidas cada 2 o 3 minutos, hasta alcanzar los 5 millones de RPS por caché desde cero en menos de 13 minutos, con una latencia de lectura constante de p50 por debajo de un milisegundo.

Para obtener más información sobre Valkey, consulte [Valkey](https://valkey.io/)

Para obtener más información sobre la versión 8 de Valkey, consulte las [Valkey 8 Release Notes](https://github.com/valkey-io/valkey/blob/8.0/00-RELEASENOTES).

## ElastiCache versión 7.2.6 para Valkey
<a name="valkey-version-7.2.6.main"></a>

El 10 de octubre de 2024, se lanzó ElastiCache la versión 7.2.6 para Valkey. Estas son algunas de las nuevas funciones introducidas en la versión 7.2 (en comparación con la ElastiCache versión 7.1 de Redis OSS):
+ Optimizaciones del rendimiento y la memoria para varios tipos de datos: optimización de la memoria para las teclas de tipo lista y conjunto, optimización de la velocidad para comandos de conjuntos ordenados, optimización del rendimiento para comandos con varias teclas en modo clúster, mejoras en el pub/sub rendimiento, optimización del rendimiento para los comandos SCAN, SSCAN, HSCAN, ZSCAN y muchas otras optimizaciones más pequeñas.
+ Nueva opción WITHSCORE para los comandos ZRANK y ZREVRANK
+ CLIENT NO-TOUCH permite a los clientes ejecutar comandos sin afectar a las teclas. LRU/LFU 
+ Nuevo comando CLUSTER MYSHARDID que devuelve el ID de partición del nodo para agrupar los nodos de forma lógica en el modo de clúster en función de la replicación.

Para obtener más información sobre Valkey, consulte [Valkey](https://valkey.io/)

Para obtener más información sobre la ElastiCache versión 7.2 para Valkey, consulte las [notas de la versión 7.2.4 de Redis OSS](https://github.com/valkey-io/valkey/blob/d2c8a4b91e8c0e6aefd1f5bc0bf582cddbe046b7/00-RELEASENOTES) (la ElastiCache versión 7.2 de Valkey incluye todos los cambios desde la ElastiCache versión 7.1 de Redis OSS hasta la versión 7.2.4 de Redis OSS ElastiCache ). Notas de la versión 7.2 de [Valkey en adelante](https://github.com/valkey-io/valkey/blob/7.2/00-RELEASENOTES). GitHub

## Versiones compatibles del motor de Redis OSS
<a name="supported-engine-versions.redis"></a>

ElastiCache Las cachés sin servidor y los clústeres basados en nodos son compatibles con todas las versiones 7.1 y anteriores de Redis OSS.
+ [ElastiCache versión 7.1 para Redis OSS (mejorada)](#redis-version-7.1)

**Topics**
+ [ElastiCache versión 7.1 para Redis OSS (mejorada)](#redis-version-7.1)
+ [ElastiCache versión 7.0 para Redis OSS (mejorada)](#redis-version-7.0)
+ [ElastiCache versión 6.2 para Redis OSS (mejorada)](#redis-version-6.2)
+ [ElastiCache versión 6.0 para Redis OSS (mejorada)](#redis-version-6.0)
+ [ElastiCache versión 5.0.6 para Redis OSS (mejorada)](#redis-version-5-0.6)
+ [ElastiCache versión 5.0.5 para Redis OSS (obsoleta; utilice la versión 5.0.6)](#redis-version-5-0.5)
+ [ElastiCache versión 5.0.4 para Redis OSS (obsoleta; utilice la versión 5.0.6)](#redis-version-5-0.4)
+ [ElastiCache versión 5.0.3 para Redis OSS (obsoleta; utilice la versión 5.0.6)](#redis-version-5-0.3)
+ [ElastiCache versión 5.0.0 para Redis OSS (obsoleta, utilice la versión 5.0.6)](#redis-version-5-0)
+ [ElastiCache la versión 4.0.10 para Redis OSS (mejorada)](#redis-version-4-0-10)
+ [Versiones 3.x de fin de vida útil (EOL) anteriores](#redis-version-3-2-10-scheduled-eol)
+ [Versiones 2.x de fin de vida útil (EOL) anteriores](#redis-version-2-x-eol)

### ElastiCache versión 7.1 para Redis OSS (mejorada)
<a name="redis-version-7.1"></a>

Esta versión contiene mejoras de rendimiento que permiten que las cargas de trabajo aumenten el rendimiento y reduzcan las latencias de operación. ElastiCache [La versión 7.1 para Redis OSS presenta dos mejoras principales:](https://aws.amazon.com/blogs/database/achieve-over-500-million-requests-per-second-per-cluster-with-amazon-elasticache-for-redis-7-1/)

Hemos ampliado la funcionalidad mejorada de I/O los hilos para gestionar también la lógica de la capa de presentación. Al hablar de la capa de presentación, nos referimos a los subprocesos de E/S mejorados; ahora, no solo leen la entrada del cliente, sino que también analizan la entrada en el formato de comando binario de Redis OSS. Luego, se reenvía al subproceso principal para su ejecución, lo que proporciona un aumento del rendimiento. Patrón mejorado de acceso a la memoria de Redis OSS. Los pasos de ejecución de muchas operaciones de estructura de datos están intercalados para garantizar el acceso paralelo a la memoria y reducir la latencia de acceso a esta. Cuando se ejecuta ElastiCache en Graviton3 `R7g.4xlarge` o superior, los clientes pueden recibir más de 1 millón de solicitudes por segundo por nodo. Con las mejoras de rendimiento de Redis OSS v7.1, los clientes pueden lograr hasta un 100% más de rendimiento y una latencia de P99 un 50% menos en comparación con Redis OSS v7.0. ElastiCache ElastiCache Estas mejoras están disponibles en tamaños de nodo con al menos ocho núcleos físicos (`2xlarge` en Graviton y `4xlarge` en x86), independientemente del tipo de CPU, y no es necesario hacer cambios en el cliente.

**nota**  
ElastiCache La versión 7.1 es compatible con Redis OSS v7.0.

### ElastiCache versión 7.0 para Redis OSS (mejorada)
<a name="redis-version-7.0"></a>

ElastiCache para Redis OSS 7.0 añade una serie de mejoras y compatibilidad con nuevas funciones:
+ [Funciones](https://valkey.io/topics/functions-intro/): ElastiCache para Redis OSS, 7 añade compatibilidad con las funciones de Redis OSS y proporciona una experiencia gestionada que permite a los desarrolladores ejecutar [scripts de LUA](https://valkey.io/topics/eval-intro/) con la lógica de la aplicación almacenada en el ElastiCache clúster, sin que los clientes tengan que volver a enviar los scripts al servidor en cada conexión. 
+ [Mejoras en la ACL](https://valkey.io/topics/acl/): Valkey y Redis OSS 7 añaden compatibilidad con la próxima versión de las listas de control de acceso (). ACLs Los clientes ahora pueden especificar varios conjuntos de permisos en claves o espacios de claves específicos en Valkey y Redis OSS. 
+ [Sharded Pub/Sub](https://valkey.io/topics/pubsub/): ElastiCache para Valkey y Redis, OSS 7 añade compatibilidad con Pub/Sub functionality in a sharded way when running ElastiCache in Cluster Mode Enabled (CME). Pub/Sub funciones de ejecución que permiten a los editores enviar mensajes a cualquier número de suscriptores de un canal. Los canales están enlazados a un fragmento del ElastiCache clúster, lo que elimina la necesidad de propagar la información del canal entre los fragmentos, lo que mejora la escalabilidad. 
+  I/O Multiplexación mejorada: ElastiCache para Valkey y Redis, OSS 7 presenta una multiplexación de E/S mejorada, que ofrece un mayor rendimiento y una latencia reducida para cargas de trabajo de alto rendimiento que tienen muchas conexiones de cliente simultáneas a un clúster. ElastiCache Por ejemplo, si utiliza un clúster de nodos r6g.xlarge y ejecuta 5200 clientes simultáneos, puede lograr un aumento de rendimiento de hasta un 72% (operaciones de lectura y escritura por segundo) y una disminución de la latencia de P99 de hasta un 71%, en comparación con la ElastiCache versión 6 de Redis OSS. 

Para obtener más información sobre Valkey, consulte [Valkey](https://valkey.io/). [Para obtener más información sobre la versión 7.0 de Redis OSS, consulte las notas de la versión de Redis OSS 7.0 en Redis OSS en adelante.](https://github.com/redis/redis/blob/7.0/00-RELEASENOTES) GitHub

### ElastiCache versión 6.2 para Redis OSS (mejorada)
<a name="redis-version-6.2"></a>

ElastiCache para Redis OSS 6.2 incluye mejoras de rendimiento para los clústeres compatibles con TLS que utilizan tipos de nodos x86 con 8 v CPUs o más o tipos de nodos Graviton2 con 4 v o más. CPUs Estas mejoras mejoran el rendimiento y reducen el tiempo de establecimiento de la conexión del cliente al transferir el cifrado a otros sistemas v. CPUs Con Redis OSS 6.2, también puede administrar el acceso a los canales Pub/Sub con las reglas de la lista de control de acceso (ACL).

 Con esta versión, también incorporamos la compatibilidad con la organización de datos en niveles en los nodos del clúster que contienen SSD conectados localmente. NVMe Para obtener más información, consulte [Organización de datos en niveles en ElastiCache](data-tiering.md).

La versión 6.2.6 del motor OSS de Redis también incorpora la compatibilidad con el formato nativo de notación de JavaScript objetos (JSON), una forma sencilla y sin esquemas de codificar conjuntos de datos complejos dentro de los clústeres de Redis OSS. Gracias a la compatibilidad con JSON, puede aprovechar el rendimiento y el OSS de Redis para las aplicaciones que funcionan con JSON. APIs Para obtener más información, consulte [Introducción a JSON](json-gs.md). También se incluyen métricas relacionadas con JSON `JsonBasedCmds` y`JsonBasedCmdsLatency`, que se incorporan CloudWatch para monitorear el uso de este tipo de datos. Para obtener más información, consulte [Métricas de Valkey y Redis OSS](CacheMetrics.Redis.md).

La versión del motor se especifica mediante la versión 6.2. ElastiCache invocará automáticamente la versión de parche preferida de Redis OSS 6.2 que esté disponible. Por ejemplo, al crear o modificar un clúster, establece el parámetro `--engine-version` en 6.2. El clúster se lanzará con la versión de parche preferida actualmente disponible de Redis OSS 6.2 en ese momento. creation/modification Al especificar la versión 6.x del motor en la API se traducirá en la última versión secundaria de Redis OSS 6.

Para los clústeres 6.0 existentes, puede optar por la siguiente actualización automática de la versión secundaria configurando el `AutoMinorVersionUpgrade` parámetro `yes` en `CreateCacheCluster``ModifyCacheCluster`, `CreateReplicationGroup` o `ModifyReplicationGroup` APIs. ElastiCache actualizará la versión secundaria de sus clústeres 6.0 actuales a la 6.2 mediante actualizaciones de autoservicio. Para obtener más información, consulta [Actualizaciones de autoservicio en Amazon ElastiCache](Self-Service-Updates.md).

Al llamar a la DescribeCacheEngineVersions API, el valor del `EngineVersion` parámetro se establecerá en 6.2 y en el `CacheEngineVersionDescription` campo se mostrará la versión real del motor con la versión del parche. 

Para obtener más información sobre la versión 6.2 de Redis OSS, consulte las [notas de la versión 6.2 de Redis OSS](https://github.com/redis/redis/blob/6.2/00-RELEASENOTES) en Redis OSS en adelante. GitHub

### ElastiCache versión 6.0 para Redis OSS (mejorada)
<a name="redis-version-6.0"></a>

Amazon ElastiCache presenta la próxima versión del motor OSS ElastiCache de Redis, que incluye la [autenticación de los usuarios con un control de acceso basado en roles](Clusters.RBAC.md), almacenamiento en caché del lado del cliente e importantes mejoras operativas. 

 A partir de Redis OSS 6.0, ElastiCache ofrecerá una única versión para cada versión secundaria de Redis OSS, en lugar de ofrecer varias versiones de parches. ElastiCache gestionará automáticamente la versión de parche de los clústeres en ejecución, lo que garantizará un rendimiento y una seguridad mejorados. 

También puede optar por la siguiente actualización automática de la versión secundaria configurando el `AutoMinorVersionUpgrade` parámetro en `yes` y ElastiCache gestionará la actualización de la versión secundaria mediante actualizaciones de autoservicio. Para obtener más información, consulte [Actualizaciones de servicios en ElastiCache](Self-Service-Updates.md). 

Para especificar la versión del motor, utilice. `6.0` ElastiCache invocará automáticamente la versión de parche preferida de Redis OSS 6.0 que esté disponible. Por ejemplo, cuando se crea create/modify un clúster, se establece el `--engine-version` parámetro en 6.0. El clúster se lanzará con la versión de parche preferida actual disponible de Redis OSS 6.0 en el momento de su creación o modificación. Cualquier solicitud con un valor de versión de parche específico se rechazará, se lanzará una excepción y el proceso fallará.

Al llamar a la DescribeCacheEngineVersions API, el valor del `EngineVersion` parámetro se establecerá en 6.0 y en el `CacheEngineVersionDescription` campo se mostrará la versión real del motor con la versión del parche. 

Para obtener más información sobre la versión 6.0 de Redis OSS, consulte las [notas de la versión 6.0 de Redis OSS](https://github.com/redis/redis/blob/6.0/00-RELEASENOTES) en Redis OSS en adelante. GitHub

### ElastiCache versión 5.0.6 para Redis OSS (mejorada)
<a name="redis-version-5-0.6"></a>

Amazon ElastiCache presenta la próxima versión del ElastiCache motor OSS de Redis, que incluye correcciones de errores y las siguientes actualizaciones acumulativas: 
+ Garantía de estabilidad del motor en condiciones especiales.
+ Control de errores HyperLogLog mejorado.
+ Comandos de protocolo de enlace mejorados para reproducción de confianza.
+ Seguimiento de entrega de mensajes coherente a través de comando `XCLAIM`.
+ Gestión de campo de `LFU ` mejorada en objetos.
+ Gestión de transacciones mejorada al utilizar `ZPOP`. 
+ Capacidad para cambiar el nombre de comandos: un parámetro llamado `rename-commands` que le permite cambiar el nombre de los comandos de Redis OSS potencialmente peligrosos o costosos que podrían provocar una pérdida de datos accidental, por ejemplo, `FLUSHALL` o `FLUSHDB`. Esto equivale a la configuración rename-command en Redis OSS de código abierto. Sin embargo, ElastiCache ha mejorado la experiencia al proporcionar un flujo de trabajo totalmente gestionado. Los cambios al nombre de comandos se aplican de inmediato y se propagan automáticamente en todos los nodos del clúster que contienen la lista de comandos. No es necesaria la intervención del usuario, como reiniciar nodos. 

  Los siguientes ejemplos muestran cómo modificar los grupos de parámetros existentes. Incluyen el parámetro `rename-commands`, que es una lista de comandos separados por espacios cuyo nombre desea cambiar:

  ```
  aws elasticache modify-cache-parameter-group --cache-parameter-group-name custom_param_group
  --parameter-name-values "ParameterName=rename-commands,  ParameterValue='flushall restrictedflushall'" --region region
  ```

  En este ejemplo, el parámetro *rename-commands* se utiliza para cambiar el nombre del comando `flushall` a `restrictedflushall`.

  Para cambiar el nombre de varios comandos, utilice lo siguiente:

  ```
  aws elasticache modify-cache-parameter-group --cache-parameter-group-name custom_param_group
  --parameter-name-values "ParameterName=rename-commands,  ParameterValue='flushall restrictedflushall flushdb restrictedflushdb''" --region region
  ```

  Para revertir un cambio, vuelva a ejecutar el comando y excluya los valores a los que se ha cambiado el nombre de la lista `ParameterValue` que desea conservar, tal y como se muestra a continuación:

  ```
  aws elasticache modify-cache-parameter-group --cache-parameter-group-name custom_param_group
  --parameter-name-values "ParameterName=rename-commands,  ParameterValue='flushall restrictedflushall'" --region region
  ```

  En este caso, el nombre del comando `flushall` cambiará a `restrictedflushall` y los nombres de los demás comandos revertirán al nombre original.
**nota**  
Al cambiar el nombre de los comandos, estará sometido a las siguientes limitaciones:  
Todos los nombres de comandos cambiados deben ser alfanuméricos.
La longitud máxima de los nombres de comandos nuevos es de 20 caracteres alfanuméricos.
Al cambiar el nombre de comandos, asegúrese de actualizar el grupo de parámetros asociados con el clúster.
Para evitar por completo el uso de un comando, utilice la palabra clave `blocked`, tal y como se muestra a continuación:  

    ```
    aws elasticache modify-cache-parameter-group --cache-parameter-group-name custom_param_group
    --parameter-name-values "ParameterName=rename-commands,  ParameterValue='flushall blocked'" --region region
    ```

  Para obtener más información acerca de los cambios de los parámetros y obtener una lista de los comandos elegibles para el cambio de nombre, consulte [Cambios de parámetros de Redis OSS 5.0.3](ParameterGroups.Engine.md#ParameterGroups.Redis.5-0-3).
+ Flujos de Redis OSS: modela una estructura de datos de registro que permite a los productores añadir nuevos elementos en tiempo real. También permite a los clientes consumir mensajes mediante bloqueo o sin bloqueo. Las secuencias también permiten a los grupos de consumidores, que representan a un grupo de clientes, consumir cooperativamente distintas partes de la misma secuencia de mensajes, de forma similar a como se hace en [Apache Kafka](https://kafka.apache.org/documentation/). Para obtener más información, consulte [Streams](https://valkey.io/topics/streams-intro).
+ Compatibilidad con una familia de comandos de secuencias, como `XADD`, `XRANGE` y `XREAD`. Para obtener más información, consulte [Streams Commands](https://valkey.io/commands/#stream).
+ Una serie de parámetros nuevos y con nombres nuevos. Para obtener más información, consulte [Cambios de parámetros de Redis OSS 5.0.0](ParameterGroups.Engine.md#ParameterGroups.Redis.5.0).
+ Una nueva métrica de Redis OSS, `StreamBasedCmds`.
+ Tiempo de instantánea ligeramente más rápido para los nodos de Redis OSS.

**importante**  
ElastiCache ha corregido dos errores críticos de la versión 5.0.1 de [código abierto de Redis OSS](https://github.com/redis/redis/blob/5.0/00-RELEASENOTES). Son las siguientes:  
Respuesta discrepante de RESTORE cuando algunas claves ya han vencido.
El comando `XCLAIM` podría devolver una entrada incorrecta o desincronizar el protocolo.
Estas dos correcciones de errores se incluyen en la compatibilidad ElastiCache de Redis OSS con el motor Redis OSS versión 5.0.0 y se utilizan en futuras actualizaciones de versiones.

Para obtener más información, consulte las [notas de la versión 5.0.6 de Redis OSS](https://github.com/redis/redis/blob/5.0/00-RELEASENOTES) en Redis OSS en adelante. GitHub

### ElastiCache versión 5.0.5 para Redis OSS (obsoleta; utilice la versión 5.0.6)
<a name="redis-version-5-0.5"></a>

Amazon ElastiCache presenta la próxima versión de ElastiCache para el motor OSS de Redis;. Incluye cambios de configuración en línea para los clústeres ElastiCache de conmutación automática por error durante todas las operaciones planificadas. Ahora, puede escalar el clúster, actualizar la versión del motor de Redis OSS y aplicar parches y actualizaciones de mantenimiento mientras el clúster permanece en línea y continúa atendiendo las solicitudes entrantes. También incluye correcciones de errores.

Para obtener más información, consulte las [notas de la versión 5.0.5 de Redis OSS en Redis OSS en adelante](https://github.com/redis/redis/blob/5.0/00-RELEASENOTES). GitHub

### ElastiCache versión 5.0.4 para Redis OSS (obsoleta; utilice la versión 5.0.6)
<a name="redis-version-5-0.4"></a>

Amazon ElastiCache presenta la próxima versión del motor OSS de Redis compatible ElastiCache con. Contiene las mejoras siguientes:
+ Garantía de estabilidad del motor en condiciones especiales.
+ Control de errores HyperLogLog mejorado.
+ Comandos de protocolo de enlace mejorados para reproducción de confianza.
+ Seguimiento de entrega de mensajes coherente a través de comando `XCLAIM`.
+ Gestión de campo de `LFU ` mejorada en objetos.
+ Gestión de transacciones mejorada al utilizar `ZPOP`. 

Para obtener más información, consulte las [notas de la versión 5.0.4 de Redis OSS](https://github.com/redis/redis/blob/5.0/00-RELEASENOTES) en Redis OSS en adelante. GitHub

### ElastiCache versión 5.0.3 para Redis OSS (obsoleta; utilice la versión 5.0.6)
<a name="redis-version-5-0.3"></a>

Amazon ElastiCache presenta la próxima versión del ElastiCache motor OSS de Redis, que incluye correcciones de errores. 

### ElastiCache versión 5.0.0 para Redis OSS (obsoleta, utilice la versión 5.0.6)
<a name="redis-version-5-0"></a>

Amazon ElastiCache presenta la próxima versión principal del ElastiCache motor OSS de Redis. ElastiCache La versión 5.0.0 para Redis OSS admite las siguientes mejoras:
+ Flujos de Redis OSS: modela una estructura de datos de registro que permite a los productores añadir nuevos elementos en tiempo real. También permite a los clientes consumir mensajes mediante bloqueo o sin bloqueo. Las secuencias también permiten a los grupos de consumidores, que representan a un grupo de clientes, consumir cooperativamente distintas partes de la misma secuencia de mensajes, de forma similar a como se hace en [Apache Kafka](https://kafka.apache.org/documentation/). Para obtener más información, consulte [Streams](https://valkey.io/topics/streams-intro).
+ Compatibilidad con una familia de comandos de secuencias, como `XADD`, `XRANGE` y `XREAD`. Para obtener más información, consulte [Streams Commands](https://valkey.io/commands/#stream).
+ Una serie de parámetros nuevos y con nombres nuevos. Para obtener más información, consulte [Cambios de parámetros de Redis OSS 5.0.0](ParameterGroups.Engine.md#ParameterGroups.Redis.5.0).
+ Una nueva métrica de Redis OSS, `StreamBasedCmds`.
+ Tiempo de instantánea ligeramente más rápido para los nodos de Redis OSS.

### ElastiCache la versión 4.0.10 para Redis OSS (mejorada)
<a name="redis-version-4-0-10"></a>

Amazon ElastiCache presenta la próxima versión principal del ElastiCache motor OSS de Redis. ElastiCache La versión 4.0.10 para Redis OSS admite las siguientes mejoras:
+ Tanto el redimensionamiento del clúster en línea como el cifrado en una sola versión. ElastiCache Para obtener más información, consulte los siguientes temas:
  + [Escalado de clústeres de Valkey o Redis OSS (modo de clúster habilitado)](scaling-redis-cluster-mode-enabled.md)
  + [Cambio de particiones en línea para Valkey o Redis OSS (modo de clúster habilitado)](scaling-redis-cluster-mode-enabled.md#redis-cluster-resharding-online)
  + [Seguridad de datos en Amazon ElastiCache](encryption.md)
+ Una serie de parámetros nuevos. Para obtener más información, consulte [Cambios de parámetros de Redis OSS 4.0.10](ParameterGroups.Engine.md#ParameterGroups.Redis.4-0-10).
+ Compatibilidad con la familia de comandos de memoria, como `MEMORY`. Para obtener más información, consulte [Commands](https://valkey.io/commands) (realice una búsqueda en MEMO).
+ Compatibilidad con la desfragmentación de memoria mientras está online, lo que permite un uso de memoria más eficiente y más disponibilidad de memoria para los datos.
+ Support para descargas y eliminaciones asíncronas. ElastiCache para Redis, OSS admite comandos como`UNLINK`, por ejemplo, `FLUSHDB` y `FLUSHALL` para ejecutarse en un hilo diferente al hilo principal. Hacer esto ayuda a mejorar el rendimiento y los tiempos de respuesta para sus aplicaciones mediante la liberación de memoria de forma asincrónica. 
+ Una nueva métrica de Redis OSS, `ActiveDefragHits`. Para obtener más información, consulte [Metrics for Redis OSS](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CacheMetrics.Redis.html).

Los usuarios de Redis OSS (modo de clúster desactivado) que utilicen la ElastiCache versión 3.2.10 de Redis OSS pueden utilizar la consola para actualizar sus clústeres mediante una actualización en línea.


**Comparación del tamaño de los ElastiCache clústeres y la compatibilidad con el cifrado**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/engine-versions.html)

### Versiones 3.x de fin de vida útil (EOL) anteriores
<a name="redis-version-3-2-10-scheduled-eol"></a>

#### ElastiCache versión 3.2.10 para Redis OSS (mejorada)
<a name="redis-version-3-2-10"></a>

Amazon ElastiCache presenta la próxima versión principal del ElastiCache motor OSS de Redis. ElastiCache La versión 3.2.10 para Redis OSS (mejorada) introduce el cambio de tamaño del clúster en línea para añadir o eliminar fragmentos del clúster mientras se siguen atendiendo las solicitudes entrantes. I/O ElastiCache en el caso de Redis OSS, los usuarios de la 3.2.10 disponen de todas las funciones de las versiones anteriores de Redis OSS, excepto la capacidad de cifrar sus datos. Esta capacidad está disponible actualmente solo en la versión 3.2.6. 


**Comparación de ElastiCache las versiones 3.2.6 y 3.2.10 de Redis OSS**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/engine-versions.html)

Para obtener más información, consulte los siguientes temas:
+ [Cambio de particiones en línea para Valkey o Redis OSS (modo de clúster habilitado)](scaling-redis-cluster-mode-enabled.md#redis-cluster-resharding-online)
+ [Cambio de tamaño de clústeres online](best-practices-online-resharding.md)

#### ElastiCache versión 3.2.6 para Redis OSS (mejorada)
<a name="redis-version-3-2-6"></a>

Amazon ElastiCache presenta la próxima versión principal del ElastiCache motor OSS de Redis. ElastiCache versión 3.2.6 para Redis OSS Los usuarios tienen acceso a todas las funciones de las versiones anteriores de Redis OSS, además de la opción de cifrar sus datos. Para obtener más información, consulte los siguientes temas:
+ [ElastiCache cifrado en tránsito (TLS)](in-transit-encryption.md)
+ [Cifrado en reposo en ElastiCache](at-rest-encryption.md)
+ [Validación de conformidad para Amazon ElastiCache](elasticache-compliance.md)

#### ElastiCache versión 3.2.4 para Redis OSS (mejorada)
<a name="redis-version-3-2-4"></a>

 ElastiCache La versión 3.2.4 de Amazon presenta la siguiente versión principal del motor ElastiCache OSS de Redis. ElastiCache *Los usuarios de la versión 3.2.4 tienen a su disposición todas las funciones de las versiones anteriores de Redis OSS, además de la opción de ejecutar en *modo clúster o sin clúster*.* La tabla siguiente ofrece un resumen.


**Comparación del modo de clúster y sin clúster de Redis OSS 3.2.4**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/engine-versions.html)

**Notas:**
+ **Particionamiento**: posibilidad de dividir los datos entre 2 a 500 grupos de nodos (particiones) con compatibilidad de reproducción para cada grupo de nodos.
+ **Indexación geoespacial**: Redis OSS 3.2.4 introduce la compatibilidad con la indexación geoespacial a través de seis comandos de GEO. Para obtener más información, consulte la documentación de comandos de GEO\$1 de Redis OSS [Commands: GEO](http://valkey.io/commands#geo) en la página de comandos de Valkey (filtrado para GEO).

Para obtener más información acerca de las características adicionales de Redis OSS 3, consulte [Redis OSS 3.2 release notes](https://github.com/redis/redis/blob/3.2/00-RELEASENOTES) y [Redis OSS 3.0 release notes](https://github.com/redis/redis/blob/3.0/00-RELEASENOTES).

El OSS Valkey o Redis ElastiCache gestionado actualmente (modo de clúster activado) no admite las siguientes funciones de Redis OSS 3.2:
+ Migración de réplica
+ Reequilibrado de clúster
+ Depurador Lua

ElastiCache deshabilita los siguientes comandos de administración de Redis OSS 3.2:
+ `cluster meet`
+ `cluster replicate`
+ `cluster flushslots`
+ `cluster addslots`
+ `cluster delslots`
+ `cluster setslot`
+ `cluster saveconfig`
+ `cluster forget`
+ `cluster failover`
+ `cluster bumpepoch`
+ `cluster set-config-epoch`
+ `cluster reset`

Para obtener más información acerca de los parámetros de Redis OSS 3.2.4, consulte [Cambios de parámetros de Redis OSS 3.2.4](ParameterGroups.Engine.md#ParameterGroups.Redis.3-2-4).

### Versiones 2.x de fin de vida útil (EOL) anteriores
<a name="redis-version-2-x-eol"></a>

#### ElastiCache versión 2.8.24 para Redis OSS (mejorada)
<a name="redis-version-2-8-24"></a>

Entre las mejoras de Redis OSS añadidas desde la versión 2.8.23 se incluyen varias correcciones de errores y el registro de direcciones de acceso a la memoria incorrectas. Para obtener más información, consulte [Redis OSS 2.8 release notes](https://github.com/redis/redis/blob/2.8/00-RELEASENOTES). 

#### ElastiCache versión 2.8.23 para Redis OSS (mejorada)
<a name="redis-version-2-8-23"></a>

Entre las mejoras de Redis OSS que se han añadido desde la versión 2.8.22, se incluyen varias correcciones de errores. Para obtener más información, consulte [Redis OSS 2.8 release notes](https://github.com/redis/redis/blob/2.8/00-RELEASENOTES). Esta versión también incluye compatibilidad con el nuevo parámetro `close-on-slave-write` que, si está habilitado, desconecta a los clientes que intentan escribir en una réplica de solo lectura.

Para obtener más información sobre los parámetros de Redis OSS 2.8.23, consulte la Guía del usuario. [Parámetros que se han añadido a Redis OSS 2.8.23 (mejorado)](ParameterGroups.Engine.md#ParameterGroups.Redis.2-8-23) ElastiCache 

#### ElastiCache versión 2.8.22 para Redis OSS (mejorada)
<a name="redis-version-2-8-22"></a>

Entre las mejoras de Redis OSS incorporadas desde la versión 2.8.21 se incluyen las siguientes:
+ Compatibilidad con las copias de seguridad y las sincronizaciones sin ramificaciones que permiten asignar menos memoria para las copias de seguridad y más para su aplicación. Para obtener más información, consulte [Cómo se implementan la sincronización y la copia de seguridad](Replication.Redis.Versions.md). El proceso sin ramificaciones puede afectar a la latencia y al rendimiento. En caso de elevado rendimiento de escritura, al volver a sincronizar una réplica es posible que esta no esté disponible durante la sincronización.
+ Si se produce una conmutación por error, los grupos de reproducción se recuperarán ahora más rápido porque las réplicas realizarán sincronizaciones parciales con el nodo principal en lugar de sincronizaciones completas siempre que sea posible. Además, tanto el nodo principal como las réplicas ya no usan el disco durante las sincronizaciones, lo que proporciona mayor velocidad.
+ Support para dos CloudWatch métricas nuevas. 
  + `ReplicationBytes`: número de bytes que el clúster principal de un grupo de reproducción envía a las réplicas de lectura.
  + `SaveInProgress`: valor binario que indica si hay un proceso de almacenamiento en ejecución en segundo plano.

   Para obtener más información, consulte [Supervisión del uso con CloudWatch métricas](CacheMetrics.md).
+ Varias correcciones de errores críticos en el comportamiento PSYNC de reproducción. Para obtener más información, consulte [Redis OSS 2.8 release notes](https://github.com/redis/redis/blob/2.8/00-RELEASENOTES).
+ Para mantener un rendimiento de replicación mejorado en los grupos de replicación en zonas de disponibilidad múltiples (Multi-AZ) y aumentar la estabilidad de los clústeres, ya no se ElastiCache admiten las réplicas.
+ Para mejorar la coherencia de los datos entre el clúster principal y las réplicas de un grupo de reproducción, las réplicas ya no desalojan claves independientes del clúster principal.
+ Las variables de configuración de Redis OSS `appendonly` y `appendfsync` no se admiten en la versión 2.8.22 de Redis OSS y las versiones posteriores.
+ En situaciones de baja memoria, es posible que los clientes que tengan un búfer de salida de gran tamaño se desconecten del clúster de réplica. En caso de desconexión, el cliente debe volver a conectarse. Estas situaciones son más probables para clientes PUBSUB.

#### ElastiCache versión 2.8.21 para Redis OSS
<a name="redis-version-2-8-21"></a>

Entre las mejoras de Redis OSS que se han añadido desde la versión 2.8.19 se incluyen varias correcciones de errores. Para obtener más información, consulte [Redis OSS 2.8 release notes](https://github.com/redis/redis/blob/2.8/00-RELEASENOTES).

#### ElastiCache versión 2.8.19 para Redis OSS
<a name="redis-version-2-8-19"></a>

Entre las mejoras de Redis OSS incorporadas desde la versión 2.8.6 se incluyen las siguientes:
+ Support for HyperLogLog. Para obtener más información, consulte la [nueva estructura de datos de Redis OSS: HyperLogLog](http://antirez.com/news/75).
+ El tipo de datos de conjuntos clasificados ahora es compatible con las consultas de gama lexicográfica gracias a los nuevos comandos `ZRANGEBYLEX`, `ZLEXCOUNT` y `ZREMRANGEBYLEX`.
+ Para evitar que un nodo principal envíe obsoletos a los nodos de réplica, se producirá un error en la sincronización principal si se interrumpe un proceso secundario de almacenamiento en segundo plano (`bgsave`).
+ Support para la *HyperLogLogBasedCommands* CloudWatchmétrica. Para obtener más información, consulte [Métricas de Valkey y Redis OSS](CacheMetrics.Redis.md).

#### ElastiCache versión 2.8.6 para Redis OSS
<a name="redis-version-2-8-6"></a>

Entre las mejoras de Redis OSS incorporadas desde la versión 2.6.13 se incluyen las siguientes:
+ Mejora de la flexibilidad y la tolerancia a errores de las réplicas de lectura.
+ Compatibilidad con la resincronización.
+ Compatibilidad con un número mínimo definido por el usuario de réplicas de lectura que deben estar disponibles en todo momento.
+ Compatibilidad completa con los clientes de notificación de publicaciones/suscripciones de eventos en el servidor.
+ Detección automática de errores en un nodo principal y de conmutaciones por error del nodo principal al nodo secundario.

#### ElastiCache versión 2.6.13 para Redis OSS
<a name="redis-version-2-6-13"></a>

ElastiCache la versión 2.6.13 para Redis OSS era la versión inicial de la versión compatible con Redis OSS. ElastiCache La ElastiCache versión 2.6.13 de Redis OSS no admite Multi-AZ.

## ElastiCache calendario de fin de vida de las versiones para Redis OSS
<a name="deprecated-engine-versions"></a>

En esta sección se definen las fechas de fin de vida útil (EOL) de las versiones principales más antiguas a medida que se anuncian. Esto le permite tomar decisiones sobre versiones y actualizaciones para el futuro.

**nota**  
ElastiCache las versiones 5.0.0 a 5.0.5 para Redis OSS están en desuso. Utilice las versiones 5.0.6 o superior.

En la siguiente tabla se muestra el calendario de [Extended Support](extended-support.md) ElastiCache para los motores OSS de Redis.

**Programación del soporte extendido y del fin de la vida útil**


| Versión principal del motor | Fecha de finalización del soporte estándar | Inicio del soporte extendido Y1 Premium | Inicio del soporte extendido Y2 Premium | Inicio del soporte extendido Y3 Premium | Fin del soporte extendido y versión EOL | 
| --- | --- | --- | --- | --- | --- | 
| Redis OSS versión 4 | 31 de enero de 2026 | 1/2/2026 | 1/2/2027 | 1/2/2028 | 31/1/2029 | 
| Redis OSS versión 5 | 31/1/2026 | 1/2/2026 | 1/2/2027 | 1/2/2028 | 31/1/2029 | 
| Redis OSS versión 6 | 31/1/2027 | 1/2/2027 | 1/2/2028 | 1/2/2029 | 31/1/2030 | 

La siguiente tabla resume cada versión y la fecha de fin de vida anunciada, así como la versión de destino de actualización recomendada. 

**EOL anterior**


| Versión principal de origen | Versiones secundarias de origen | Destino de actualización recomendado | Fecha de EOL | 
| --- | --- | --- | --- | 
|  Versión 3 |  3.2.4, 3.2.6 y 3.2.10  |  Versión 6.2 o superior  Para las regiones US-ISO-EAST -1, US-ISO-WEST -1 y US-ISOB-EAST -1, recomendamos una versión 5.0.6 o superior.   |  31 de julio de 2023  | 
|  Versión 2  |  2.8.24, 2.8.23, 2.8.22, 2.8.21, 2.8.19, 2.8.12, 2.8.6, 2.6.13  |  Versión 6.2 o superior  Para las regiones US-ISO-EAST US-ISO-WEST -1, -1 y US-ISOB-EAST -1, recomendamos una versión 5.0.6 o superior.   |  13 de enero de 2023  | 

## Compatible con las ElastiCache versiones de Memcached
<a name="supported-engine-versions-mc"></a>

ElastiCache admite las siguientes versiones de Memcached y se actualiza a versiones más recientes. Cuando actualice a una versión más reciente, preste especial atención a las condiciones que, si no se cumplen, harán que se produzca un error de actualización.

**Topics**
+ [ElastiCache versión 1.6.22 para Memcached](#memcached-version-1-6-22)
+ [ElastiCache versión 1.6.17 para Memcached](#memcached-version-1-6-17)
+ [ElastiCache versión 1.6.12 para Memcached](#memcached-version-1-6-12)
+ [ElastiCache versión 1.6.6 para Memcached](#memcached-version-1-6-6)
+ [ElastiCache versión 1.5.16 para Memcached](#memcached-version-1-5-16)
+ [ElastiCache versión 1.5.10 para Memcached](#memcached-version-1-5-10)
+ [ElastiCache versión 1.4.34 para Memcached](#memcached-version-1-4-34)
+ [ElastiCache versión 1.4.33 para Memcached](#memcached-version-1-4-33)
+ [ElastiCache versión 1.4.24 para Memcached](#memcached-version-1-4-24)
+ [ElastiCache versión 1.4.14 para Memcached](#memcached-version-1-4-14)
+ [ElastiCache versión 1.4.5 para Memcached](#memcached-version-1-4-5)

### ElastiCache versión 1.6.22 para Memcached
<a name="memcached-version-1-6-22"></a>

ElastiCache para Memcached, la versión 1.6.22 de Memcached añade compatibilidad con la versión 1.6.22 de Memcached. No incluye características nuevas, pero sí correcciones de errores y actualizaciones acumulativas de [Memcached 1.6.18](https://github.com/memcached/memcached/wiki/ReleaseNotes1618). 

[Para obtener más información, consulte 1622 en Memcached on. ReleaseNotes](https://github.com/memcached/memcached/wiki/ReleaseNotes1622) GitHub

### ElastiCache versión 1.6.17 para Memcached
<a name="memcached-version-1-6-17"></a>

ElastiCache para Memcached, la versión 1.6.17 de Memcached añade compatibilidad con la versión 1.6.17 del motor Memcached. No incluye características nuevas, pero sí correcciones de errores y actualizaciones acumulativas de [Memcached 1.6.17](https://github.com/memcached/memcached/wiki/ReleaseNotes1617). 

[Para obtener más información, consulte 1617 en Memcached on. ReleaseNotes](https://github.com/memcached/memcached/wiki/ReleaseNotes1617) GitHub

### ElastiCache versión 1.6.12 para Memcached
<a name="memcached-version-1-6-12"></a>

ElastiCache para Memcached, la versión 1.6.12 de Memcached añade compatibilidad con el motor Memcached 1.6.12 y el cifrado en tránsito. Incluye también correcciones de errores y actualizaciones acumulativas desde [Memcached 1.6.6](https://github.com/memcached/memcached/wiki/ReleaseNotes166). 

Para obtener más información, [ReleaseNotesconsulte](https://github.com/memcached/memcached/wiki/ReleaseNotes1612) 1612 en GitHub Memcached on.

### ElastiCache versión 1.6.6 para Memcached
<a name="memcached-version-1-6-6"></a>

ElastiCache para Memcached, la versión 1.6.6 de Memcached añade compatibilidad con la versión 1.6.6 de Memcached. [No incluye funciones nuevas, pero sí correcciones de errores y actualizaciones acumulativas de la versión 1.5.16 de Memcached.](https://github.com/memcached/memcached/wiki/ReleaseNotes1.5.16) ElastiCache [para Memcached no incluye soporte para Extstore.](https://memcached.org/extstore)

Para obtener más información, consulte [ReleaseNotes166](https://github.com/memcached/memcached/wiki/ReleaseNotes166) en Memcached on. GitHub

### ElastiCache versión 1.5.16 para Memcached
<a name="memcached-version-1-5-16"></a>

ElastiCache la versión 1.5.16 para Memcached añade soporte para la versión 1.5.16 de Memcached. No incluye características, pero sí correcciones de errores y actualizaciones acumulativas de [Memcached 1.5.14](https://github.com/memcached/memcached/wiki/ReleaseNotes1514) y [Memcached 1.5.15](https://github.com/memcached/memcached/wiki/ReleaseNotes1515).

[Para obtener más información, consulte las notas de la versión 1.5.16 de Memcached en Memcached on.](https://github.com/memcached/memcached/wiki/ReleaseNotes1516) GitHub

### ElastiCache versión 1.5.10 para Memcached
<a name="memcached-version-1-5-10"></a>

ElastiCache la versión 1.5.10 para Memcached admite las siguientes funciones de Memcached:
+ Reequilibrado automático de slabs.
+ Búsquedas más rápidas en tablas hash con el algoritmo `murmur3`.
+ Algoritmo LRU segmentado.
+ LRU crawler para realizar la operación background-reclaim con la memoria.
+ `--enable-seccomp`: opción de tiempo de compilación.

También introduce los parámetros `no_modern` e `inline_ascii_resp`. Para obtener más información, consulte [Cambios en los parámetros de Memcached 1.5.10](ParameterGroups.Engine.md#ParameterGroups.Memcached.1-5-10).

Entre las mejoras de Memcached añadidas desde ElastiCache la versión 1.4.34 para Memcached se incluyen las siguientes:
+ Correcciones acumulativas, tales como multigets ASCII, rastreos CVE-2017-9951 y de límite para `metadumper`. 
+ Mejor administración de conexiones al cerrar las conexiones que alcanzan el límite de conexión. 
+ Se ha mejorado la administración del tamaño de los elementos para tamaños de elementos superiores a 1 MB. 
+ Mejoras en el rendimiento y en la sobrecarga de memoria gracias a la reducción de los requisitos de memoria por elemento en unos pocos bytes.

Para obtener más información, consulte las notas de la versión 1.5.10 de Memcached en [Memcached on](https://github.com/memcached/memcached/wiki/ReleaseNotes1510). GitHub

### ElastiCache versión 1.4.34 para Memcached
<a name="memcached-version-1-4-34"></a>

ElastiCache la versión 1.4.34 para Memcached no añade nuevas funciones a la versión 1.4.33. La versión 1.4.34 es una versión de corrección de errores que es mayor que las versiones habituales de este tipo.

Para obtener más información, consulte las notas de la versión 1.4.34 de Memcached en [Memcached on](https://github.com/memcached/memcached/wiki/ReleaseNotes1434). GitHub

### ElastiCache versión 1.4.33 para Memcached
<a name="memcached-version-1-4-33"></a>

Entre las mejoras incorporadas desde la versión 1.4.24 se incluyen las siguientes:
+ Capacidad para volcar todos los metadatos para una determinada clase slab, una lista de clases slab o todas las clases slab. Para obtener más información, consulte [Memcached 1.4.31 Release Notes](https://github.com/memcached/memcached/wiki/ReleaseNotes1431).
+ Compatibilidad mejorada con elementos de gran tamaño superiores al tamaño predeterminado de 1 megabyte. Para obtener más información, consulte [Memcached 1.4.29 Release Notes](https://github.com/memcached/memcached/wiki/ReleaseNotes1429).
+ Posibilidad de especificar el tiempo durante el cual un cliente puede permanecer inactivo antes de solicitar su cierre.

  Posibilidad para incrementar de forma dinámica la cantidad de memoria disponible para Memcached sin tener que reiniciar el clúster. Para obtener más información, consulte [Memcached 1.4.27 Release Notes](https://github.com/memcached/memcached/wiki/ReleaseNotes1427).
+ Compatibilidad con el registro de `fetchers`, `mutations` y `evictions`. Para obtener más información, consulte [Memcached 1.4.26 Release Notes](https://github.com/memcached/memcached/wiki/ReleaseNotes1426).
+ Posibilidad de reclamar la memoria liberada en un grupo global para reasignarla a nuevas clases slab. Para obtener más información, consulte [Memcached 1.4.25 Release Notes](https://github.com/memcached/memcached/wiki/ReleaseNotes1425).
+ Varias correcciones de errores.
+ Incorporación de algunos comandos y parámetros nuevos. Para ver una lista, consulte [Parámetros agregados a Memcached 1.4.33](ParameterGroups.Engine.md#ParameterGroups.Memcached.1-4-33).

### ElastiCache versión 1.4.24 para Memcached
<a name="memcached-version-1-4-24"></a>

Entre las mejoras incorporadas desde la versión 1.4.14 se incluyen las siguientes:
+ Administración de elementos menos usados recientemente (LRU) mediante un proceso en segundo plano.
+ Se ha añadido la posibilidad de usar *jenkins* o *murmur3* como algoritmo hash.
+ Incorporación de algunos comandos y parámetros nuevos. Para ver una lista, consulte [Parámetros agregados a Memcached 1.4.24](ParameterGroups.Engine.md#ParameterGroups.Memcached.1-4-24).
+ Varias correcciones de errores.

### ElastiCache versión 1.4.14 para Memcached
<a name="memcached-version-1-4-14"></a>

Entre las mejoras incorporadas desde la versión 1.4.5 se incluyen las siguientes:
+ Capacidad mejorada para reequilibrar slab.
+ Mejora del rendimiento y la escalabilidad.
+ Se ha introducido el comando *touch* que permite actualizar hora de vencimiento de un elemento existente sin necesidad de recuperarlo.
+ Detección automática: capacidad para los programas de cliente de determinar automáticamente todos los nodos de caché en un clúster e iniciar y mantener las conexiones a todos estos nodos.

### ElastiCache versión 1.4.5 para Memcached
<a name="memcached-version-1-4-5"></a>

ElastiCache La versión 1.4.5 para Memcached era el motor inicial y la versión compatible con Amazon ElastiCache para Memcached.

# Diferencias de compatibilidad y comportamiento de versiones principales del motor con Valkey
<a name="VersionManagementConsiderations-valkey"></a>

Valkey 7.2.6 presenta diferencias de compatibilidad similares con las versiones anteriores de Redis OSS 7.2.4. Para ver la versión compatible más reciente de Valkey, consulte [Motores y versiones compatibles](VersionManagement.md#supported-engine-versions).

Para obtener más información sobre la versión 7.2 de Valkey, consulte [Redis OSS 7.2.4 Release Notes](https://github.com/valkey-io/valkey/blob/d2c8a4b91e8c0e6aefd1f5bc0bf582cddbe046b7/00-RELEASENOTES) (Valkey 7.2 incluye todos los cambios de Redis OSS hasta la versión 7.2.4) y [Valkey 7.2 release notes](https://github.com/valkey-io/valkey/blob/7.2/00-RELEASENOTES) en Valkey en GitHub.

Estos son los posibles cambios de comportamiento importantes entre Valkey 7.2 y Redis OSS 7.1 (o 7.0):
+ El muestreo temporal se bloquea durante la ejecución de comandos y en los scripts.
+ Un comando de flujo bloqueado que se ejecuta cuando la clave ya no existe contiene un código de error diferente (-NOGROUP o -WRONGTYPE en lugar de -UNBLOCKED). 
+ El seguimiento de scripts por parte del cliente ahora rastrea las claves que lee el script, en lugar de las claves declaradas por la persona que llama a EVAL/FCALL.

# Diferencias de compatibilidad y comportamiento de las versiones principales del motor con Redis OSS
<a name="VersionManagementConsiderations"></a>

**importante**  
La siguiente página está estructurada para indicar todas las diferencias de incompatibilidad entre las versiones e informarle de las consideraciones que debe tener en cuenta al actualizar a versiones más recientes. Esta lista incluye cualquier problema de incompatibilidad de versiones que pueda encontrar al actualizar.  
Puede actualizar directamente desde la versión actual de Redis OSS a la última versión de Redis OSS disponible, sin necesidad de realizar actualizaciones secuenciales. Por ejemplo, puede actualizar directamente desde la versión 3.0 de Redis OSS a la versión 7.0.

Las versiones de Redis OSS se identifican con una versión semántica que consta de un componente principal, secundario y de parches. Por ejemplo, en Redis OSS 4.0.10, la versión principal es 4, la versión secundaria 0 y la versión del parche es 10. Por lo general, estos valores se incrementan en función de las siguientes convenciones:
+ Las versiones principales son para cambios incompatibles con la API.
+ Las versiones secundarias son para nuevas funciones añadidas de manera compatible con versiones anteriores.
+ Las versiones de parche son para correcciones de errores compatibles con versiones anteriores y cambios no funcionales.

Recomendamos mantener siempre la última versión del parche dentro de una versión **major.minor** determinada para tener las mejoras de rendimiento y estabilidad más recientes. A partir de la ElastiCache versión 6.0 para Redis OSS, ElastiCache ofrecerá una sola versión para cada versión secundaria de Redis OSS en lugar de ofrecer varias versiones de parches. ElastiCachegestionará automáticamente la versión de parche de los clústeres en ejecución, lo que garantizará un rendimiento y una seguridad mejorados.

También recomendamos actualizar periódicamente a la última versión principal, ya que la mayoría de las mejoras importantes no se transfieren a versiones anteriores. A medida que ElastiCache se amplía la disponibilidad a una nueva AWS región, ElastiCache Redis OSS es compatible con las dos versiones **principales y secundarias más recientes de la nueva región en ese momento.** ****Por ejemplo, si se lanza una nueva AWS región y las últimas versiones principales o secundarias de Redis OSS son **7.0 y 6.2, ElastiCache serán compatibles con ElastiCache las versiones 7.0** **y 6.2** de Redis OSS en la nueva región.****AWS A medida que se publiquen nuevas versiones principales o secundarias de Redis OSS, se ElastiCache seguirá añadiendo soporte ElastiCache para las versiones más recientes. Para obtener más información sobre cómo elegir regiones ElastiCache, consulte [Elegir regiones](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/RegionsAndAZs.html#SupportedRegions) y zonas de disponibilidad. 

Cuando realice una actualización que abarque versiones principales o secundarias, tenga en cuenta la siguiente lista, que incluye el comportamiento y los cambios incompatibles con versiones anteriores publicados con Redis OSS a lo largo del tiempo. 

## Cambios de comportamiento e incompatibles con versiones anteriores de Redis OSS 7.0
<a name="VersionManagementConsiderations-redis70"></a>

Para obtener una lista completa de los cambios, consulte [Redis OSS 7.0 release notes](https://raw.githubusercontent.com/redis/redis/7.0/00-RELEASENOTES). 
+ `SCRIPT LOAD` y `SCRIPT FLUSH` ya no se propagan a réplicas. Si necesita algo de durabilidad para los scripts, le recomendamos que considere utilizar [funciones de Redis OSS](https://valkey.io/topics/functions-intro/).
+ Los canales de pubsub ahora están bloqueados de forma predeterminada para los nuevos usuarios de ACL.
+ El comando `STRALGO` se sustituyó por el comando `LCS`.
+ El formato de `ACL GETUSER` ha cambiado para que todos los campos muestren el patrón de cadena de acceso estándar. Si utilizaba la automatización mediante `ACL GETUSER`, debe comprobar que maneje cualquiera de los formatos.
+ Las categorías de ACL para `SELECT`, `WAIT`, `ROLE`, `LASTSAVE`, `READONLY`, `READWRITE` y `ASKING` han cambiado.
+ El comando `INFO` ahora muestra las estadísticas de los comandos por subcomando en lugar de en los comandos del contenedor de nivel superior.
+ Los valores devueltos de los comandos `LPOP`, `RPOP`, `ZPOPMIN` y `ZPOPMAX` han cambiado en determinados casos límite. Si utiliza estos comandos, debe consultar las notas de la versión y evaluar si se ve afectado.
+ Los comandos `SORT` y `SORT_RO` ahora requieren acceso a todo el espacio de claves para poder utilizar los argumentos `GET` y `BY`. 

## Cambios de comportamiento e incompatibles con versiones anteriores de Redis OSS 6.2
<a name="VersionManagementConsiderations-redis62"></a>

Para obtener una lista completa de los cambios, consulte [Redis OSS 6.2 release notes](https://raw.githubusercontent.com/redis/redis/6.2/00-RELEASENOTES). 
+ Los indicadores de ACL de los comandos `TIME`, `ECHO`, `ROLE` y `LASTSAVE` se cambiaron. Esto puede provocar que se rechacen los comandos previamente permitidos y viceversa. 
**nota**  
Ninguno de estos comandos modifica ni da acceso a los datos.
+ Al actualizar desde Redis OSS 6.0, se cambia el orden de los key/value pares devueltos por una respuesta de mapa a un script lua. Si sus scripts utilizan `redis.setresp()` o devuelven un mapa (nueva funcionalidad en Redis OSS 6.0), tenga en cuenta las implicaciones de que el script deje de funcionar en las actualizaciones.

## Cambios de comportamiento e incompatibles con versiones anteriores de Redis OSS 6.0
<a name="VersionManagementConsiderations-redis60"></a>

Para obtener una lista completa de los cambios, consulte [Redis OSS 6.0 release notes](https://raw.githubusercontent.com/redis/redis/6.0/00-RELEASENOTES). 
+ El número máximo de bases de datos permitidas se ha reducido de 1,2 millones a 10 mil. El valor predeterminado es 16 y no recomendamos el uso de valores mucho mayores, ya que hemos detectado problemas de rendimiento y memoria.
+ Establezca `AutoMinorVersionUpgrade` el parámetro en sí y ElastiCache gestionará la actualización de la versión secundaria mediante actualizaciones de autoservicio. Esto se gestionará a través de canales de notificación estándar a los clientes mediante una campaña de actualización de autoservicio. Para obtener más información, consulte [Actualizaciones de autoservicio](Self-Service-Updates.md) en. ElastiCache

## Cambios de comportamiento e incompatibles con versiones anteriores de Redis OSS 5.0
<a name="VersionManagementConsiderations-redis50"></a>

Para obtener una lista completa de los cambios, consulte [Redis OSS 5.0 release notes](https://raw.githubusercontent.com/redis/redis/5.0/00-RELEASENOTES). 
+ Los scripts se replican por efectos en lugar de volver a ejecutar el script en la réplica. Por lo general, esto mejora el rendimiento, pero puede aumentar la cantidad de datos replicados entre los principales y las réplicas. Existe una opción para volver al comportamiento anterior que solo está disponible en la ElastiCache versión 5.0 para Redis OSS.
+ Si está actualizando desde Redis OSS 4.0, algunos comandos de los scripts de LUA devolverán los argumentos en un orden diferente al de las versiones anteriores. En Redis OSS 4.0, Redis ordenaba algunas respuestas de forma lexográfica para hacer que fueran deterministas; este orden no se aplica cuando los scripts se replican por efectos.
+ En Redis OSS 5.0.3 y versiones posteriores, ElastiCache el OSS de Redis descargará parte del trabajo de E/S a núcleos en segundo plano en los tipos de instancias con más de 4. VCPUs Esto puede cambiar las características de rendimiento de Redis OSS y los valores de algunas métricas. Para obtener más información, consulte [¿Qué métricas debo monitorear?](CacheMetrics.WhichShouldIMonitor.md) para saber si necesita cambiar las métricas que ve.

## Cambios de comportamiento e incompatibles con versiones anteriores de Redis OSS 4.0
<a name="VersionManagementConsiderations-redis40"></a>

Para obtener una lista completa de los cambios, consulte [Redis OSS 4.0 release notes](https://raw.githubusercontent.com/redis/redis/4.0/00-RELEASENOTES). 
+ El registro lento ahora registra dos argumentos adicionales, el nombre y la dirección del cliente. Este cambio debe ser compatible con versiones anteriores a menos que dependa explícitamente de cada entrada de registro lento que contenga 3 valores.
+ El comando `CLUSTER NODES` ahora devuelve un formato ligeramente diferente, que no es compatible con versiones anteriores. Recomendamos que los clientes no usen este comando para obtener información sobre los nodos presentes en un clúster y que, en su lugar, usen `CLUSTER SLOTS`.

## EOL anterior
<a name="VersionManagementConsiderations-redis3x-scheduled"></a>

### Cambios de comportamiento e incompatibles con versiones anteriores de Redis OSS 3.2
<a name="VersionManagementConsiderations-redis32"></a>

Para obtener una lista completa de los cambios, consulte [Redis OSS 3.2 release notes](https://raw.githubusercontent.com/redis/redis/3.2/00-RELEASENOTES). 
+ No hay cambios de compatibilidad que destacar para esta versión.

Para obtener más información, consulte [ElastiCache calendario de fin de vida de las versiones para Redis OSS](engine-versions.md#deprecated-engine-versions).

### Cambios de comportamiento e incompatibles con versiones anteriores de Redis OSS 2.8
<a name="VersionManagementConsiderations-redis28"></a>

Para obtener una lista completa de los cambios, consulte [Redis OSS 2.8 release notes](https://raw.githubusercontent.com/redis/redis/2.8/00-RELEASENOTES). 
+ A partir de la versión 2.8.22 de Redis OSS, el AOF de Redis OSS ya no es compatible con Redis OSS. ElastiCache Recomendamos usar MemoryDB cuando sea necesario conservar los datos de forma duradera.
+ A partir de la versión 2.8.22 de Redis OSS, el OSS de Redis ya no permite adjuntar ElastiCache réplicas a las unidades principales alojadas en ellas. ElastiCache Durante la actualización, las réplicas externas se desconectarán y no podrán volver a conectarse. Recomendamos utilizar el almacenamiento en caché en el cliente, disponible en Redis OSS 6.0, como alternativa a las réplicas externas.
+ Los comandos `TTL` y `PTTL` ahora devuelven -2 si la clave no existe y -1 si existe pero no tiene fecha de caducidad asociada. En Redis OSS 2.6 y versiones anteriores, se devolvía -1 para ambas condiciones.
+ `SORT` con `ALPHA` ahora ordena según la configuración regional de intercalación local si no se utiliza la opción `STORE`.

Para obtener más información, consulte [ElastiCache calendario de fin de vida de las versiones para Redis OSS](engine-versions.md#deprecated-engine-versions).

# Consideraciones sobre la actualización al trabajar con clústeres basados en nodos
<a name="VersionManagement-upgrade-considerations"></a>

**nota**  
Las siguientes consideraciones solo son aplicables al actualizar clústeres basados en nodos. No se aplican a ElastiCache Serverless.

**Consideraciones sobre Valkey y Redis OSS**

Cuando actualice un clúster basado en nodo de Valkey o Redis OSS, tenga en cuenta lo siguiente.
+ La administración de la versión del motor está diseñada para que pueda tener el mayor control posible sobre cómo se produce la aplicación de parches. Sin embargo, ElastiCache se reserva el derecho de aplicar parches al clúster en su nombre en el improbable caso de que se produzca una vulnerabilidad de seguridad crítica en el sistema o en el software de la memoria caché.
+ A partir de la ElastiCache versión 7.2 para Valkey y la ElastiCache versión 6.0 para Redis OSS, ElastiCache ofrecerá una única versión para cada versión menor, en lugar de ofrecer varias versiones de parches.
+ A partir de la versión 5.0.6 del motor de Redis OSS, puede actualizar la versión del clúster con un tiempo de inactividad mínimo. El clúster está disponible para operaciones de lectura durante toda la actualización y para operaciones de escritura durante la mayoría del proceso, excepto durante la operación de conmutación por error, que dura unos segundos.
+ También puede actualizar sus ElastiCache clústeres con versiones anteriores a la 5.0.6. El proceso involucrado es el mismo, pero puede incurrir en un tiempo de conmutación por error más largo durante la propagación de DNS (de 30 s a 1 m). 
+ A partir de Redis OSS 7, ElastiCache permite cambiar entre Valkey o Redis OSS (modo de clúster desactivado) y Valkey o Redis OSS (modo de clúster activado).
+ El proceso de actualización del motor OSS de Amazon ElastiCache for Redis está diseñado para hacer todo lo posible por conservar los datos existentes y requiere una replicación correcta de Redis OSS. 
+ Al actualizar el motor, ElastiCache finalizará las conexiones de cliente existentes. Para minimizar el tiempo de inactividad durante las actualizaciones del motor, le recomendamos que implemente [las prácticas recomendadas para los clientes de Redis OSS](BestPractices.Clients.redis.md), con reintentos de errores y retrocesos exponenciales, así como las prácticas recomendadas para [minimizar el tiempo de inactividad durante el mantenimiento](BestPractices.MinimizeDowntime.md). 
+ No puede actualizar directamente de Valkey o Redis OSS (modo de clúster deshabilitado) a Valkey o Redis OSS (modo de clúster habilitado) cuando actualiza su motor. El siguiente procedimiento muestra cómo actualizar de Valkey o Redis OSS (modo de clúster deshabilitado) a Valkey o Redis OSS (modo de clúster habilitado).

**Actualización de una versión de motor de Valkey o Redis OSS (modo de clúster deshabilitado) a la versión del motor de Valkey o Redis OSS (modo de clúster habilitado)**

  1. Realice una copia de seguridad de su clúster o grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado). Para obtener más información, consulte [Copias de seguridad manuales](backups-manual.md).

  1. Utilice la copia de seguridad para crear y propagar un clúster de Valkey o Redis OSS (modo de clúster habilitado) con una partición (grupo de nodo). Especifique la nueva versión de motor y habilite el modo de clúster al crear el clúster o grupo de reproducción. Para obtener más información, consulte [Tutorial: propagación de un nuevo clúster basado en nodos con una copia de seguridad creada externamente](backups-seeding-redis.md).

  1. Elimine el clúster o el grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) anterior. Para obtener más información, consulte [Eliminar un clúster en ElastiCache](Clusters.Delete.md) o [Eliminación de un grupo de reproducción](Replication.DeletingRepGroup.md).

  1. Escale el nuevo grupo de replicación o clúster de Valkey o Redis OSS (modo de clúster habilitado) al número de particiones (grupos de nodo) que necesita. Para obtener más información, consulte [Escalado de clústeres de Valkey o Redis OSS (modo de clúster habilitado)](scaling-redis-cluster-mode-enabled.md)
+ Cuando actualiza las versiones principales del motor, por ejemplo de 5.0.6 a 6.0, debe seleccionar un grupo de parámetros nuevo que sea compatible con la versión del motor nueva.
+ Para clústeres de Redis OSS sencillos y clústeres con multi-AZ deshabilitado, recomendamos disponer de suficiente memoria para Redis OSS, tal y como se describe en [Forma de garantizar que dispone de memoria suficiente para crear una instantánea de Valkey o Redis OSS](BestPractices.BGSAVE.md). En estos casos, el nodo principal no está disponible para las solicitudes de servicio durante el proceso de actualización.
+ Para clústeres de Redis OSS con multi-AZ habilitado, también recomendamos que programe actualizaciones del motor durante los periodos de poco tráfico entrante. Cuando se actualiza a Redis OSS 5.0.6 o a una versión posterior, el clúster principal sigue disponible para atender solicitudes durante el proceso de actualización. 

  Los clústeres y grupos de reproducción con varias particiones se procesan y se aplican parches de la siguiente manera:
  + Todas las particiones se procesan en paralelo. Solo se realiza una operación de actualización en una partición a la vez.
  + En cada partición, todas las réplicas se procesan antes que el principal. Si hay menos réplicas en una partición, el principal de esa partición podrá procesarse antes que las réplicas de otras particiones terminen de procesarse.
  + En todas las particiones, los nodos principales se procesan en series. Solo se actualiza un nodo principal a la vez.
+ Si el cifrado se encuentra habilitado en su grupo de reproducción o clúster actual, no puede actualizar a una versión del motor que no admita cifrado, como de la versión 3.2.6 a la 3.2.10.

**Consideraciones sobre Memcached**

Cuando actualice un clúster de Memcached basado en nodos, tenga en cuenta lo siguiente.
+ La administración de la versión del motor está diseñada para que pueda tener el mayor control posible sobre cómo se produce la aplicación de parches. Sin embargo, ElastiCache se reserva el derecho de aplicar parches al clúster en su nombre en el improbable caso de que se produzca una vulnerabilidad de seguridad crítica en el sistema o en el software de la memoria caché.
+ Puesto que el motor de Memcached no es compatible con la persistencia, las actualizaciones de versión del motor de Memcached son siempre un proceso disruptivo que borra todos los datos de caché del clúster.

# Procedimientos recomendados y estrategias de almacenamiento en caché de ElastiCache
<a name="BestPractices"></a>

A continuación, puede encontrar los procedimientos recomendados para Amazon ElastiCache. Si observa estos procedimientos, mejorará el rendimiento y la fiabilidad de su caché. 

**Topics**
+ [Prácticas recomendadas generales](WorkingWithRedis.md)
+ [Prácticas recomendadas para utilizar réplicas de lectura](ReadReplicas.md)
+ [Comandos de Valkey, Memcached y Redis OSS compatibles y restringidos](SupportedCommands.md)
+ [Configuración y límites de Valkey y Redis OSS](RedisConfiguration.md)
+ [Ejemplos de clientes de IPv6 para Valkey, Memcached y Redis OSS](network-type-best-practices.md)
+ [Prácticas recomendadas para clientes (Valkey y Redis OSS)](BestPractices.Clients.redis.md)
+ [Prácticas recomendadas para clientes (Memcached)](BestPractices.Clients.memcached.md)
+ [Clústeres de ElastiCache de doble pila compatibles con TLS](#network-type-configuring-tls-enabled-dual-stack)
+ [Administración de la memoria reservada para Valkey y Redis OSS](redis-memory-management.md)
+ [Prácticas recomendadas al trabajar con clústeres basados en nodos de Valkey y Redis OSS](BestPractices.SelfDesigned.md)
+ [Estrategias de almacenamiento en caché para Memcached](Strategies.md)

# Prácticas recomendadas generales
<a name="WorkingWithRedis"></a>

A continuación, encontrará información sobre las prácticas recomendadas para utilizar las interfaces OSS de Valkey, Memcached y Redis en ellas. ElastiCache
+ **Utilice configuraciones habilitadas para el modo de clúster: el modo de clúster habilitado** permite que la caché se escale horizontalmente para lograr un mayor almacenamiento y rendimiento que una configuración en modo de clúster deshabilitado. ElastiCache La configuración sin servidor solo está disponible en una configuración habilitada para el modo de clúster.
+ **Utilice conexiones de larga duración**: crear una nueva conexión es caro, y requiere tiempo y recursos de CPU de la memoria caché. Reutilice las conexiones siempre que sea posible (por ejemplo, mediante la agrupación de conexiones) para amortizar este coste a lo largo de muchos comandos.
+ **Lectura desde réplicas**: si utiliza réplicas de lectura ElastiCache sin servidor o ha aprovisionado réplicas de lectura (clústeres basados en nodos), dirija las lecturas a las réplicas para lograr una mejor escalabilidad y reducir la latencia. and/or Las lecturas desde réplicas acaban siendo coherehentes con la principal.

  En un clúster basado en nodos, evite dirigir las solicitudes de lectura a una única réplica de lectura, ya que es posible que las lecturas no estén disponibles temporalmente si el nodo falla. Configure su cliente para que dirija las solicitudes de lectura al menos a dos réplicas de lectura, o dirija las lecturas a una única réplica y a la principal.

  En los sistemas ElastiCache sin servidor, la lectura desde el puerto de réplica (6380) dirigirá las lecturas a la zona de disponibilidad local del cliente siempre que sea posible, lo que reducirá la latencia de recuperación. Cuando se produzca un error, volverá automáticamente a los demás nodos.
+ **Evite los comandos costosos**: evite ejecutar operaciones computacionales e I/O intensivas, como los comandos y. `KEYS` `SMEMBERS` Recomendamos este enfoque porque estas operaciones aumentan la carga en el clúster e influyen en el rendimiento del clúster. En su lugar, utilice los comandos `SCAN` y `SSCAN`.
+ **Seguir las prácticas recomendadas de Lua**: evite los scripts Lua de ejecución prolongada y siempre declare por adelantado las claves que utiliza en los scripts Lua. Recomendamos este enfoque para determinar que el script Lua no está utilizando comandos de ranura cruzada. Asegúrese de que las claves utilizadas en scripts Lua pertenezcan a la misma ranura.
+ **Utilice sharded pub/sub**: cuando utilice Valkey o Redis OSS para soportar pub/sub cargas de trabajo con un alto rendimiento, le recomendamos que utilice [sharded pub/sub](https://valkey.io/topics/pubsub/) (disponible con Valkey y con Redis OSS 7 o posterior). Los clústeres tradicionales habilitados para pub/sub el modo clúster transmiten mensajes a todos los nodos del clúster, lo que puede resultar en un nivel alto. `EngineCPUUtilization` Tenga en cuenta que en los comandos ElastiCache tradicionales sin servidor. pub/sub commands internally use sharded pub/sub

**Topics**

# Prácticas recomendadas para utilizar réplicas de lectura
<a name="ReadReplicas"></a>

Muchas aplicaciones, como los almacenes de sesiones, las tablas de clasificación y los motores de recomendaciones, requieren una alta disponibilidad y gestionan muchas más operaciones de lectura que de escritura. A menudo, estas aplicaciones toleran datos ligeramente obsoletos (coherencia final), lo que significa que se acepta que distintos usuarios vean momentáneamente versiones ligeramente diferentes de los mismos datos. Por ejemplo:
+ Los resultados de las consultas en caché suelen tolerar datos ligeramente obsoletos, especialmente en el caso de los patrones de reserva de caché, en los que el origen de la verdad es externo.
+ En una tabla de clasificación de videojuegos, un retraso de unos segundos en la actualización de las puntuaciones no suele afectar de forma significativa a la experiencia del usuario.
+ En el caso de los almacenes de sesiones, algunos retrasos leves en la propagación de los datos de sesión entre las réplicas rara vez afectan a la funcionalidad de la aplicación.
+ Los motores de recomendaciones suelen utilizar el análisis de datos históricos, por lo que la coherencia en tiempo real es menos importante.

La coherencia final implica que todos los nodos de réplica devolverán los mismos datos una vez que se complete el proceso de replicación, normalmente en cuestión de milisegundos. En estos casos de uso, implementar réplicas de lectura es una estrategia eficaz para reducir la latencia al leer desde la instancia. ElastiCache

El uso de réplicas de lectura en Amazon ElastiCache puede proporcionar importantes beneficios de rendimiento a través de:

**Mejora de la escalabilidad de lectura**
+ Distribuye las operaciones de lectura entre varios nodos de réplica.
+ Las descargas leen el tráfico del nodo principal.
+ Se reduce la latencia de lectura al atender las solicitudes de réplicas más cercanas geográficamente.

**Rendimiento optimizado del nodo principal**
+ Asigna los recursos del nodo principal a las operaciones de escritura.
+ Reduce la sobrecarga de la conexión en el nodo principal.
+ Mejora el rendimiento de escritura y mantiene mejores tiempos de respuesta durante los períodos de más tráfico.

## Uso de Read from Replica en Serverless ElastiCache
<a name="ReadReplicas.serverless"></a>

ElastiCache serverless proporciona dos puntos finales diferentes para diferentes requisitos de coherencia. Los dos puntos de conexión utilizan el mismo nombre de DNS, pero puertos diferentes. Para utilizar el read-from-replica puerto, debe autorizar el acceso a ambos puertos desde la aplicación cliente mediante la [configuración de los grupos de seguridad y las listas de control de acceso a la red de su VPC](set-up.md#elasticache-install-grant-access-VPN).

**Punto de conexión del principal (puerto 6379)**
+ Se utiliza para operaciones que requieren coherencia inmediata.
+ Garantiza la lectura de la mayoría de los datos up-to-date
+ Es ideal para transacciones y operaciones de escritura críticas.
+ Es necesario para las operaciones de escritura.
+ Ejemplo: `test-12345.serverless.use1.cache.amazonaws.com:6379`

**Punto de conexión con latencia optimizada (puerto 6380)**
+ Optimizado para operaciones de lectura que pueden tolerar la coherencia final.
+ Cuando es posible, la ElastiCache tecnología sin servidor enruta automáticamente las solicitudes de lectura al nodo de réplica en la zona de disponibilidad local del cliente. Esta optimización reduce la latencia al evitar la latencia de red adicional que se produce al recuperar datos de un nodo en una zona de disponibilidad diferente.
+ ElastiCache serverless selecciona automáticamente los nodos disponibles en otras zonas si un nodo local no está disponible
+ Ejemplo: `test-12345.serverless.use1.cache.amazonaws.com:6380`
+ Los clientes como Glide y Lettuce detectarán automáticamente las lecturas y las enrutarán hacia el punto de conexión con latencia optimizada si está configurada la lectura desde réplicas. Si su cliente no permite configurar el enrutamiento (por ejemplo, valkey-java y versiones anteriores de jedis), debe definir la configuración correcta de puerto y cliente para la lectura desde réplicas.

## Conexión para leer réplicas en ElastiCache Serverless: Valkey y Glide
<a name="ReadReplicas.connecting-primary"></a>

En el siguiente fragmento de código, se muestra cómo configurar la lectura desde una réplica para ElastiCache Serverless en la biblioteca Valkey glide. No necesita especificar el puerto para la lectura desde réplicas, pero sí configurar el parámetro de enrutamiento `ReadFrom.PREFER_REPLICA`.

```
package glide.examples;

import glide.api.GlideClusterClient;
import glide.api.logging.Logger;
import glide.api.models.configuration.GlideClusterClientConfiguration;
import glide.api.models.configuration.NodeAddress;
import glide.api.models.exceptions.ClosingException;
import glide.api.models.exceptions.ConnectionException;
import glide.api.models.exceptions.TimeoutException;
import glide.api.models.configuration.ReadFrom;

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;

public class ClusterExample {

    public static void main(String[] args) {
        // Set logger configuration
        Logger.setLoggerConfig(Logger.Level.INFO);

        GlideClusterClient client = null;

        try {
            System.out.println("Connecting to Valkey Glide...");

            // Configure the Glide Client
            GlideClusterClientConfiguration config = GlideClusterClientConfiguration.builder()
                .address(NodeAddress.builder()
                    .host("your-endpoint")
                    .port(6379)
                    .build())
                .useTLS(true)
                .readFrom(ReadFrom.PREFER_REPLICA)
                .build();

            // Create the GlideClusterClient
            client = GlideClusterClient.createClient(config).get();
            System.out.println("Connected successfully.");

            // Perform SET operation
            CompletableFuture<String> setResponse = client.set("key", "value");
            System.out.println("Set key 'key' to 'value': " + setResponse.get());

            // Perform GET operation
            CompletableFuture<String> getResponse = client.get("key");
            System.out.println("Get response for 'key': " + getResponse.get());

            // Perform PING operation
            CompletableFuture<String> pingResponse = client.ping();
            System.out.println("PING response: " + pingResponse.get());

        } catch (ClosingException | ConnectionException | TimeoutException | ExecutionException e) {
            System.err.println("An exception occurred: ");
            e.printStackTrace();
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        } finally {
            // Close the client connection
            if (client != null) {
                try {
                    client.close();
                    System.out.println("Client connection closed.");
                } catch (ClosingException | ExecutionException e) {
                    System.err.println("Error closing client: " + e.getMessage());
                }
            }
        }
    }
}
```

# Comandos de Valkey, Memcached y Redis OSS compatibles y restringidos
<a name="SupportedCommands"></a>

## Comandos de Valkey y Redis OSS compatibles
<a name="SupportedCommandsRedis"></a>

**Comandos de Valkey y Redis OSS compatibles**

Las cachés sin servidor admiten los siguientes comandos de Valkey y Redis OSS. Además de estos comandos, estos [Comandos de Valkey y Redis OSS compatiblesComandos JSON](json-list-commands.md) también son compatibles.

Para obtener más información sobre los comandos del filtro de Bloom, consulte [Comandos de filtros de Bloom](BloomFilters.md#SupportedCommandsBloom)

**Comandos de mapa de bits**
+ `BITCOUNT`

  Cuenta el número de bits establecidos (recuento de integrantes) de una cadena.

  [Más información](https://valkey.io/commands/bitcount/)
+ `BITFIELD`

  Realiza operaciones arbitrarias con enteros de campos de bits en cadenas.

  [Más información](https://valkey.io/commands/bitfield/)
+ `BITFIELD_RO`

  Realiza operaciones arbitrarias de solo lectura con enteros de campos de bits en cadenas.

  [Más información](https://valkey.io/commands/bitfield_ro/)
+ `BITOP`

  Realiza operaciones bit a bit en varias cadenas y almacena el resultado.

  [Más información](https://valkey.io/commands/bitop/)
+ `BITPOS`

  Busca el primer bit activo (1) o inactivo (0) en una cadena.

  [Más información](https://valkey.io/commands/bitpos/)
+ `GETBIT`

  Devuelve el valor de un bit en una posición determinada.

  [Más información](https://valkey.io/commands/getbit/)
+ `SETBIT`

  Pone a 1 o 0 el bit de una posición determinada en el valor de la cadena. Crea la clave si esta no existe.

  [Más información](https://valkey.io/commands/setbit/)

**Comandos de administración de clústeres**
+ `CLUSTER COUNTKEYSINSLOT`

  Devuelve el número de claves en un slot hash.

  [Más información](https://valkey.io/commands/cluster-countkeysinslot/)
+ `CLUSTER GETKEYSINSLOT`

  Devuelve los nombres de las claves de un slot hash.

  [Más información](https://valkey.io/commands/cluster-getkeysinslot/)
+ `CLUSTER INFO`

  Devuelve información sobre el estado de un nodo. En una caché sin servidor, devuelve el estado de la única “partición” virtual expuesta al cliente.

  [Más información](https://valkey.io/commands/cluster-info/)
+ `CLUSTER KEYSLOT`

  Devuelve el slot hash de una clave.

  [Más información](https://valkey.io/commands/cluster-keyslot/)
+ `CLUSTER MYID`

  Devuelve el ID de un nodo. En una caché sin servidor, devuelve el estado de la única “partición” virtual expuesta al cliente. 

  [Más información](https://valkey.io/commands/cluster-myid/)
+ `CLUSTER NODES`

  Devuelve la configuración del clúster de un nodo. En una caché sin servidor, devuelve el estado de la única “partición” virtual expuesta al cliente. 

  [Más información](https://valkey.io/commands/cluster-nodes/)
+ `CLUSTER REPLICAS`

  Muestra los nodos de réplica de un nodo maestro. En una caché sin servidor, devuelve el estado de la única “partición” virtual expuesta al cliente. 

  [Más información](https://valkey.io/commands/cluster-replicas/)
+ `CLUSTER SHARDS`

  Devuelve la asignación de slots del clúster a las particiones. En una caché sin servidor, devuelve el estado de la única “partición” virtual expuesta al cliente. 

  [Más información](https://valkey.io/commands/cluster-shards/)
+ `CLUSTER SLOTS`

  Devuelve la asignación de slots del clúster a los nodos. En una caché sin servidor, devuelve el estado de la única “partición” virtual expuesta al cliente. 

  [Más información](https://valkey.io/commands/cluster-slots/)
+ `CLUSTER SLOT-STATS`

  Permite realizar un seguimiento de las métricas por ranura del recuento de claves, el uso de la CPU, los bytes de red entrantes y los bytes de red salientes. 

  [Más información](https://valkey.io/commands/cluster-slot-stats/)
+ `READONLY`

  Habilita las consultas de solo lectura para una conexión a un nodo de réplica de un clúster de Valkey o Redis OSS.

  [Más información](https://valkey.io/commands/readonly/)
+ `READWRITE`

  Habilita las consultas de lectura-escritura para una conexión a un nodo de réplica de un clúster de Valkey o Redis OSS.

  [Más información](https://valkey.io/commands/readwrite/)
+ `SCRIPT SHOW`

  Devuelve el código fuente original de un script en la caché de scripts.

  [Más información](https://valkey.io/commands/script-show/)

**Comandos de administración de conexiones**
+ `AUTH`

  Autentica la conexión.

  [Más información](https://valkey.io/commands/auth/)
+ `CLIENT GETNAME`

  Devuelve el nombre de la conexión.

  [Más información](https://valkey.io/commands/client-getname/)
+ `CLIENT REPLY`

  Le dice al servidor si debe responder a los comandos.

  [Más información](https://valkey.io/commands/client-reply/)
+ `CLIENT SETNAME`

  Establece el nombre de la conexión.

  [Más información](https://valkey.io/commands/client-setname/)
+ `ECHO`

  Devuelve la cadena determinada.

  [Más información](https://valkey.io/commands/echo/)
+ `HELLO`

  Protocolos de enlace con el servidor de Valkey o Redis OSS.

  [Más información](https://valkey.io/commands/hello/)
+ `PING`

  Devuelve la respuesta de vivacidad del servidor.

  [Más información](https://valkey.io/commands/ping/)
+ `QUIT`

  Cierra la conexión.

  [Más información](https://valkey.io/commands/quit/)
+ `RESET`

  Restablece la conexión.

  [Más información](https://valkey.io/commands/reset/)
+ `SELECT`

  Cambia la base de datos seleccionada.

  [Más información](https://valkey.io/commands/select/)

**Comandos genéricos**
+ `COPY`

  Copia el valor de una clave en una nueva clave.

  [Más información](https://valkey.io/commands/copy/)
+ `DEL`

  Elimina una o varias claves.

  [Más información](https://valkey.io/commands/del/)
+ `DUMP`

  Devuelve una representación serializada del valor almacenado en una clave.

  [Más información](https://valkey.io/commands/dump/)
+ `EXISTS`

  Determina si hay una o más claves.

  [Más información](https://valkey.io/commands/exists/)
+ `EXPIRE`

  Establece el tiempo de caducidad de una clave en segundos.

  [Más información](https://valkey.io/commands/expire/)
+ `EXPIREAT`

  Establece el tiempo de caducidad de una clave en una marca de tiempo de Unix.

  [Más información](https://valkey.io/commands/expireat/)
+ `EXPIRETIME`

  Devuelve el tiempo de caducidad de una clave como una marca de tiempo de Unix.

  [Más información](https://valkey.io/commands/expiretime/)
+ `PERSIST`

  Elimina el tiempo de caducidad de una clave.

  [Más información](https://valkey.io/commands/persist/)
+ `PEXPIRE`

  Establece el tiempo de caducidad de una clave en segundos.

  [Más información](https://valkey.io/commands/pexpire/)
+ `PEXPIREAT`

  Establece el tiempo de caducidad de una clave como una marca de milisegundos de Unix.

  [Más información](https://valkey.io/commands/pexpireat/)
+ `PEXPIRETIME`

  Devuelve el tiempo de caducidad de una clave como una marca de tiempo de milisegundos de Unix.

  [Más información](https://valkey.io/commands/pexpiretime/)
+ `PTTL`

  Devuelve el tiempo de caducidad de una clave en milisegundos.

  [Más información](https://valkey.io/commands/pttl/)
+ `RANDOMKEY`

  Devuelve un nombre de clave aleatorio de la base de datos.

  [Más información](https://valkey.io/commands/randomkey/)
+ `RENAME`

  Cambia el nombre de una clave y sobrescribe el destino.

  [Más información](https://valkey.io/commands/rename/)
+ `RENAMENX`

  Cambia el nombre de una clave solo cuando el nombre de la clave de destino no existe.

  [Más información](https://valkey.io/commands/renamenx/)
+ `RESTORE`

  Crea una clave a partir de la representación serializada de un valor.

  [Más información](https://valkey.io/commands/restore/)
+ `SCAN`

  Hace una iteración sobre los nombres de claves en la base de datos.

  [Más información](https://valkey.io/commands/scan/)
+ `SORT`

  Ordena los elementos de una lista, un conjunto o un conjunto ordenado y, opcionalmente, almacena el resultado.

  [Más información](https://valkey.io/commands/sort/)
+ `SORT_RO`

  Devuelve los elementos ordenados de una lista, un conjunto o un conjunto ordenado.

  [Más información](https://valkey.io/commands/sort_ro/)
+ `TOUCH`

  Devuelve el número de claves existentes entre las claves especificadas tras actualizar la hora en la que se accedió a ellas por última vez.

  [Más información](https://valkey.io/commands/touch/)
+ `TTL`

  Devuelve el tiempo de caducidad de una clave en segundos.

  [Más información](https://valkey.io/commands/ttl/)
+ `TYPE`

  Determina el tipo de valor almacenado en una clave.

  [Más información](https://valkey.io/commands/type/)
+ `UNLINK`

  Elimina de forma asíncrona una o más claves.

  [Más información](https://valkey.io/commands/unlink/)

**Comandos geoespaciales**
+ `GEOADD`

  Añade uno o varios miembros a un índice geoespacial. La clave se crea si no existe.

  [Más información](https://valkey.io/commands/geoadd/)
+ `GEODIST`

  Devuelve la distancia entre dos miembros de un índice geoespacial.

  [Más información](https://valkey.io/commands/geodist/)
+ `GEOHASH`

  Devuelve los miembros de un índice geoespacial como cadenas geohash.

  [Más información](https://valkey.io/commands/geohash/)
+ `GEOPOS`

  Devuelve la longitud y la latitud de los miembros de un índice geoespacial.

  [Más información](https://valkey.io/commands/geopos/)
+ `GEORADIUS`

  Consulta un índice geoespacial para ver los miembros que se encuentran a una distancia de una coordenada y, si lo desea, almacena el resultado.

  [Más información](https://valkey.io/commands/georadius/)
+ `GEORADIUS_RO`

  Devuelve los miembros de un índice geoespacial que se encuentran a una determinada distancia de una coordenada.

  [Más información](https://valkey.io/commands/georadius_ro/)
+ `GEORADIUSBYMEMBER`

  Consulta un índice geoespacial para ver los miembros que se encuentran a una determinada distancia de un miembro y, si lo desea, almacena el resultado.

  [Más información](https://valkey.io/commands/georadiusbymember/)
+ `GEORADIUSBYMEMBER_RO`

  Devuelve los miembros de un índice geoespacial que se encuentran a una determinada distancia de un miembro.

  [Más información](https://valkey.io/commands/georadiusbymember_ro/)
+ `GEOSEARCH`

  Consulta en un índice geoespacial a los miembros que se encuentran dentro del área de un cuadro o un círculo.

  [Más información](https://valkey.io/commands/geosearch/)
+ `GEOSEARCHSTORE`

  Consulta en un índice geoespacial a los miembros que se encuentran dentro del área de un cuadro o un círculo y, opcionalmente, almacena el resultado.

  [Más información](https://valkey.io/commands/geosearchstore/)

**Comandos hash**
+ `HDEL`

  Elimina uno o más campos (y sus valores) de un hash. Elimina el hash si no queda ningún campo.

  [Más información](https://valkey.io/commands/hdel/)
+ `HEXISTS`

  Determina si hay un campo en un hash.

  [Más información](https://valkey.io/commands/hexists/)
+ `HGET`

  Devuelve el valor de un campo en un hash.

  [Más información](https://valkey.io/commands/hget/)
+ `HGETALL`

  Devuelve todos los campos y valores de un hash.

  [Más información](https://valkey.io/commands/hgetall/)
+ `HINCRBY`

  Incrementa el valor entero de un campo en un hash por un número determinado. Usa 0 como valor inicial si el campo no existe.

  [Más información](https://valkey.io/commands/hincrby/)
+ `HINCRBYFLOAT`

  Incrementa el valor de punto flotante de un campo por un número determinado. Usa 0 como valor inicial si el campo no existe.

  [Más información](https://valkey.io/commands/hincrbyfloat/)
+ `HKEYS`

  Devuelve todos los campos de un hash.

  [Más información](https://valkey.io/commands/hkeys/)
+ `HLEN`

  Devuelve el número de campos en un hash.

  [Más información](https://valkey.io/commands/hlen/)
+ `HMGET`

  Devuelve todos los campos y valores en un hash.

  [Más información](https://valkey.io/commands/hmget/)
+ `HMSET`

  Establece los valores de varios campos.

  [Más información](https://valkey.io/commands/hmset/)
+ `HRANDFIELD`

  Devuelve uno o más campos aleatorios de un hash.

  [Más información](https://valkey.io/commands/hrandfield/)
+ `HSCAN`

  Hace iteraciones sobre los campos y valores de un hash.

  [Más información](https://valkey.io/commands/hscan/)
+ `HSET`

  Crea o modifica el valor de un campo en un hash.

  [Más información](https://valkey.io/commands/hset/)
+ `HSETNX`

  Establece el valor de un campo en un hash solo cuando el campo no existe.

  [Más información](https://valkey.io/commands/hsetnx/)
+ `HSTRLEN`

  Devuelve la longitud del valor de un campo.

  [Más información](https://valkey.io/commands/hstrlen/)
+ `HVALS`

  Devuelve todos valores de un hash.

  [Más información](https://valkey.io/commands/hvals/)

**HyperLogLog Comandos**
+ `PFADD`

  Añade elementos a una HyperLogLog clave. Crea la clave si esta no existe.

  [Más información](https://valkey.io/commands/pfadd/)
+ `PFCOUNT`

  Devuelve la cardinalidad aproximada de los conjuntos observados por las HyperLogLog claves.

  [Más información](https://valkey.io/commands/pfcount/)
+ `PFMERGE`

  Combina uno o más HyperLogLog valores en una sola clave.

  [Más información](https://valkey.io/commands/pfmerge/)

**Comandos de listas**
+ `BLMOVE`

  Saca un elemento de una lista, lo coloca en otra y lo devuelve. De lo contrario, bloquea hasta que haya un elemento disponible. Elimina la lista si se ha movido el último elemento.

  [Más información](https://valkey.io/commands/blmove/)
+ `BLMPOP`

  Saca el primer elemento de una de las múltiples listas. De lo contrario, bloquea hasta que haya un elemento disponible. Elimina la lista si se ha sacado el último elemento.

  [Más información](https://valkey.io/commands/blmpop/)
+ `BLPOP`

  Elimina y devuelve el primer elemento de una lista. De lo contrario, bloquea hasta que haya un elemento disponible. Elimina la lista si se ha sacado el último elemento.

  [Más información](https://valkey.io/commands/blpop/)
+ `BRPOP`

  Elimina y devuelve el último elemento de una lista. De lo contrario, bloquea hasta que haya un elemento disponible. Elimina la lista si se ha sacado el último elemento.

  [Más información](https://valkey.io/commands/brpop/)
+ `BRPOPLPUSH`

  Saca un elemento de una lista, lo coloca en otra y lo devuelve. De lo contrario, bloquea hasta que haya un elemento disponible. Elimina la lista si se ha sacado el último elemento.

  [Más información](https://valkey.io/commands/brpoplpush/)
+ `LINDEX`

  Devuelve un elemento de una lista por su índice.

  [Más información](https://valkey.io/commands/lindex/)
+ `LINSERT`

  Inserta un elemento antes o después de otro elemento de una lista.

  [Más información](https://valkey.io/commands/linsert/)
+ `LLEN`

  Devuelve la longitud de una lista.

  [Más información](https://valkey.io/commands/llen/)
+ `LMOVE`

  Devuelve un elemento después de sacarlo de una lista y pasarlo a otra. Elimina la lista si se ha movido el último elemento.

  [Más información](https://valkey.io/commands/lmove/)
+ `LMPOP`

  Devuelve varios elementos de una lista después de eliminarlos. Elimina la lista si se ha sacado el último elemento.

  [Más información](https://valkey.io/commands/lmpop/)
+ `LPOP`

  Devuelve los primeros elementos de una lista después de eliminarla. Elimina la lista si se ha sacado el último elemento.

  [Más información](https://valkey.io/commands/lpop/)
+ `LPOS`

  Devuelve el índice de los elementos coincidentes de una lista.

  [Más información](https://valkey.io/commands/lpos/)
+ `LPUSH`

  Antepone uno o más elementos a una lista. Crea la clave si esta no existe.

  [Más información](https://valkey.io/commands/lpush/)
+ `LPUSHX`

  Antepone uno o más elementos a una lista solo cuando la lista existe.

  [Más información](https://valkey.io/commands/lpushx/)
+ `LRANGE`

  Devuelve un rango de elementos de una lista.

  [Más información](https://valkey.io/commands/lrange/)
+ `LREM`

  Elimina elementos de una lista. Elimina la lista si se ha eliminado el último elemento.

  [Más información](https://valkey.io/commands/lrem/)
+ `LSET`

  Establece el valor de un elemento de una lista por su índice.

  [Más información](https://valkey.io/commands/lset/)
+ `LTRIM`

  Elimina los elementos de ambos extremos de la lista. Elimina la lista si se han recortado todos los elementos.

  [Más información](https://valkey.io/commands/ltrim/)
+ `RPOP`

  Elimina y devuelve los últimos elementos de una lista. Elimina la lista si se ha sacado el último elemento.

  [Más información](https://valkey.io/commands/rpop/)
+ `RPOPLPUSH`

  Devuelve el último elemento de una lista después de extraerlo y colocarlo en otra lista. Elimina la lista si se ha sacado el último elemento.

  [Más información](https://valkey.io/commands/rpoplpush/)
+ `RPUSH`

  Antepone uno o más elementos a una lista. Crea la clave si esta no existe.

  [Más información](https://valkey.io/commands/rpush/)
+ `RPUSHX`

  Añade un elemento a una lista solo cuando la lista existe.

  [Más información](https://valkey.io/commands/rpushx/)

**Comandos Pub/Sub**

**nota**  
Los comandos PUBSUB utilizan internamente PUBSUB con particiones, por lo que los nombres de los canales se mezclarán.
+ `PUBLISH`

  Publica un mensaje en un canal.

  [Más información](https://valkey.io/commands/publish/)
+ `PUBSUB CHANNELS`

  Devuelve los canales activos.

  [Más información](https://valkey.io/commands/pubsub-channels/)
+ `PUBSUB NUMSUB`

  Devuelve el recuento de suscriptores a los canales.

  [Más información](https://valkey.io/commands/pubsub-numsub/)
+ `PUBSUB SHARDCHANNELS`

  Devuelve los canales de particiones activos.

  [Más información](https://valkey.io/commands/pubsub-shardchannels/)
+ `PUBSUB SHARDNUMSUB`

  Devuelve el recuento de suscriptores a los canales de particiones.

  [Más información](https://valkey.io/commands/pubsub-shardnumsub/)
+ `SPUBLISH`

  Publicación de un mensaje en un canal de partición

  [Más información](https://valkey.io/commands/spublish/)
+ `SSUBSCRIBE`

  Escucha los mensajes publicados en los canales de particiones.

  [Más información](https://valkey.io/commands/ssubscribe/)
+ `SUBSCRIBE`

  Escucha los mensajes publicados en los canales.

  [Más información](https://valkey.io/commands/subscribe/)
+ `SUNSUBSCRIBE`

  Deja de escuchar los mensajes publicados en los canales de particiones.

  [Más información](https://valkey.io/commands/sunsubscribe/)
+ `UNSUBSCRIBE`

  Deja de escuchar los mensajes publicados en los canales.

  [Más información](https://valkey.io/commands/unsubscribe/)

**Comandos de scripts**
+ `EVAL`

  Ejecuta un script de Lua en el lado del servidor.

  [Más información](https://valkey.io/commands/eval/)
+ `EVAL_RO`

  Ejecuta un script de Lua de solo lectura en el lado del servidor.

  [Más información](https://valkey.io/commands/eval_ro/)
+ `EVALSHA`

  Ejecuta un script de Lua del lado del servidor por resumen. SHA1 

  [Más información](https://valkey.io/commands/evalsha/)
+ `EVALSHA_RO`

  Ejecuta un script de Lua del lado del servidor de solo lectura mediante resumen. SHA1 

  [Más información](https://valkey.io/commands/evalsha_ro/)
+ `SCRIPT EXISTS`

  Determina si hay scripts de Lua del lado del servidor en la caché de scripts.

  [Más información](https://valkey.io/commands/script-exists/)
+ `SCRIPT FLUSH`

  Actualmente no está en funcionamiento y la caché del script está administrada por el servicio. 

  [Más información](https://valkey.io/commands/script-flush/)
+ `SCRIPT LOAD`

  Carga un script de Lua del lado del servidor en la caché de scripts.

  [Más información](https://valkey.io/commands/script-load/)

**Comandos de administración de servidores**

**nota**  
Cuando se utilizan ElastiCache clústeres basados en nodos para Valkey y Redis OSS, el cliente debe enviar los comandos de vaciado a todos los servidores principales para vaciar todas las claves. ElastiCache Serverless para Valkey y Redis OSS funciona de forma diferente, ya que abstrae la topología del clúster subyacente. El resultado es que, en ElastiCache Serverless, `FLUSHDB` los `FLUSHALL` comandos siempre vaciarán todas las claves del clúster. Por este motivo, los comandos de vaciado no se pueden incluir en una transacción sin servidor. 
+ `ACL CAT`

  Muestra las categorías de ACL o los comandos dentro de una categoría.

  [Más información](https://valkey.io/commands/acl-cat/)
+ `ACL GENPASS`

  Genera una contraseña segura y pseudoaleatoria que se puede utilizar para identificar a los usuarios de ACL.

  [Más información](https://valkey.io/commands/acl-genpass/)
+ `ACL GETUSER`

  Muestra las reglas de ACL de un usuario.

  [Más información](https://valkey.io/commands/acl-getuser/)
+ `ACL LIST`

  Coloca las reglas vigentes en formato de archivo ACL.

  [Más información](https://valkey.io/commands/acl-list/)
+ `ACL USERS`

  Muestra todos los usuarios de ACL.

  [Más información](https://valkey.io/commands/acl-users/)
+ `ACL WHOAMI`

  Devuelve el nombre de usuario autenticado de la conexión actual.

  [Más información](https://valkey.io/commands/acl-whoami/)
+ `DBSIZE`

  Devuelve el número de claves de la base de datos actualmente seleccionada. No se garantiza que esta operación sea integral en todos los slots.

  [Más información](https://valkey.io/commands/dbsize/)
+ `COMMAND`

  Devuelve información detallada sobre todos los comandos.

  [Más información](https://valkey.io/commands/command/)
+ `COMMAND COUNT`

  Devuelve un recuento de comandos.

  [Más información](https://valkey.io/commands/command-count/)
+ `COMMAND DOCS`

  Devuelve información documental sobre un comando, varios o todos ellos.

  [Más información](https://valkey.io/commands/command-docs/)
+ `COMMAND GETKEYS`

  Extrae los nombres de claves de un comando arbitrario.

  [Más información](https://valkey.io/commands/command-getkeys/)
+ `COMMAND GETKEYSANDFLAGS`

  Extrae los nombres de claves y los indicadores de acceso de un comando arbitrario.

  [Más información](https://valkey.io/commands/command-getkeysandflags/)
+ `COMMAND INFO`

  Devuelve información sobre un comando, varios o todos ellos.

  [Más información](https://valkey.io/commands/command-info/)
+ `COMMAND LIST`

  Devuelve una lista de nombres de comandos.

  [Más información](https://valkey.io/commands/command-list/)
+ `COMMANDLOG`

  Contenedor para los comandos del registro de comandos.

  [Más información](https://valkey.io/commands/commandlog/)
+ `COMMANDLOG GET`

  Devuelve las entradas del registro de comandos especificado.

  [Más información](https://valkey.io/commands/commandlog-get/)
+ `COMMANDLOG HELP`

  Muestra texto útil sobre los distintos subcomandos.

  [Más información](https://valkey.io/commands/commandlog-help/)
+ `COMMANDLOG LEN`

  Devuelve el número de entradas del tipo de registro de comandos especificado.

  [Más información](https://valkey.io/commands/commandlog-len/)
+ `COMMANDLOG RESET`

  Borra todas las entradas del tipo de registro de comandos especificado.

  [Más información](https://valkey.io/commands/commandlog-reset/)
+ `FLUSHALL`

  Elimina todas las claves de todas las bases de datos. No se garantiza que esta operación sea integral en todos los slots. 

  [Más información](https://valkey.io/commands/flushall/)
+ `FLUSHDB`

  Elimina todas las claves de la base de datos actual. No se garantiza que esta operación sea integral en todos los slots.

  [Más información](https://valkey.io/commands/flushdb/)
+ `INFO`

  Devuelve información y estadísticas sobre el servidor.

  [Más información](https://valkey.io/commands/info/)
+ `LOLWUT`

  Muestra expresiones de arte computacional y la versión de Valkey o Redis OSS.

  [Más información](https://valkey.io/commands/lolwut/)
+ `ROLE`

  Devuelve la función de réplica.

  [Más información](https://valkey.io/commands/role/)
+ `TIME`

  Devuelve la hora del servidor.

  [Más información](https://valkey.io/commands/time/)

**Comandos para conjuntos**
+ `SADD`

  Añade uno o varios miembros a un conjunto. Crea la clave si esta no existe.

  [Más información](https://valkey.io/commands/sadd/)
+ `SCARD`

  Devuelve el número de miembros de un conjunto.

  [Más información](https://valkey.io/commands/scard/)
+ `SDIFF`

  Devuelve la diferencia de varios conjuntos.

  [Más información](https://valkey.io/commands/sdiff/)
+ `SDIFFSTORE`

  Almacena la diferencia de varios conjuntos en una clave.

  [Más información](https://valkey.io/commands/sdiffstore/)
+ `SINTER`

  Devuelve la intersección de varios conjuntos.

  [Más información](https://valkey.io/commands/sinter/)
+ `SINTERCARD`

  Devuelve el número de miembros de la intersección de varios conjuntos.

  [Más información](https://valkey.io/commands/sintercard/)
+ `SINTERSTORE`

  Almacena la intersección de varios conjuntos en una clave.

  [Más información](https://valkey.io/commands/sinterstore/)
+ `SISMEMBER`

  Determina si un miembro pertenece a un conjunto.

  [Más información](https://valkey.io/commands/sismember/)
+ `SMEMBERS`

  Devuelve todos los miembros de un conjunto.

  [Más información](https://valkey.io/commands/smembers/)
+ `SMISMEMBER`

  Determina si varios miembros pertenecen a un conjunto.

  [Más información](https://valkey.io/commands/smismember/)
+ `SMOVE`

  Mueve un miembro de un conjunto a otro.

  [Más información](https://valkey.io/commands/smove/)
+ `SPOP`

  Devuelve uno o más miembros aleatorios de un conjunto después de eliminarlos. Elimina la lista si se ha sacado el último miembro.

  [Más información](https://valkey.io/commands/spop/)
+ `SRANDMEMBER`

  Obtiene uno o varios miembros aleatorios de un conjunto

  [Más información](https://valkey.io/commands/srandmember/)
+ `SREM`

  Elimina uno o varios miembros de un conjunto. Elimina el conjunto si se ha extraído el último miembro.

  [Más información](https://valkey.io/commands/srem/)
+ `SSCAN`

  Hace iteraciones sobre los miembros de un conjunto.

  [Más información](https://valkey.io/commands/sscan/)
+ `SUNION`

  Devuelve la unión de varios conjuntos.

  [Más información](https://valkey.io/commands/sunion/)
+ `SUNIONSTORE`

  Almacena la unión de varios conjuntos en una clave.

  [Más información](https://valkey.io/commands/sunionstore/)

**Comandos de conjuntos ordenados**
+ `BZMPOP`

  Elimina y devuelve un miembro por puntuación desde uno o más conjuntos ordenados. De lo contrario, bloquea hasta que haya un miembro disponible. Elimina el conjunto ordenado si se ha sacado el último elemento.

  [Más información](https://valkey.io/commands/bzmpop/)
+ `BZPOPMAX`

  Elimina y devuelve el miembro con la puntuación más alta de uno o más conjuntos ordenados. De lo contrario, bloquea hasta que haya un miembro disponible. Elimina el conjunto ordenado si se ha sacado el último elemento.

  [Más información](https://valkey.io/commands/bzpopmax/)
+ `BZPOPMIN`

  Elimina y devuelve el miembro con la puntuación más baja de uno o más conjuntos ordenados. De lo contrario, bloquea hasta que haya un miembro disponible. Elimina el conjunto ordenado si se ha sacado el último elemento.

  [Más información](https://valkey.io/commands/bzpopmin/)
+ `ZADD`

  Añade uno o más miembros a un conjunto ordenado o actualiza sus puntuaciones. Crea la clave si esta no existe.

  [Más información](https://valkey.io/commands/zadd/)
+ `ZCARD`

  Devuelve el número de miembros de un conjunto ordenado.

  [Más información](https://valkey.io/commands/zcard/)
+ `ZCOUNT`

  Devuelve el recuento de miembros de un conjunto ordenado con puntuaciones dentro de un rango determinado.

  [Más información](https://valkey.io/commands/zcount/)
+ `ZDIFF`

  Devuelve la diferencia entre varios conjuntos ordenados.

  [Más información](https://valkey.io/commands/zdiff/)
+ `ZDIFFSTORE`

  Almacena la diferencia de varios conjuntos en una clave.

  [Más información](https://valkey.io/commands/zdiffstore/)
+ `ZINCRBY`

  Incrementa la puntuación de un miembro en un conjunto ordenado.

  [Más información](https://valkey.io/commands/zincrby/)
+ `ZINTER`

  Devuelve la intersección de varios conjuntos ordenados.

  [Más información](https://valkey.io/commands/zinter/)
+ `ZINTERCARD`

  Devuelve el número de miembros de la intersección de varios conjuntos ordenados.

  [Más información](https://valkey.io/commands/zintercard/)
+ `ZINTERSTORE`

  Almacena la intersección de varios conjuntos ordenados en una clave.

  [Más información](https://valkey.io/commands/zinterstore/)
+ `ZLEXCOUNT`

  Devuelve el número de miembros de un conjunto ordenado dentro de un rango lexicográfico.

  [Más información](https://valkey.io/commands/zlexcount/)
+ `ZMPOP`

  Devuelve los miembros con la puntuación más alta o más baja de uno o más conjuntos ordenados después de eliminarlos. Elimina el conjunto ordenado si se ha sacado el último miembro.

  [Más información](https://valkey.io/commands/zmpop/)
+ `ZMSCORE`

  Devuelve la puntuación de uno o más miembros de un conjunto ordenado.

  [Más información](https://valkey.io/commands/zmscore/)
+ `ZPOPMAX`

  Devuelve los miembros con la puntuación más alta de un conjunto ordenado después de eliminarlos. Elimina el conjunto ordenado si se ha sacado el último miembro.

  [Más información](https://valkey.io/commands/zpopmax/)
+ `ZPOPMIN`

  Devuelve los miembros con la puntuación más baja de un conjunto ordenado después de eliminarlos. Elimina el conjunto ordenado si se ha sacado el último miembro.

  [Más información](https://valkey.io/commands/zpopmin/)
+ `ZRANDMEMBER`

  Devuelve uno o más miembros aleatorios de un conjunto ordenado.

  [Más información](https://valkey.io/commands/zrandmember/)
+ `ZRANGE`

  Devuelve los miembros de un conjunto ordenado dentro de un rango de índices.

  [Más información](https://valkey.io/commands/zrange/)
+ `ZRANGEBYLEX`

  Devuelve los miembros de un conjunto ordenado dentro de un rango lexicográfico.

  [Más información](https://valkey.io/commands/zrangebylex/)
+ `ZRANGEBYSCORE`

  Devuelve los miembros de un conjunto ordenado dentro de un rango de puntuaciones.

  [Más información](https://valkey.io/commands/zrangebyscore/)
+ `ZRANGESTORE`

  Almacena un rango de miembros de un conjunto ordenado en una clave.

  [Más información](https://valkey.io/commands/zrangestore/)
+ `ZRANK`

  Devuelve el índice de un miembro en un conjunto ordenado por puntuaciones ascendentes.

  [Más información](https://valkey.io/commands/zrank/)
+ `ZREM`

  Elimina uno o varios miembros de un conjunto ordenado. Elimina el conjunto ordenado si se han eliminado todos los miembros.

  [Más información](https://valkey.io/commands/zrem/)
+ `ZREMRANGEBYLEX`

  Elimina los miembros de un conjunto ordenado dentro de un rango lexicográfico. Elimina el conjunto ordenado si se han eliminado todos los miembros.

  [Más información](https://valkey.io/commands/zremrangebylex/)
+ `ZREMRANGEBYRANK`

  Elimina los miembros de un conjunto ordenado dentro de un rango de índices. Elimina el conjunto ordenado si se han eliminado todos los miembros.

  [Más información](https://valkey.io/commands/zremrangebyrank/)
+ `ZREMRANGEBYSCORE`

  Elimina los miembros de un conjunto ordenado dentro de un rango de puntuaciones. Elimina el conjunto ordenado si se han eliminado todos los miembros.

  [Más información](https://valkey.io/commands/zremrangebyscore/)
+ `ZREVRANGE`

  Devuelve los miembros de un conjunto ordenado dentro de un rango de índices en orden inverso.

  [Más información](https://valkey.io/commands/zrevrange/)
+ `ZREVRANGEBYLEX`

  Devuelve los miembros de un conjunto ordenado dentro de un rango lexicográfico en orden inverso.

  [Más información](https://valkey.io/commands/zrevrangebylex/)
+ `ZREVRANGEBYSCORE`

  Devuelve los miembros de un conjunto ordenado dentro de un rango de puntuaciones en orden inverso.

  [Más información](https://valkey.io/commands/zrevrangebyscore/)
+ `ZREVRANK`

  Devuelve el índice de un miembro en un conjunto ordenado por puntuaciones descendientes.

  [Más información](https://valkey.io/commands/zrevrank/)
+ `ZSCAN`

  Hace iteraciones sobre los miembros y las puntuaciones de un conjunto ordenado.

  [Más información](https://valkey.io/commands/zscan/)
+ `ZSCORE`

  Devuelve la puntuación de un miembro en un conjunto ordenado.

  [Más información](https://valkey.io/commands/zscore/)
+ `ZUNION`

  Devuelve la unión de varios conjuntos ordenados.

  [Más información](https://valkey.io/commands/zunion/)
+ `ZUNIONSTORE`

  Almacena la unión de varios conjuntos ordenados en una clave.

  [Más información](https://valkey.io/commands/zunionstore/)

**Comandos de transmisión**
+ `XACK`

  Devuelve el número de mensajes confirmados correctamente por el miembro del grupo de consumidores de una transmisión.

  [Más información](https://valkey.io/commands/xack/)
+ `XADD`

  Añade un mensaje nuevo a una transmisión. Crea la clave si esta no existe.

  [Más información](https://valkey.io/commands/xadd/)
+ `XAUTOCLAIM`

  Cambia o adquiere la propiedad de los mensajes de un grupo de consumidores, como si los mensajes se hubieran entregado como miembro del grupo de consumidores.

  [Más información](https://valkey.io/commands/xautoclaim/)
+ `XCLAIM`

  Cambia o adquiere la propiedad de un mensaje en un grupo de consumidores, como si el mensaje se hubiera entregado por parte de un miembro del grupo de consumidores.

  [Más información](https://valkey.io/commands/xclaim/)
+ `XDEL`

  Devuelve el número de mensajes después de eliminarlos de una transmisión.

  [Más información](https://valkey.io/commands/xdel/)
+ `XGROUP CREATE`

  Crea un grupo de consumidores. 

  [Más información](https://valkey.io/commands/xgroup-create/)
+ `XGROUP CREATECONSUMER`

  Crea un consumidor en un grupo de consumidores.

  [Más información](https://valkey.io/commands/xgroup-createconsumer/)
+ `XGROUP DELCONSUMER`

  Elimina un consumidor de un grupo de consumidores.

  [Más información](https://valkey.io/commands/xgroup-delconsumer/)
+ `XGROUP DESTROY`

  Destruye un grupo de consumidores.

  [Más información](https://valkey.io/commands/xgroup-destroy/)
+ `XGROUP SETID`

  Establece el último ID entregado de un grupo de consumidores.

  [Más información](https://valkey.io/commands/xgroup-setid/)
+ `XINFO CONSUMERS`

  Devuelve una lista de los consumidores de un grupo de consumidores.

  [Más información](https://valkey.io/commands/xinfo-consumers/)
+ `XINFO GROUPS`

  Devuelve una lista de los grupos de consumidores de una transmisión.

  [Más información](https://valkey.io/commands/xinfo-groups/)
+ `XINFO STREAM`

  Devuelve información sobre una transmisión.

  [Más información](https://valkey.io/commands/xinfo-stream/)
+ `XLEN`

  Devuelve la cantidad de mensajes en una transmisión.

  [Más información](https://valkey.io/commands/xlen/)
+ `XPENDING`

  Devuelve la información y las entradas de la lista de entradas pendientes de un grupo de consumidores de una transmisión.

  [Más información](https://valkey.io/commands/xpending/)
+ `XRANGE`

  Devuelve los mensajes de una secuencia dentro de un rango de. IDs

  [Más información](https://valkey.io/commands/xrange/)
+ `XREAD`

  Devuelve los mensajes de varios flujos con IDs un número mayor al solicitado. De lo contrario, bloquea hasta que haya un mensaje disponible.

  [Más información](https://valkey.io/commands/xread/)
+ `XREADGROUP`

  Devuelve mensajes nuevos o históricos de una transmisión para un consumidor en un grupo. De lo contrario, bloquea hasta que haya un mensaje disponible.

  [Más información](https://valkey.io/commands/xreadgroup/)
+ `XREVRANGE`

  Devuelve los mensajes de una secuencia dentro de un rango de IDs en orden inverso.

  [Más información](https://valkey.io/commands/xrevrange/)
+ `XTRIM`

  Elimina los mensajes desde el principio de una transmisión.

  [Más información](https://valkey.io/commands/xtrim/)

**Comandos de cadenas**
+ `APPEND`

  Añade una cadena al valor de una clave. Crea la clave si esta no existe.

  [Más información](https://valkey.io/commands/append/)
+ `DECR`

  Disminuye en uno el valor entero de una clave. Utiliza 0 como valor inicial si la clave no existe.

  [Más información](https://valkey.io/commands/decr/)
+ `DECRBY`

  Disminuye un número del valor entero de una clave. Utiliza 0 como valor inicial si la clave no existe.

  [Más información](https://valkey.io/commands/decrby/)
+ `GET`

  Devuelve el valor de cadena de una clave.

  [Más información](https://valkey.io/commands/get/)
+ `GETDEL`

  Devuelve el valor de cadena de una clave tras eliminarla.

  [Más información](https://valkey.io/commands/getdel/)
+ `GETEX`

  Devuelve el valor de cadena de una clave tras establecer su fecha de caducidad.

  [Más información](https://valkey.io/commands/getex/)
+ `GETRANGE`

  Devuelve una subcadena de la cadena almacenada en una clave.

  [Más información](https://valkey.io/commands/getrange/)
+ `GETSET`

  Devuelve el valor de cadena anterior de una clave después de establecerla en un nuevo valor.

  [Más información](https://valkey.io/commands/getset/)
+ `INCR`

  Aumenta en uno el valor entero de una clave. Utiliza 0 como valor inicial si la clave no existe.

  [Más información](https://valkey.io/commands/incr/)
+ `INCRBY`

  Incrementa en un número determinado el valor entero de una clave. Utiliza 0 como valor inicial si la clave no existe.

  [Más información](https://valkey.io/commands/incrby/)
+ `INCRBYFLOAT`

  Incrementa en un número determinado el valor de punto flotante de una clave. Utiliza 0 como valor inicial si la clave no existe.

  [Más información](https://valkey.io/commands/incrbyfloat/)
+ `LCS`

  Busca la subcadena común más larga.

  [Más información](https://valkey.io/commands/lcs/)
+ `MGET`

  Devuelve íntegramente los valores de cadena de una o más claves.

  [Más información](https://valkey.io/commands/mget/)
+ `MSET`

  Crea o modifica íntegramente los valores de cadena de una o más claves.

  [Más información](https://valkey.io/commands/mset/)
+ `MSETNX`

  Modifica íntegramente los valores de cadena de una o más claves solo cuando no existen todas las claves.

  [Más información](https://valkey.io/commands/msetnx/)
+ `PSETEX`

  Establece tanto el valor de la cadena como el tiempo de caducidad en milisegundos de una clave. La clave se crea si no existe.

  [Más información](https://valkey.io/commands/psetex/)
+ `SET`

  Establece el valor de cadena de una clave e ignora el tipo. La clave se crea si no existe.

  [Más información](https://valkey.io/commands/set/)
+ `SETEX`

  Establece el valor de la cadena y el tiempo de caducidad de una clave. Crea la clave si esta no existe.

  [Más información](https://valkey.io/commands/setex/)
+ `SETNX`

  Establece el valor de cadena de una clave solo cuando la clave no existe.

  [Más información](https://valkey.io/commands/setnx/)
+ `SETRANGE`

  Sobrescribe una parte del valor de una cadena por otra a partir de una determinada posición. Crea la clave si esta no existe.

  [Más información](https://valkey.io/commands/setrange/)
+ `STRLEN`

  Devuelve la longitud del valor de la cadena.

  [Más información](https://valkey.io/commands/strlen/)
+ `SUBSTR`

  Devuelve una subcadena a partir de un valor de cadena.

  [Más información](https://valkey.io/commands/substr/)

**Comandos de transacción**
+ `DISCARD`

  Descarta una transacción.

  [Más información](https://valkey.io/commands/discard/)
+ `EXEC`

  Ejecuta todos los comandos de una transacción.

  [Más información](https://valkey.io/commands/exec/)
+ `MULTI`

  Inicia una transacción.

  [Más información](https://valkey.io/commands/multi/)

## Comandos restringidos de Valkey y Redis OSS
<a name="RestrictedCommandsRedis"></a>

Para ofrecer una experiencia de servicio gestionado, ElastiCache restringe el acceso a determinados comandos específicos del motor de caché que requieren privilegios avanzados. En las cachés que ejecutan Redis OSS, los siguientes comandos no están disponibles:
+ `acl setuser`
+ `acl load`
+ `acl save`
+ `acl deluser`
+ `bgrewriteaof`
+ `bgsave`
+ `cluster addslot`
+ `cluster addslotsrange`
+ `cluster bumpepoch`
+ `cluster delslot`
+ `cluster delslotsrange `
+ `cluster failover `
+ `cluster flushslots `
+ `cluster forget `
+ `cluster links`
+ `cluster meet`
+ `cluster setslot`
+ `config`
+ `debug`
+ `migrate`
+ `psync`
+ `replicaof`
+ `save`
+ `slaveof`
+ `shutdown`
+ `sync`

Además, los siguientes comandos no están disponibles para las cachés sin servidor:
+ `acl log`
+ `client caching`
+ `client getredir`
+ `client id`
+ `client info`
+ `client kill`
+ `client list`
+ `client no-evict`
+ `client pause`
+ `client tracking`
+ `client trackinginfo`
+ `client unblock`
+ `client unpause`
+ `cluster count-failure-reports`
+ `commandlog`
+ `commandlog get`
+ `commandlog help`
+ `commandlog len`
+ `commandlog reset`
+ `fcall`
+ `fcall_ro`
+ `function`
+ `function delete`
+ `function dump`
+ `function flush`
+ `function help`
+ `function kill`
+ `function list`
+ `function load`
+ `function restore`
+ `function stats`
+ `keys`
+ `lastsave`
+ `latency`
+ `latency doctor`
+ `latency graph`
+ `latency help`
+ `latency histogram`
+ `latency history`
+ `latency latest`
+ `latency reset`
+ `memory`
+ `memory doctor`
+ `memory help`
+ `memory malloc-stats`
+ `memory purge`
+ `memory stats`
+ `memory usage`
+ `monitor`
+ `move`
+ `object`
+ `object encoding`
+ `object freq`
+ `object help`
+ `object idletime`
+ `object refcount`
+ `pfdebug`
+ `pfselftest`
+ `psubscribe`
+ `pubsub numpat`
+ `punsubscribe`
+ `script kill`
+ `slowlog`
+ `slowlog get`
+ `slowlog help`
+ `slowlog len`
+ `slowlog reset`
+ `swapdb`
+ `wait`

## Comandos compatibles con Memcached
<a name="SupportedCommandsMem"></a>

ElastiCache Serverless for Memcached admite todos los [comandos](https://github.com/memcached/memcached/wiki/Commands) de memcached de la versión 1.6 de código abierto de memcached, excepto los siguientes: 
+ Las conexiones de cliente requieren TLS, por lo que no se admite el protocolo UDP.
+ El protocolo binario no es compatible, ya que está oficialmente [obsoleto](https://github.com/memcached/memcached/wiki/ReleaseNotes160) en memcached 1.6.
+ Los comandos `GET/GETS` están limitados a 16 KB para evitar posibles ataques de DoS al servidor con la obtención de una gran cantidad de claves.
+ El comando `flush_all` retrasado se rechazará con `CLIENT_ERROR`.
+ No se admiten los comandos que configuran el motor o revelan información interna sobre el estado o los registros del motor, como los siguientes:
  + En el comando `STATS`, solo se admiten `stats` y `stats reset`. Otras variantes devolverán un `ERROR`
  + `lru / lru_crawler`: modificación de la configuración de LRU y el rastreador de LRU
  + `watch`: observa los registros del servidor memcached
  + `verbosity`: configura el nivel de registro del servidor
  + `me`: no se admite el comando meta debug (me)

# Configuración y límites de Valkey y Redis OSS
<a name="RedisConfiguration"></a>

Cada uno de los motores OSS de Valkey y Redis proporciona una serie de parámetros de configuración, algunos de los cuales se pueden modificar ElastiCache para Redis OSS y otros no se pueden modificar para proporcionar un rendimiento y una fiabilidad estables.

## Cachés sin servidor
<a name="RedisConfiguration.Serverless"></a>

En el caso de las cachés sin servidor, no se utilizan grupos de parámetros y no se puede modificar ninguna parte de la configuración de Valkey o Redis OSS. Los siguientes parámetros de Valkey o Redis OSS están implementados:


****  

|  Name  |  Details  |  Description (Descripción)  | 
| --- | --- | --- | 
| acl-pubsub-default | `allchannels` | Permisos de canal pubsub predeterminados para los usuarios de ACL en la caché. | 
| client-output-buffer-limit | `normal 0 0 0` `pubsub 32mb 8mb 60` | Los clientes normales no tienen límite de búfer. PUB/SUB los clientes se desconectarán si superan una cartera de 32 MiB o si superan una acumulación de 8 MiB durante 60 segundos. | 
| client-query-buffer-limit | 1 GiB | El tamaño máximo de un búfer de consulta de cliente. Además, los clientes no pueden emitir una solicitud con más de 3999 argumentos. | 
| cluster-allow-pubsubshard-when-down | yes | Esto permite que la caché sirva el tráfico de pubsub mientras esté parcialmente inactiva. | 
| cluster-allow-reads-when-down | yes | Esto permite que la caché sirva el tráfico de lectura mientras esté parcialmente inactiva. | 
| cluster-enabled | yes | Todas las cachés sin servidor están habilitadas para el modo de clúster, lo que les permite dividir sus datos de forma transparente en varias particiones de backend. Los clientes observan todos los slots como si perteneciesen a un único nodo virtual. | 
| cluster-require-full-coverage | no | Cuando el espacio de claves esté parcialmente inactivo (es decir, hay, al menos, un slot hash inaccesible), la memoria caché seguirá aceptando consultas para la parte del espacio de claves que aún esté cubierta. El espacio de claves en su totalidad estará siempre “cubierto” por un único nodo virtual en cluster slots. | 
| lua-time-limit | 5000 | El tiempo máximo de ejecución de un script de Lua, en milisegundos, antes ElastiCache de que tome medidas para detenerlo. Si se supera el valor de `lua-time-limit`, todos los comandos de Valkey o Redis OSS devolverán un error con el formato *\$1\$1\$1\$1-BUSY*. Dado que este estado puede provocar interferencias con muchas operaciones esenciales de Valkey o Redis OSS, primero ElastiCache emitirá un comando *SCRIPT* KILL. Si esto no funciona, ElastiCache reiniciará forzosamente Valkey o Redis OSS. | 
| maxclients | 65000 | Número máximo de clientes que pueden conectarse a la vez. Las conexiones adicionales que se establezcan pueden realizarse correctamente o no. | 
| maxmemory-policy | volatile-lru | Los elementos con un TTL configurado se expulsan tras una estimación least-recently-used (LRU) cuando se alcanza el límite de memoria de la caché. | 
| notify-keyspace-events | (una cadena vacía) | Actualmente, los eventos de espacio de claves no son compatibles con las cachés sin servidor. | 
| port | Puerto principal: 6379 Puerto de lectura: 6380 | Las cachés sin servidor muestran dos puertos con el mismo nombre de host. El puerto principal permite escribir y leer, mientras que el puerto de lectura permite lecturas coherentes posteriores de menor latencia mediante el comando READONLY. | 
| proto-max-bulk-len | 512 MiB | El tamaño máximo de una sola solicitud de elemento. | 
| timeout | 0 | Los clientes no se desconectan de forma ineludible tras un tiempo de inactividad específico, pero es posible que se desconecten durante el estado estable para equilibrar la carga. | 

Además, existen los siguientes límites:


****  

|  Name  |  Details  |  Description (Descripción)  | 
| --- | --- | --- | 
| Tamaño por caché | 5000 GiB | Cantidad máxima de datos que se puede almacenar por caché sin servidor. | 
| Tamaño por slot | 32 GiB | El tamaño máximo de una única ranura de hash de Valkey o Redis OSS. Los clientes que intenten almacenar más datos en una sola ranura de Valkey o Redis OSS activarán la política de expulsión en la ranura y, si no se puede expulsar ninguna clave, recibirán un error de memoria insuficiente (OOM). | 
| ECPU por caché | 15 000 000 ECPU/segundo | ElastiCache Métrica de unidades de procesamiento (ECPU). La cantidad de datos ECPUs consumidos por las solicitudes depende del tiempo empleado por la vCPU y de la cantidad de datos transferidos. | 
| ECPU por ranura | 30 000 a 90 000 ECPU/segundo | Máximo 30 000 ECPUs/second por ranura o 90 000 ECPUs/second si se utiliza Read from Replica mediante conexiones READONLY. | 
| Argumentos por solicitud | 3.999 | Número máximo de argumentos por solicitud. Si un cliente envía más argumentos por solicitud, se genera un error. | 
| Longitud del nombre de la clave | 4 KiB | El tamaño máximo de una sola clave de Valkey o Redis OSS o el nombre de un canal. Los clientes que hagan referencia a claves de un tamaño mayor a este valor recibirán un error. | 
| El tamaño del script de Lua | 4 MiB | El tamaño máximo de un único script de Lua de Valkey o Redis OSS. Los intentos de cargar un script de Lua con un tamaño superior a este recibirán un error. | 

## Clústeres basados en nodos
<a name="RedisConfiguration.SelfDesigned"></a>

Con respecto a los clústeres basados en nodos, consulte [Parámetros de Valkey y Redis OSS](ParameterGroups.Engine.md#ParameterGroups.Redis) para obtener información sobre los valores predeterminados de los parámetros de configuración y para saber cuáles son configurables. Por lo general, se recomiendan los valores predeterminados, a menos que tenga un caso de uso específico que requiera anularlos.

# Ejemplos de clientes de IPv6 para Valkey, Memcached y Redis OSS
<a name="network-type-best-practices"></a>

ElastiCache es compatible con Valkey, Memcached y Redis OSS. Esto significa que los clientes que admiten conexiones de IPv6 deberían poder conectarse a clústeres de ElastiCache para Memcached habilitados para IPv6. Hay algunas advertencias que merece la pena señalar al interactuar con recursos habilitados para IPv6.

Puede consultar la publicación [Best practices for Valkey and Redis clients](https://aws.amazon.com/blogs/database/best-practices-redis-clients-and-amazon-elasticache-for-redis/) en AWS Database Blog para obtener recomendaciones sobre la configuración de los clientes de Valkey y Redis OSS para los recursos de ElastiCache.

A continuación, se presentan las prácticas recomendadas para interactuar con los recursos de ElastiCache habilitados para IPv6 con las bibliotecas de cliente de código abierto que se utilizan habitualmente. 

## Clientes validados con Valkey y Redis OSS
<a name="network-type-validated-clients-redis"></a>

ElastiCache es compatible con Valkey y Redis OSS de código abierto. Esto significa que los clientes de Valkey y Redis OSS de código abierto que admiten conexiones de IPv6 deberían poder conectarse a los clústeres de ElastiCache para Redis OSS habilitados para IPv6. Además, varios de los clientes de Python y Java más populares se han probado y validado específicamente para que funcionen con todas las configuraciones de tipos de red compatibles (solo IPv4, solo IPv6 y doble pila).

Los siguientes clientes se han validado específicamente para funcionar con todas las configuraciones de tipo de red admitidas para Valkey y Redis OSS.

Clientes validados:
+ [Redis Py ()](https://github.com/redis/redis-py): [4.1.2](https://github.com/redis/redis-py/tree/v4.1.2)
+ [Lettuce](https://lettuce.io/): [versión 6.1.6.RELEASE](https://github.com/lettuce-io/lettuce-core/tree/6.1.6.RELEASE)
+ [Jedis](https://github.com/redis/jedis): [versión 3.6.0](https://github.com/redis/jedis/tree/jedis-3.6.0)

# Prácticas recomendadas para clientes (Valkey y Redis OSS)
<a name="BestPractices.Clients.redis"></a>

Descubra las prácticas recomendadas en escenarios habituales y siga los ejemplos de código de algunas de las bibliotecas cliente de Valkey y Redis OSS de código abierto más populares (redis-py, PHPRedis y Lettuce), así como las prácticas recomendadas para interactuar con los recursos de ElastiCache con bibliotecas cliente de Memcached de código abierto de uso habitual.

**Topics**
+ [Gran cantidad de conexiones (Valkey y Redis OSS)](BestPractices.Clients.Redis.Connections.md)
+ [Detección de clústeres por parte del cliente y retroceso exponencial (Valkey y Redis OSS)](BestPractices.Clients.Redis.Discovery.md)
+ [Configuración de un tiempo de espera del cliente (Valkey y Redis OSS)](BestPractices.Clients.Redis.ClientTimeout.md)
+ [Configuración de un tiempo de espera del servidor (Valkey y Redis OSS)](BestPractices.Clients.Redis.ServerTimeout.md)
+ [Scripts de Lua](BestPractices.Clients.Redis.LuaScripts.md)
+ [Almacenamiento de elementos compuestos de gran tamaño (Valkey y Redis OSS)](BestPractices.Clients.Redis.LargeItems.md)
+ [Configuración del cliente de Lettuce (Valkey y Redis OSS)](BestPractices.Clients-lettuce.md)
+ [Configuración de un protocolo preferido para clústeres de doble pila (Valkey y Redis OSS)](#network-type-configuring-dual-stack-redis)

# Gran cantidad de conexiones (Valkey y Redis OSS)
<a name="BestPractices.Clients.Redis.Connections"></a>

Las cachés sin servidor y los nodos individuales de ElastiCache para Redis OSS admiten hasta 65 000 conexiones de clientes simultáneas. Sin embargo, para optimizar el rendimiento, recomendamos que las aplicaciones cliente no funcionen constantemente con ese volumen de conexiones. Valkey y Redis OSS tienen cada uno un subproceso basado en un bucle de eventos en el que las solicitudes entrantes de los clientes se gestionan de forma secuencial. Esto significa que el tiempo de respuesta de un cliente determinado se hace más largo a medida que aumenta el número de clientes conectados.

Puede tomar las siguientes medidas para evitar un cuello de botella en la conexión del servidor de Valkey o Redis OSS:
+ Llevar a cabo las operaciones de lectura a partir de réplicas de lectura. Puede hacer esto usando los puntos de conexión del lector ElastiCache con el modo de clúster deshabilitado o usando réplicas para las lecturas con el modo de clúster habilitado, lo que incluye una caché sin servidor.
+ Distribuir el tráfico de escritura entre varios nodos principales. Puede hacerlo de dos formas. Puede utilizar un clúster de Valkey y Redis OSS con varias particiones en un cliente compatible con el modo de clúster. También puede escribir en varios nodos principales con el modo de clúster deshabilitado y con partición en el lado del cliente. Esto se hace automáticamente en una memoria caché sin servidor.
+ Usar un grupo de conexiones cuando esté disponible en la biblioteca de su cliente.

En general, crear una conexión de TCP es una operación costosa desde el punto de vista computacional en comparación con los comandos típicos de Valkey o Redis OSS. Por ejemplo, gestionar una solicitud SET/GET es una orden de magnitud más rápido cuando se reutiliza una conexión existente. El uso de un grupo de conexiones de clientes con un tamaño finito reduce la sobrecarga en la administración de conexiones. También limita el número de conexiones entrantes simultáneas desde la aplicación cliente.

El siguiente ejemplo de código de PHPRedis muestra cómo se crea una nueva conexión para cada nueva solicitud de usuario:

```
$redis = new Redis();
if ($redis->connect($HOST, $PORT) != TRUE) {
	//ERROR: connection failed
	return;
}
$redis->set($key, $value);
unset($redis);
$redis = NULL;
```

Hemos comparado este código en bucle en una instancia de Amazon Elastic Compute Cloud (Amazon EC2) conectada a un nodo ElastiCache para Redis OSS de Graviton2 (m6g.2xlarge). Hemos colocado el cliente y el servidor dentro de la misma zona de disponibilidad. La latencia media de toda la operación fue de 2,82 milisegundos.

Cuando actualizamos el código y utilizamos conexiones persistentes y un grupo de conexiones, la latencia media de toda la operación fue de 0,21 milisegundos:

```
$redis = new Redis();
if ($redis->pconnect($HOST, $PORT) != TRUE) {
	// ERROR: connection failed
	return;
}
$redis->set($key, $value);
unset($redis);
$redis = NULL;
```

Configuraciones de redis.ini obligatorias:
+ `redis.pconnect.pooling_enabled=1`
+ `redis.pconnect.connection_limit=10`

El siguiente código es un ejemplo de un [grupo de conexiones Redis-py](https://redis.readthedocs.io/en/stable/):

```
conn = Redis(connection_pool=redis.BlockingConnectionPool(host=HOST, max_connections=10))
conn.set(key, value)
```

El siguiente código es un ejemplo de un [grupo de conexiones Lettuce](https://lettuce.io/core/release/reference/#_connection_pooling):

```
RedisClient client = RedisClient.create(RedisURI.create(HOST, PORT));
GenericObjectPool<StatefulRedisConnection> pool = ConnectionPoolSupport.createGenericObjectPool(() -> client.connect(), new GenericObjectPoolConfig());
pool.setMaxTotal(10); // Configure max connections to 10
try (StatefulRedisConnection connection = pool.borrowObject()) {
	RedisCommands syncCommands = connection.sync();
	syncCommands.set(key, value);
}
```

# Detección de clústeres por parte del cliente y retroceso exponencial (Valkey y Redis OSS)
<a name="BestPractices.Clients.Redis.Discovery"></a>

Al conectarse a un clúster de ElastiCache Valkey o Redis OSS con el modo de clúster habilitado, la biblioteca cliente correspondiente debe reconocer los clústeres. Los clientes deben obtener un mapa de los slots hash de los nodos correspondientes del clúster para poder enviar las solicitudes a los nodos correctos, y evitar así la sobrecarga de rendimiento que supone gestionar las redirecciones del clúster. Como resultado, el cliente debe descubrir (o detectar) una lista completa de los slots y los nodos mapeados en dos situaciones diferentes:
+ El cliente se inicializa y debe completar la configuración inicial de los slots.
+ Se recibe una redirección MOVED del servidor; por ejemplo, en una conmutación por error, cuando la réplica se hace cargo de todos los slots atendidos por el nodo principal anterior, o en una nueva partición, cuando los slots se mueven del nodo principal de origen al nodo principal de destino.

Por lo general, el proceso de detección por parte del cliente se lleva a cabo enviando un comando CLUSTER SLOT o CLUSTER NODE al servidor de Valkey o Redis OSS. Recomendamos el método CLUSTER SLOT porque devuelve al cliente el conjunto de rangos de slots, así como los nodos principales y de réplica asociados. Es un método que no requiere un análisis adicional por parte del cliente y es más eficaz.

En función de la topología del clúster, el tamaño de la respuesta al comando CLUSTER SLOT puede variar según el tamaño del clúster. Los clústeres más grandes y con más nodos producen una respuesta mayor. Por lo tanto, es importante asegurarse de que la cantidad de clientes que llevan a cabo la detección de la topología del clúster no aumente de forma ilimitada. Por ejemplo, cuando la aplicación cliente se inicia o pierde la conexión con el servidor y debe realizar una detección de clústeres, un error común es que la aplicación cliente desencadene varias solicitudes de reconexión y detección sin añadir un retroceso exponencial con el nuevo intento. Esto puede hacer que el servidor de Valkey o Redis OSS deje de responder durante mucho tiempo, con un uso de la CPU del 100 %. La interrupción se prolonga si cada comando CLUSTER SLOT debe procesar una gran cantidad de nodos en el bus del clúster. En el pasado, hemos observado varias interrupciones en los clientes debido a este comportamiento en varios lenguajes diferentes, como Python (redis-py-cluster) y Java (Lettuce y Redisson).

En una caché sin servidor, muchos de los problemas se mitigan automáticamente porque la topología de clúster expuesta es estática y consta de dos entradas: un punto de conexión de escritura y otro de lectura. La detección de clústeres también se distribuye automáticamente entre varios nodos cuando se utiliza el punto de conexión de la caché. Sin embargo, las siguientes recomendaciones siguen siendo útiles.

A fin de mitigar el impacto causado por una entrada repentina de solicitudes de conexión y detección, recomendamos lo siguiente:
+ Implemente un grupo de conexiones de cliente con un tamaño finito a fin de limitar el número de conexiones entrantes simultáneas desde la aplicación cliente.
+ Cuando el cliente se desconecte del servidor debido al tiempo de espera, vuelva a intentarlo con retroceso exponencial y fluctuación. Esto evitará que varios clientes sobrecarguen el servidor al mismo tiempo.
+ Utilice la guía en [Búsqueda de puntos de conexión en ElastiCache](Endpoints.md) para encontrar el punto de conexión del clúster que necesitará a fin de realizar la detección del clúster. De este modo, distribuirá la carga de detección entre todos los nodos del clúster (hasta 90), en lugar de centrarse en unos pocos nodos raíz codificados del clúster.

A continuación, se muestran algunos ejemplos de código para la lógica de reintentos de retroceso exponencial en redis-py, PHPRedis y Lettuce.

**Ejemplo 1 de lógica de retroceso: redis-py**

Redis-py tiene un mecanismo de reintento incorporado: se lleva a cabo un reintento inmediatamente después de un error. Este mecanismo se puede activar mediante el argumento `retry_on_timeout` proporcionado al crear un objeto de [Redis OSS](https://redis.readthedocs.io/en/stable/examples/connection_examples.html#redis.Redis). Aquí mostramos un mecanismo de reintento personalizado con retroceso exponencial y fluctuación. Hemos enviado una solicitud de extracción para implementar de forma nativa el retroceso exponencial en [redis-py (1494)](https://github.com/andymccurdy/redis-py/pull/1494). En el futuro, puede que no sea necesario implementarlo manualmente.

```
def run_with_backoff(function, retries=5):
base_backoff = 0.1 # base 100ms backoff
max_backoff = 10 # sleep for maximum 10 seconds
tries = 0
while True:
try:
  return function()
except (ConnectionError, TimeoutError):
  if tries >= retries:
	raise
  backoff = min(max_backoff, base_backoff * (pow(2, tries) + random.random()))
  print(f"sleeping for {backoff:.2f}s")
  sleep(backoff)
  tries += 1
```

Luego, puede utilizar el siguiente código para establecer un valor:

```
client = redis.Redis(connection_pool=redis.BlockingConnectionPool(host=HOST, max_connections=10))
res = run_with_backoff(lambda: client.set("key", "value"))
print(res)
```

En función de la carga de trabajo, es posible que desee cambiar el valor del retroceso base (de 1 segundo a unas pocas decenas o cientos de milisegundos) para las cargas de trabajo sensibles a la latencia.

**Ejemplo 2 de lógica de retroceso: PHPRedis**

PHPRedis tiene un mecanismo de reintento incorporado: hay un número máximo de reintento de 10 veces (no configurable). Hay un retraso configurable entre los intentos (con una fluctuación a partir del segundo reintento). Para obtener más información, consulte el siguiente [código de muestra](https://github.com/phpredis/phpredis/blob/b0b9dd78ef7c15af936144c1b17df1a9273d72ab/library.c#L335-L368). Enviamos una solicitud de extracción para implementar de forma nativa el retroceso exponencial en [PHPredis (1986)](https://github.com/phpredis/phpredis/pull/1986); desde entonces, se ha fusionado y [documentado](https://github.com/phpredis/phpredis/blob/develop/README.md#retry-and-backoff). Si utiliza la última versión de PHPRedis, no será necesario implementarla manualmente, pero hemos incluido aquí la referencia para las versiones anteriores. De momento, aquí tiene un ejemplo de código para configurar el retraso del mecanismo de reintento:

```
$timeout = 0.1; // 100 millisecond connection timeout
$retry_interval = 100; // 100 millisecond retry interval
$client = new Redis();
if($client->pconnect($HOST, $PORT, $timeout, NULL, $retry_interval) != TRUE) {
	return; // ERROR: connection failed
}
$client->set($key, $value);
```

**Ejemplo 3 de lógica de retroceso: Lettuce**

Lettuce tiene mecanismos de reintento incorporados que emplean las estrategias de retroceso exponencial descritas en la publicación [Exponential Backoff and Jitter](https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/). A continuación, puede ver un fragmento de código con el método de fluctuación total:

```
public static void main(String[] args)
{
	ClientResources resources = null;
	RedisClient client = null;

	try {
		resources = DefaultClientResources.builder()
				.reconnectDelay(Delay.fullJitter(
			Duration.ofMillis(100),     // minimum 100 millisecond delay
			Duration.ofSeconds(5),      // maximum 5 second delay
			100, TimeUnit.MILLISECONDS) // 100 millisecond base
		).build();

		client = RedisClient.create(resources, RedisURI.create(HOST, PORT));
		client.setOptions(ClientOptions.builder()
	.socketOptions(SocketOptions.builder().connectTimeout(Duration.ofMillis(100)).build()) // 100 millisecond connection timeout
	.timeoutOptions(TimeoutOptions.builder().fixedTimeout(Duration.ofSeconds(5)).build()) // 5 second command timeout
	.build());

	    // use the connection pool from above example
	} finally {
		if (connection != null) {
			connection.close();
		}

		if (client != null){
			client.shutdown();
		}

		if (resources != null){
			resources.shutdown();
		}

	}
}
```

# Configuración de un tiempo de espera del cliente (Valkey y Redis OSS)
<a name="BestPractices.Clients.Redis.ClientTimeout"></a>

**Configuración del tiempo de espera del cliente**

Configure el tiempo de espera del lado del cliente de la manera adecuada, a fin de que el servidor tenga tiempo suficiente para procesar la solicitud y generar la respuesta. Esto también le permitirá responder rápido a los errores si no se puede establecer la conexión con el servidor. Ciertos comandos de Valkey o Redis OSS pueden ser más costosos desde el punto de vista computacional que otros. Un ejemplo de esto son los scripts de Lua o las transacciones MULTI/EXEC con varios comandos que deben ejecutarse de forma integral. Por lo general, es recomendable aumentar el tiempo de espera del cliente para evitar que este se quede sin tiempo antes de recibir la respuesta del servidor, lo que incluye lo siguiente:
+ Ejecutar comandos en varias claves
+ Ejecutar transacciones MULTI/EXEC o scripts de Lua que consten de varios comandos individuales de Valkey o Redis OSS
+ Leer valores grandes
+ Realizar operaciones de bloqueo, como BLPOP

En el caso de una operación de bloqueo como BLPOP, el procedimiento recomendado es establecer el tiempo de espera del comando en un número inferior al tiempo de espera del socket.

A continuación, encontrará ejemplos de código para implementar un tiempo de espera del lado del cliente en redis-py, PHPRedis y Lettuce.

**Ejemplo 1 de configuración de tiempo de espera: redis-py**

A continuación, puede ver un ejemplo de código con redis-py:

```
# connect to Redis server with a 100 millisecond timeout
# give every Redis command a 2 second timeout
client = redis.Redis(connection_pool=redis.BlockingConnectionPool(host=HOST, max_connections=10,socket_connect_timeout=0.1,socket_timeout=2))

res = client.set("key", "value") # will timeout after 2 seconds
print(res)                       # if there is a connection error

res = client.blpop("list", timeout=1) # will timeout after 1 second
                                      # less than the 2 second socket timeout
print(res)
```

**Ejemplo 2 de configuración de tiempo de espera: PHPRedis**

A continuación, puede ver un ejemplo de código con PHPRedis:

```
// connect to Redis server with a 100ms timeout
// give every Redis command a 2s timeout
$client = new Redis();
$timeout = 0.1; // 100 millisecond connection timeout
$retry_interval = 100; // 100 millisecond retry interval
$client = new Redis();
if($client->pconnect($HOST, $PORT, 0.1, NULL, 100, $read_timeout=2) != TRUE){
	return; // ERROR: connection failed
}
$client->set($key, $value);

$res = $client->set("key", "value"); // will timeout after 2 seconds
print "$res\n";                      // if there is a connection error

$res = $client->blpop("list", 1); // will timeout after 1 second
print "$res\n";                   // less than the 2 second socket timeout
```

**Ejemplo 3 de configuración de tiempo de espera: Lettuce**

A continuación, puede ver un ejemplo de código con Lettuce:

```
// connect to Redis server and give every command a 2 second timeout
public static void main(String[] args)
{
	RedisClient client = null;
	StatefulRedisConnection<String, String> connection = null;
	try {
		client = RedisClient.create(RedisURI.create(HOST, PORT));
		client.setOptions(ClientOptions.builder()
	.socketOptions(SocketOptions.builder().connectTimeout(Duration.ofMillis(100)).build()) // 100 millisecond connection timeout
	.timeoutOptions(TimeoutOptions.builder().fixedTimeout(Duration.ofSeconds(2)).build()) // 2 second command timeout 
	.build());

		// use the connection pool from above example

		commands.set("key", "value"); // will timeout after 2 seconds
		commands.blpop(1, "list"); // BLPOP with 1 second timeout
	} finally {
		if (connection != null) {
			connection.close();
		}

		if (client != null){
			client.shutdown();
		}
	}
}
```

# Configuración de un tiempo de espera del servidor (Valkey y Redis OSS)
<a name="BestPractices.Clients.Redis.ServerTimeout"></a>

Hemos observado casos en los que la aplicación de un cliente tiene un gran número de clientes inactivos conectados, pero no envía comandos de forma activa. En estos casos, se pueden agotar las 65 000 conexiones con un número elevado de clientes inactivos. Para evitar este tipo de situaciones, configure el tiempo de espera adecuadamente en el servidor mediante [Parámetros de Valkey y Redis OSS](ParameterGroups.Engine.md#ParameterGroups.Redis). Esto garantiza que el servidor tome la iniciativa en desconectar a los clientes inactivos para evitar un aumento en el número de conexiones. Esta configuración no está disponible en las caché sin servidor.

# Scripts de Lua
<a name="BestPractices.Clients.Redis.LuaScripts"></a>

Valkey y Redis OSS admiten más de 200 comandos, incluidos los que ejecutan scripts de Lua. Sin embargo, en lo que respecta a los scripts de Lua, hay varios inconvenientes que pueden afectar a la memoria y a la disponibilidad de Valkey o Redis OSS.

**Scripts de Lua no parametrizados**

Cada script de Lua se almacena en caché en el servidor de Valkey o Redis OSS antes de ejecutarse. Los scripts de Lua no parametrizados son únicos, lo que puede provocar que el servidor de Valkey o Redis OSS almacene una gran cantidad de ellos y consuma más memoria. Para mitigar esta situación, asegúrese de que todos los scripts de Lua estén parametrizados y ejecute SCRIPT FLUSH con regularidad a fin de depurar los scripts de Lua almacenados en caché si es necesario.

También tenga en cuenta que se deben proporcionar claves. Si no se proporciona ningún valor para el parámetro KEY, el script fallará. Por ejemplo, lo siguiente no funcionará: 

```
serverless-test-lst4hg.serverless.use1.cache.amazonaws.com:6379> eval 'return "Hello World"' 0
(error) ERR Lua scripts without any input keys are not supported.
```

Esto sí funcionará:

```
serverless-test-lst4hg.serverless.use1.cache.amazonaws.com:6379> eval 'return redis.call("get", KEYS[1])' 1 mykey-2
"myvalue-2"
```

En el siguiente ejemplo, se muestra cómo definir y utilizar parámetros: En primer lugar, tenemos el ejemplo de un método no parametrizado que da como resultado tres scripts de Lua en caché diferentes (no recomendable):

```
eval "return redis.call('set','key1','1')" 0
eval "return redis.call('set','key2','2')" 0
eval "return redis.call('set','key3','3')" 0
```

En lugar de esto, utilice el siguiente patrón para crear un único script que pueda aceptar los parámetros pasados:

```
eval "return redis.call('set',KEYS[1],ARGV[1])" 1 key1 1 
eval "return redis.call('set',KEYS[1],ARGV[1])" 1 key2 2 
eval "return redis.call('set',KEYS[1],ARGV[1])" 1 key3 3
```

**Scripts de Lua de larga duración**

Los scripts de Lua pueden ejecutar varios comandos de forma atómica, por lo que pueden tardar más en completarse que un comando normal de Valkey o Redis OSS. Si el script de Lua solo ejecuta operaciones de solo lectura, puede detenerlo durante la ejecución. Sin embargo, cuando el script de Lua lleve a cabo operaciones de escritura, no se puede detener y debe ejecutarse hasta el final. Un script de Lua de ejecución prolongada que esté mutando puede provocar que el servidor de Valkey o Redis OSS deje de responder durante mucho tiempo. Para mitigar este problema, evite el uso de scripts de Lua de larga duración y pruébelos en un entorno de preproducción.

**Script de Lua con escrituras encubiertas**

Aunque Valkey o Redis OSS hayan superado la `maxmemory`, un script de Lua puede seguir escribiendo nuevos datos en Valkey o Redis OSS de varias maneras:
+ El script se inicia cuando el servidor de Valkey o Redis OSS está por debajo de `maxmemory` y contiene varias operaciones de escritura en su interior.
+ El primer comando de escritura del script no consume memoria (como DEL) y va seguido de más operaciones de escritura que sí consumen memoria.
+ Puede mitigar este problema configurando una política de expulsión adecuada en un servidor de Valkey o Redis OSS que no sea `noeviction`. Esto permite que Redis OSS expulse elementos y libere memoria entre los scripts de Lua.

# Almacenamiento de elementos compuestos de gran tamaño (Valkey y Redis OSS)
<a name="BestPractices.Clients.Redis.LargeItems"></a>

En algunos casos, una aplicación puede almacenar elementos compuestos de gran tamaño en Valkey o Redis OSS (como un conjunto de datos hash de varios GB). Esto no es recomendable, ya que suele provocar problemas de rendimiento en Valkey o Redis OSS. Por ejemplo, el cliente puede ejecutar un comando HGETALL para recuperar toda la colección de hash de varios GB. Se puede generar una presión en la memoria importante para el servidor de Valkey o Redis OSS que almacena el elemento de gran tamaño en el búfer de salida del cliente. Además, para la migración de slots en modo clúster, ElastiCache no migra los slots que contienen elementos con un tamaño serializado superior a 256 MB.

Para resolver los problemas implicados en la gestión de elementos de gran tamaño, recomendamos lo siguiente:
+ Divida el elemento compuesto grande en varios elementos más pequeños. Algo que puede hacer es dividir una colección hash grande en campos clave-valor individuales con un esquema de nombres de clave que refleje adecuadamente la colección; por ejemplo, puede utilizar un prefijo común en el nombre de la clave para identificar la colección de elementos. Si debe acceder a varios campos de la misma colección de forma integral, puede usar el comando MGET para recuperar varios valores clave en el mismo comando.
+ Si ha evaluado todas las opciones y sigue sin poder dividir el conjunto de datos de gran tamaño de la colección, intente utilizar comandos que funcionen en un subconjunto de los datos de la colección, en lugar de en toda la colección. Evite los casos de uso que requieran recuperar de forma integral toda la colección de varios GB con el mismo comando. Un ejemplo de esto es el uso de los comandos HGET o HMGET, en lugar de HGETALL, en las colecciones de hash.

# Configuración del cliente de Lettuce (Valkey y Redis OSS)
<a name="BestPractices.Clients-lettuce"></a>

En esta sección se describen las opciones de configuración recomendadas de Java y Lettuce y cómo se aplican a los clústeres de ElastiCache.

Las recomendaciones de esta sección se probaron con la versión 6.2.2 de Lettuce.

**Topics**
+ [Ejemplo: Configuración de Lettuce para el modo de clúster con TLS habilitado](BestPractices.Clients-lettuce-cme.md)
+ [Ejemplo: Configuración de Lettuce para el modo de clúster deshabilitado con TLS habilitado](BestPractices.Clients-lettuce-cmd.md)

**TTL de la caché DNS de Java**

La máquina virtual de Java (JVM) almacena en caché las búsquedas de nombres DNS. Cuando la JVM resuelve un nombre de host en una dirección IP, almacena en caché la dirección IP durante un periodo de tiempo especificado, conocido como *tiempo de vida* (TTL).

La elección del valor de TTL implica un compromiso entre latencia y la capacidad de respuesta a los cambios. Con TTL más cortos, los solucionadores de DNS detectan las actualizaciones en el DNS del clúster con mayor rapidez. Esto puede hacer que la aplicación responda más rápido a las sustituciones u otros flujos de trabajo a los que se somete el clúster. Sin embargo, si el TTL es demasiado bajo, aumenta el volumen de consultas, lo que puede aumentar la latencia de la aplicación. Aunque no existe un valor de TTL correcto, vale la pena esperar a que surta efecto un cambio cuando se configura el valor de TTL.

Como los nodos de ElastiCache utilizan entradas de nombres de DNS que pueden cambiar de vez en cuando, recomendamos que configure JVM con un TTL bajo de 5 a 10 segundos. Con esto, se asegurará de que, cuando cambie la dirección IP de un nodo, su aplicación pueda recibir y utilizar la nueva dirección IP del recurso volviendo a consultar la entrada de DNS.

En algunas configuraciones de Java, el TTL predeterminado de JVM está establecido de forma que nunca se actualicen las entradas DNS hasta que se reinicie la JVM.

Para obtener más información sobre cómo configurar el TTL de JVM, consulte [Cómo configurar el TTL de JVM](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-jvm-ttl.html#how-to-set-the-jvm-ttl).

**Versión de Lettuce**

Recomendamos usar la versión 6.2.2 o posterior de Lettuce.

**puntos de conexión**

Cuando utilice clústeres habilitados para el modo de clúster, establezca `redisUri` en el punto de conexión de configuración del clúster. La búsqueda de DNS para este URI devuelve una lista de todos los nodos disponibles en el clúster y se resuelve aleatoriamente en uno de ellos durante la inicialización del clúster. Para obtener más información sobre cómo funciona la actualización de topología, consulte *dynamicRefreshResources* más adelante en este tema.

**SocketOption**

Habilite [KeepAlive](https://lettuce.io/core/release/api/io/lettuce/core/SocketOptions.KeepAliveOptions.html). Al habilitar esta opción, se reduce la necesidad de gestionar las conexiones erróneas durante el tiempo de ejecución del comando.

Asegúrese de configurar el [Tiempo de espera de la conexión](https://lettuce.io/core/release/api/io/lettuce/core/SocketOptions.Builder.html#connectTimeout-java.time.Duration-) en función de los requisitos de la aplicación y la carga de trabajo. Para obtener más información, consulte la sección de tiempos de espera más adelante en este tema.

**ClusterClientOption: Opciones de cliente habilitadas para el modo de clúster**

Habilite [AutoReconnect](https://lettuce.io/core/release/api/io/lettuce/core/cluster/ClusterClientOptions.Builder.html#autoReconnect-boolean-) cuando se pierda la conexión.

Establezca [CommandTimeout](https://lettuce.io/core/release/api/io/lettuPrce/core/RedisURI.html#getTimeout--). Para obtener más información, consulte la sección Tiempos de espera más adelante en este tema.

Establezca [nodeFilter](https://lettuce.io/core/release/api/io/lettuce/core/cluster/ClusterClientOptions.Builder.html#nodeFilter-java.util.function.Predicate-) para filtrar los nodos con errores de la topología. Lettuce guarda todos los nodos que se encuentran en la salida de los “nodos del clúster” (incluidos los nodos con el estado PFAIL/FAIL) en las “particiones” del cliente. Durante el proceso de creación de la topología del clúster, intenta conectarse a todos los nodos de partición. Este comportamiento de Lettuce de agregar nodos con errores puede provocar errores de conexión (o advertencias) cuando los nodos se sustituyen por cualquier motivo. 

Por ejemplo, una vez que finaliza una conmutación por error y el clúster inicia el proceso de recuperación, mientras se actualiza la topología del clúster, el mapa de nodos del bus del clúster tiene un breve periodo de tiempo en el que el nodo inactivo se muestra como nodo FAIL, antes de que se elimine por completo de la topología. Durante este periodo, el cliente de Lettuce lo considera un nodo en buen estado y se conecta continuamente a él. Esto provoca un error cuando se agota el reintento. 

Por ejemplo:

```
final ClusterClientOptions clusterClientOptions = 
    ClusterClientOptions.builder()
    ... // other options
    .nodeFilter(it -> 
        ! (it.is(RedisClusterNode.NodeFlag.FAIL) 
        || it.is(RedisClusterNode.NodeFlag.EVENTUAL_FAIL) 
        || it.is(RedisClusterNode.NodeFlag.HANDSHAKE)
        || it.is(RedisClusterNode.NodeFlag.NOADDR)))
    .validateClusterNodeMembership(false)
    .build();
redisClusterClient.setOptions(clusterClientOptions);
```

**nota**  
El filtrado de nodos se utiliza mejor con DynamicRefreshSources configurado en verdadero. De lo contrario, si la vista de topología se toma de un solo nodo raíz problemático, que ve que un nodo principal de alguna partición está produciendo un error, filtrará este nodo principal, lo que hará que las ranuras no queden cubiertas. Tener varios nodos raíz (cuando DynamicRefreshSources es verdadero) reduce la probabilidad de que se produzca este problema, ya que al menos algunos de los nodos raíz deberían tener una vista de topología actualizada después de una conmutación por error con el nodo principal recién promocionado.

**ClusterTopologyRefreshOptions: opciones para controlar la actualización de la topología del clúster del cliente habilitado para el modo de clúster**

**nota**  
Los clústeres desactivados en modo de clúster no admiten los comandos de detección de clústeres y no son compatibles con la funcionalidad de detección de topología dinámica de todos los clientes.  
El modo de clúster desactivado con ElastiCache no es compatible con `MasterSlaveTopologyRefresh` de Lettuce. En cambio, para el modo de clúster desactivado puede configurar `StaticMasterReplicaTopologyProvider` y proporcionar los puntos de conexión de lectura y escritura del clúster.  
Para obtener más información acerca de la conexión a clústeres desactivados en modo de clúster, consulte [Búsqueda de puntos de conexión de un clúster de Valkey o Redis OSS (modo de clúster deshabilitado) (consola)](Endpoints.md#Endpoints.Find.Redis).  
Si desea utilizar la funcionalidad de detección de topología dinámica de Lettuce, puede crear un clúster habilitado para el modo de clúster con la configuración del mismo fragmento que el clúster existente. Sin embargo, para los clústeres habilitados para el modo de clúster, recomendamos configurar al menos 3 particiones con al menos 1 réplica para admitir una conmutación por error rápida.

Habilite [enablePeriodicRefresh](https://lettuce.io/core/release/api/io/lettuce/core/cluster/ClusterTopologyRefreshOptions.Builder.html#enablePeriodicRefresh-java.time.Duration-). Esto permite las actualizaciones periódicas de la topología del clúster para que el cliente actualice la topología del clúster en los intervalos del periodo de actualización (predeterminado: 60 segundos). Cuando están desactivadas, el cliente actualiza la topología del clúster solo cuando se producen errores al intentar ejecutar comandos en el clúster. 

Con esta opción habilitada, puede reducir la latencia asociada a la actualización de la topología del clúster agregando este trabajo a una tarea que se esté ejecutando en segundo plano. Aunque la actualización de la topología se realiza en un trabajo que se esté ejecutando en segundo plano, puede resultar algo lenta para los clústeres con muchos nodos. Esto se debe a que se están consultando las vistas de todos los nodos para obtener la vista de clúster más actualizada. Si ejecuta un clúster grande, es posible que desee aumentar el periodo.

Habilite [enableAllAdaptiveRefreshTriggers](https://lettuce.io/core/release/api/io/lettuce/core/cluster/ClusterTopologyRefreshOptions.Builder.html#enableAllAdaptiveRefreshTriggers--). Esto permite actualizar la topología adaptativa y utilizar todos los [disparadores](https://lettuce.io/core/6.1.6.RELEASE/api/io/lettuce/core/cluster/ClusterTopologyRefreshOptions.RefreshTrigger.html): MOVED\$1REDIRECT, ASK\$1REDIRECT, PERSISTENT\$1RECONNECTS, UNCOVERED\$1SLOT, UNKNOWN\$1NODE. Los desencadenadores de actualización adaptativa inician las actualizaciones de la vista de topología en función de los eventos que se producen durante las operaciones de clúster de Valkey y Redis OSS. Al habilitar esta opción, se actualiza inmediatamente la topología cuando se activa uno de los desencadenadores anteriores. Las actualizaciones desencadenadas adaptativas tienen un límite de velocidad mediante un tiempo de espera porque los eventos se pueden producir a gran escala (tiempo de espera predeterminado entre actualizaciones: 30).

Habilite [closeStaleConnections](https://lettuce.io/core/release/api/io/lettuce/core/cluster/ClusterTopologyRefreshOptions.Builder.html#closeStaleConnections-boolean-). Esto permite cerrar las conexiones obsoletas al actualizar la topología del clúster. Solo entra en vigor si [ClusterTopologyRefreshOptions.isPeriodicRefreshEnabled()](https://lettuce.io/core/release/api/io/lettuce/core/cluster/ClusterTopologyRefreshOptions.html#isPeriodicRefreshEnabled--) es verdadero. Cuando se habilita, el cliente puede cerrar las conexiones obsoletas y crear otras nuevas en segundo plano. Esto reduce la necesidad de gestionar las conexiones erróneas durante el tiempo de ejecución del comando.

Habilite [dynamicRefreshResources](https://lettuce.io/core/release/api/io/lettuce/core/cluster/ClusterTopologyRefreshOptions.Builder.html#dynamicRefreshSources-boolean-). Recomendamos habilitar dynamicRefreshResources para clústeres pequeños y desactivarlo para clústeres grandes. dynamicRefreshResources permite detectar los nodos del clúster desde el nodo raíz proporcionado (por ejemplo, el punto de conexión de configuración del clúster). Utiliza todos los nodos detectados como orígenes para actualizar la topología del clúster. 

El uso de la actualización dinámica consulta todos los nodos detectados para la topología del clúster e intenta elegir la vista de clúster más precisa. Si se establece en falso, solo se utilizan los nodos raíz iniciales como orígenes para la detección de la topología y el número de clientes se obtiene solo para los nodos raíz iniciales. Cuando se desactiva, si el punto de conexión de la configuración del clúster se resuelve como un nodo con errores, se produce un error al intentar actualizar la vista del clúster y se producen excepciones. Este escenario se puede producir porque pasa algún tiempo hasta que la entrada de un nodo con errores se elimina del punto de conexión de la configuración del clúster. Por lo tanto, el punto de conexión de la configuración aún se puede resolver aleatoriamente en un nodo erróneo durante un breve periodo de tiempo. 

Sin embargo, cuando se habilita, utilizamos todos los nodos del clúster que se reciben de la vista de clústeres para consultar la vista actual. Como filtramos los nodos con errores de esa vista, la actualización de la topología se realizará correctamente. Sin embargo, cuando dynamicRefreshSources es verdadero, Lettuce consulta todos los nodos para obtener la vista del clúster y, a continuación, compara los resultados. Por lo tanto, puede resultar caro para los clústeres con muchos nodos. Le sugerimos que desactive esta característica para los clústeres con muchos nodos. 

```
final ClusterTopologyRefreshOptions topologyOptions = 
    ClusterTopologyRefreshOptions.builder()
    .enableAllAdaptiveRefreshTriggers()
    .enablePeriodicRefresh()
    .dynamicRefreshSources(true)
    .build();
```

**ClientResources**

Configure [DnsResolver](https://lettuce.io/core/release/api/io/lettuce/core/resource/DefaultClientResources.Builder.html#dnsResolver-io.lettuce.core.resource.DnsResolver-) con [DirContextDnsResolver](https://lettuce.io/core/release/api/io/lettuce/core/resource/DirContextDnsResolver.html). El servicio de resolución de DNS se basa en com.sun.jndi.dns.DnsContextFactory de Java.

Configure [reconnectDelay](https://lettuce.io/core/release/api/io/lettuce/core/resource/DefaultClientResources.Builder.html#reconnectDelay-io.lettuce.core.resource.Delay-) con retroceso exponencial y fluctuación total. Lettuce tiene mecanismos de reintento integrados basados en las estrategias de retroceso exponencial. Para obtener más información, consulte [Retroceso exponencial y fluctuación](https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter) en el blog de arquitectura de AWS. Para obtener más información sobre la importancia de contar con una estrategia de reintento, consulte las secciones sobre lógica de retraso de la [Publicación del blog sobre mejores prácticas](https://aws.amazon.com/blogs/database/best-practices-redis-clients-and-amazon-elasticache-for-redis/) en el blog de base de datos de AWS.

```
ClientResources clientResources = DefaultClientResources.builder()
   .dnsResolver(new DirContextDnsResolver())
    .reconnectDelay(
        Delay.fullJitter(
            Duration.ofMillis(100),     // minimum 100 millisecond delay
            Duration.ofSeconds(10),      // maximum 10 second delay
            100, TimeUnit.MILLISECONDS)) // 100 millisecond base
    .build();
```

**Tiempos de espera**

Utilice un valor de tiempo de espera de conexión inferior al tiempo de espera del comando. Lettuce utiliza un establecimiento de conexión diferida. Por lo tanto, si el tiempo de espera de conexión es superior al tiempo de espera del comando, puede producirse un periodo de error persistente tras una actualización de la topología si Lettuce intenta conectarse a un nodo en mal estado y siempre se supera el tiempo de espera del comando. 

Utilice un tiempo de espera de comando dinámico para diferentes comandos. Le recomendamos que establezca el tiempo de espera del comando en función de la duración esperada del comando. Por ejemplo, utilice un tiempo de espera más largo para los comandos que se repiten en varias claves, como los scripts FLUSHDB, FLUSHALL, KEYS, SMEMBERS o Lua. Utilice tiempos de espera más cortos para los comandos de una sola clave, como SET, GET y HSET.

**nota**  
Los tiempos de espera que se configuran en el siguiente ejemplo son para pruebas que ejecutaron comandos SET/GET con claves y valores de hasta 20 bytes de longitud. El tiempo de procesamiento puede ser mayor cuando los comandos son complejos o las claves y los valores son más grandes. Debe establecer los tiempos de espera en función del caso de uso de la aplicación. 

```
private static final Duration META_COMMAND_TIMEOUT = Duration.ofMillis(1000);
private static final Duration DEFAULT_COMMAND_TIMEOUT = Duration.ofMillis(250);
// Socket connect timeout should be lower than command timeout for Lettuce
private static final Duration CONNECT_TIMEOUT = Duration.ofMillis(100);
    
SocketOptions socketOptions = SocketOptions.builder()
    .connectTimeout(CONNECT_TIMEOUT)
    .build();
 

class DynamicClusterTimeout extends TimeoutSource {
     private static final Set<ProtocolKeyword> META_COMMAND_TYPES = ImmutableSet.<ProtocolKeyword>builder()
          .add(CommandType.FLUSHDB)
          .add(CommandType.FLUSHALL)
          .add(CommandType.CLUSTER)
          .add(CommandType.INFO)
          .add(CommandType.KEYS)
          .build();

    private final Duration defaultCommandTimeout;
    private final Duration metaCommandTimeout;

    DynamicClusterTimeout(Duration defaultTimeout, Duration metaTimeout)
    {
        defaultCommandTimeout = defaultTimeout;
        metaCommandTimeout = metaTimeout;
    }

    @Override
    public long getTimeout(RedisCommand<?, ?, ?> command) {
        if (META_COMMAND_TYPES.contains(command.getType())) {
            return metaCommandTimeout.toMillis();
        }
        return defaultCommandTimeout.toMillis();
    }
}

// Use a dynamic timeout for commands, to avoid timeouts during
// cluster management and slow operations.
TimeoutOptions timeoutOptions = TimeoutOptions.builder()
.timeoutSource(
    new DynamicClusterTimeout(DEFAULT_COMMAND_TIMEOUT, META_COMMAND_TIMEOUT))
.build();
```

# Ejemplo: Configuración de Lettuce para el modo de clúster con TLS habilitado
<a name="BestPractices.Clients-lettuce-cme"></a>

**nota**  
Los tiempos de espera del siguiente ejemplo son para pruebas que ejecutaron comandos SET/GET con claves y valores de hasta 20 bytes de longitud. El tiempo de procesamiento puede ser mayor cuando los comandos son complejos o las claves y los valores son más grandes. Debe establecer los tiempos de espera en función del caso de uso de la aplicación. 

```
// Set DNS cache TTL
public void setJVMProperties() {
    java.security.Security.setProperty("networkaddress.cache.ttl", "10");
}

private static final Duration META_COMMAND_TIMEOUT = Duration.ofMillis(1000);
private static final Duration DEFAULT_COMMAND_TIMEOUT = Duration.ofMillis(250);
// Socket connect timeout should be lower than command timeout for Lettuce
private static final Duration CONNECT_TIMEOUT = Duration.ofMillis(100);

// Create RedisURI from the cluster configuration endpoint
clusterConfigurationEndpoint = <cluster-configuration-endpoint> // TODO: add your cluster configuration endpoint
final RedisURI redisUriCluster =
    RedisURI.Builder.redis(clusterConfigurationEndpoint)
        .withPort(6379)
        .withSsl(true)
        .build();

// Configure the client's resources                
ClientResources clientResources = DefaultClientResources.builder()
    .reconnectDelay(
        Delay.fullJitter(
            Duration.ofMillis(100),     // minimum 100 millisecond delay
            Duration.ofSeconds(10),      // maximum 10 second delay
            100, TimeUnit.MILLISECONDS)) // 100 millisecond base
    .dnsResolver(new DirContextDnsResolver())
    .build(); 

// Create a cluster client instance with the URI and resources
RedisClusterClient redisClusterClient = 
    RedisClusterClient.create(clientResources, redisUriCluster);

// Use a dynamic timeout for commands, to avoid timeouts during
// cluster management and slow operations.
class DynamicClusterTimeout extends TimeoutSource {
     private static final Set<ProtocolKeyword> META_COMMAND_TYPES = ImmutableSet.<ProtocolKeyword>builder()
          .add(CommandType.FLUSHDB)
          .add(CommandType.FLUSHALL)
          .add(CommandType.CLUSTER)
          .add(CommandType.INFO)
          .add(CommandType.KEYS)
          .build();

    private final Duration metaCommandTimeout;
    private final Duration defaultCommandTimeout;

    DynamicClusterTimeout(Duration defaultTimeout, Duration metaTimeout)
    {
        defaultCommandTimeout = defaultTimeout;
        metaCommandTimeout = metaTimeout;
    }

    @Override
    public long getTimeout(RedisCommand<?, ?, ?> command) {
        if (META_COMMAND_TYPES.contains(command.getType())) {
            return metaCommandTimeout.toMillis();
        }
        return defaultCommandTimeout.toMillis();
    }
}

TimeoutOptions timeoutOptions = TimeoutOptions.builder()
    .timeoutSource(new DynamicClusterTimeout(DEFAULT_COMMAND_TIMEOUT, META_COMMAND_TIMEOUT))
     .build();

// Configure the topology refreshment options
final ClusterTopologyRefreshOptions topologyOptions = 
    ClusterTopologyRefreshOptions.builder()
    .enableAllAdaptiveRefreshTriggers()
    .enablePeriodicRefresh()
    .dynamicRefreshSources(true)
    .build();

// Configure the socket options
final SocketOptions socketOptions = 
    SocketOptions.builder()
    .connectTimeout(CONNECT_TIMEOUT) 
    .keepAlive(true)
    .build();

// Configure the client's options
final ClusterClientOptions clusterClientOptions = 
    ClusterClientOptions.builder()
    .topologyRefreshOptions(topologyOptions)
    .socketOptions(socketOptions)
    .autoReconnect(true)
    .timeoutOptions(timeoutOptions) 
    .nodeFilter(it -> 
        ! (it.is(RedisClusterNode.NodeFlag.FAIL) 
        || it.is(RedisClusterNode.NodeFlag.EVENTUAL_FAIL) 
        || it.is(RedisClusterNode.NodeFlag.NOADDR))) 
    .validateClusterNodeMembership(false)
    .build();
    
redisClusterClient.setOptions(clusterClientOptions);

// Get a connection
final StatefulRedisClusterConnection<String, String> connection = 
    redisClusterClient.connect();

// Get cluster sync/async commands   
RedisAdvancedClusterCommands<String, String> sync = connection.sync();
RedisAdvancedClusterAsyncCommands<String, String> async = connection.async();
```

# Ejemplo: Configuración de Lettuce para el modo de clúster deshabilitado con TLS habilitado
<a name="BestPractices.Clients-lettuce-cmd"></a>

**nota**  
Los tiempos de espera del siguiente ejemplo son para pruebas que ejecutaron comandos SET/GET con claves y valores de hasta 20 bytes de longitud. El tiempo de procesamiento puede ser mayor cuando los comandos son complejos o las claves y los valores son más grandes. Debe establecer los tiempos de espera en función del caso de uso de la aplicación. 

```
// Set DNS cache TTL
public void setJVMProperties() {
    java.security.Security.setProperty("networkaddress.cache.ttl", "10");
}

private static final Duration META_COMMAND_TIMEOUT = Duration.ofMillis(1000);
private static final Duration DEFAULT_COMMAND_TIMEOUT = Duration.ofMillis(250);
// Socket connect timeout should be lower than command timeout for Lettuce
private static final Duration CONNECT_TIMEOUT = Duration.ofMillis(100);

// Create RedisURI from the primary/reader endpoint
clusterEndpoint = <primary/reader-endpoint> // TODO: add your node endpoint
RedisURI redisUriStandalone =
    RedisURI.Builder.redis(clusterEndpoint).withPort(6379).withSsl(true).withDatabase(0).build();

ClientResources clientResources =
    DefaultClientResources.builder()
        .dnsResolver(new DirContextDnsResolver())
        .reconnectDelay(
            Delay.fullJitter(
                Duration.ofMillis(100), // minimum 100 millisecond delay
                Duration.ofSeconds(10), // maximum 10 second delay
                100,
                TimeUnit.MILLISECONDS)) // 100 millisecond base
        .build();

// Use a dynamic timeout for commands, to avoid timeouts during
// slow operations.
class DynamicTimeout extends TimeoutSource {
     private static final Set<ProtocolKeyword> META_COMMAND_TYPES = ImmutableSet.<ProtocolKeyword>builder()
          .add(CommandType.FLUSHDB)
          .add(CommandType.FLUSHALL)
          .add(CommandType.INFO)
          .add(CommandType.KEYS)
          .build();

    private final Duration metaCommandTimeout;
    private final Duration defaultCommandTimeout;

    DynamicTimeout(Duration defaultTimeout, Duration metaTimeout)
    {
        defaultCommandTimeout = defaultTimeout;
        metaCommandTimeout = metaTimeout;
    }

    @Override
    public long getTimeout(RedisCommand<?, ?, ?> command) {
        if (META_COMMAND_TYPES.contains(command.getType())) {
            return metaCommandTimeout.toMillis();
        }
        return defaultCommandTimeout.toMillis();
    }
}

TimeoutOptions timeoutOptions = TimeoutOptions.builder()
    .timeoutSource(new DynamicTimeout(DEFAULT_COMMAND_TIMEOUT, META_COMMAND_TIMEOUT))
     .build();                      
                                    
final SocketOptions socketOptions =
    SocketOptions.builder().connectTimeout(CONNECT_TIMEOUT).keepAlive(true).build();

ClientOptions clientOptions =
    ClientOptions.builder().timeoutOptions(timeoutOptions).socketOptions(socketOptions).build();

RedisClient redisClient = RedisClient.create(clientResources, redisUriStandalone);
redisClient.setOptions(clientOptions);
```

## Configuración de un protocolo preferido para clústeres de doble pila (Valkey y Redis OSS)
<a name="network-type-configuring-dual-stack-redis"></a>

En el caso de los clústeres de Valkey o Redis OSS habilitados para el modo de clúster, puede controlar el protocolo que los clientes utilizarán para conectarse a los nodos del clúster con el parámetro de detección de IP. El parámetro de detección de IP se puede establecer en IPv4 o IPv6. 

Para los clústeres de Valkey o Redis OSS, el parámetro de detección de IP establece el protocolo IP utilizado en la salida de las [ranuras del clúster ()](https://valkey.io/commands/cluster-slots/), las [particiones del clúster ()](https://valkey.io/commands/cluster-shards/) y los [nodos del clúster ()](https://valkey.io/commands/cluster-nodes/). Los clientes utilizan estos comandos para detectar la topología del clúster. Los clientes usan las IP de estos comandos para conectarse a los otros nodos del clúster. 

Cambiar la detección de IP no provocará ningún tiempo de inactividad para los clientes conectados. Sin embargo, los cambios tardarán algún tiempo en propagarse. Para determinar cuándo los cambios se han propagado por completo para un clúster de Valkey o Redis OSS, supervise la salida de `cluster slots`. Una vez que todos los nodos devueltos por el comando de ranuras del clúster registren las IP con el nuevo protocolo, los cambios terminarán de propagarse. 

Ejemplo con Redis-Py:

```
cluster = RedisCluster(host="xxxx", port=6379)
target_type = IPv6Address # Or IPv4Address if changing to IPv4

nodes = set()
while len(nodes) == 0 or not all((type(ip_address(host)) is target_type) for host in nodes):
    nodes = set()

   # This refreshes the cluster topology and will discovery any node updates.
   # Under the hood it calls cluster slots
    cluster.nodes_manager.initialize()
    for node in cluster.get_nodes():
        nodes.add(node.host)
    self.logger.info(nodes)

    time.sleep(1)
```

Ejemplo con Lettuce:

```
RedisClusterClient clusterClient = RedisClusterClient.create(RedisURI.create("xxxx", 6379));

Class targetProtocolType = Inet6Address.class; // Or Inet4Address.class if you're switching to IPv4

Set<String> nodes;
    
do {
   // Check for any changes in the cluster topology.
   // Under the hood this calls cluster slots
    clusterClient.refreshPartitions();
    Set<String> nodes = new HashSet<>();

    for (RedisClusterNode node : clusterClient.getPartitions().getPartitions()) {
        nodes.add(node.getUri().getHost());
    }

    Thread.sleep(1000);
} while (!nodes.stream().allMatch(node -> {
            try {
                return finalTargetProtocolType.isInstance(InetAddress.getByName(node));
            } catch (UnknownHostException ignored) {}
            return false;
}));
```

# Prácticas recomendadas para clientes (Memcached)
<a name="BestPractices.Clients.memcached"></a>

Conozca las prácticas recomendadas para escenarios comunes con clústeres de ElastiCache para Memcached.

**Topics**
+ [Configuración de su ElastiCache cliente para un equilibrio de carga eficiente (Memcached)](BestPractices.LoadBalancing.md)
+ [Clientes validados con Memcached](network-type-validated-clients-memcached.md)
+ [Configuración de un protocolo preferido para clústeres de doble pila (Memcached)](network-type-configuring-dual-stack-memcached.md)

# Configuración de su ElastiCache cliente para un equilibrio de carga eficiente (Memcached)
<a name="BestPractices.LoadBalancing"></a>

**nota**  
Esta sección se aplica a clústeres de Memcached de varios nodos basados en nodos.

Para utilizar de forma eficaz varios nodos de ElastiCache Memcached, debe poder distribuir las claves de caché entre los nodos. Una manera sencilla de equilibrar la carga de un clúster con *n* nodos es calcular el hash de la clave del objeto y aplicar la función mod al resultado mediante *n*: `hash(key) mod n`. El valor resultante (de 0 a *n*-1) es el número del nodo en el que deberá colocar el objeto. 

Este enfoque es sencillo y funciona bien siempre que el número de nodos (*n*) sea constante. Sin embargo, siempre que agregue o elimine un nodo del clúster, el número de claves que deben moverse será *(n (1)/n* (donde *n* es el nuevo número de nodos). Por lo tanto, este enfoque da como resultado el traslado de un gran número de claves, lo que se traduce en un gran número de pérdidas iniciales de caché, especialmente cuando el número de nodos es elevado. En el mejor de los casos, al escalar de 1 a 2 resultados de nodos, se obtienen (2-1)/2 (50 %) de claves para trasladar. Al escalar de 9 a 10 nodos, se obtienen (10-1)/10 (90 %) de claves para trasladar. Si va a ampliar debido a un pico de tráfico, no deseará tener muchas pérdidas de caché. Un gran número de pérdidas de caché devuelve coincidencias con la base de datos, que ya está sobrecargada por el pico de tráfico.

La solución a este dilema es un uso consistente de la función hash. Una utilización consistente de hash emplea un algoritmo según el cual, siempre que se agregue o elimine un nodo de un clúster, el número de claves que deba moverse será aproximadamente *1/n* (donde *n* es el número de nodos nuevo). En el peor de los casos, al escalar de 1 a 2 resultados de nodos, se obtienen 1/2 (50 por ciento) de claves para trasladar. Al escalar de 9 a 10 nodos, se obtienen 1/10 (10 por ciento) de claves para trasladar.

Como usuario, deberá controlar qué algoritmo de hash se usa para los clústeres de varios nodos. Recomendamos configurar sus clientes para que utilicen hash de forma consistente. Afortunadamente, hay muchas bibliotecas de cliente de Memcached en la mayoría de los idiomas comunes que implementan hash de forma consistente. Consulte la documentación de la biblioteca que va a utilizar para ver si admite el uso consistente de hash y saber cómo implementarlo.

Si trabaja en Java, PHP o.NET, le recomendamos que utilice una de las bibliotecas ElastiCache cliente de Amazon.

## Uso consistente de hash con Java
<a name="BestPractices.LoadBalancing.Java"></a>

El cliente Java de ElastiCache Memcached se basa en el cliente Java spymemcached de código abierto, que incorpora funciones de hash consistentes. La biblioteca incluye una clase que implementa un hash coherente. KetamaConnectionFactory De forma predeterminada, el uso consistente de hash está desactivado en spymemcached.

Para obtener más información, consulte la KetamaConnectionFactory documentación en [KetamaConnectionFactory](https://github.com/RTBHOUSE/spymemcached/blob/master/src/main/java/net/spy/memcached/KetamaConnectionFactory.java).

## Uso consistente de hash utilizando PHP con Memcached
<a name="BestPractices.LoadBalancing.PHP"></a>

El cliente PHP de ElastiCache Memcached es un contenedor de la biblioteca PHP integrada de Memcached. De forma predeterminada, el uso consistente de hash está desactivado en la biblioteca PHP de Memcached.

Utilice el siguiente código para habilitar el uso consistente de hash.

```
$m = new Memcached();
$m->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT);
```

Además del código anterior, recomendamos habilitar también `memcached.sess_consistent_hash` en su archivo php.ini.

 [Para obtener más información, consulte la documentación de configuración en tiempo de ejecución de Memcached PHP en http://php. net/manual/en/memcached.configuración.php.](http://php.net/manual/en/memcached.configuration.php) Tenga en cuenta específicamente el parámetro `memcached.sess_consistent_hash`.

## Uso consistente de hash utilizando .NET con Memcached
<a name="BestPractices.LoadBalancing.dotNET"></a>

El cliente.NET de ElastiCache Memcached es un envoltorio de Enyim Memcached. De forma predeterminada, el uso consistente de hash está habilitado en el cliente Enyim Memcached.

 [Para obtener más información, consulte la documentación en -Configuration\$1. `memcached/locator` https://github.com/enyim/ EnyimMemcached/wiki/MemcachedClient user-content-memcachedlocator](https://github.com/enyim/EnyimMemcached/wiki/MemcachedClient-Configuration#user-content-memcachedlocator)

# Clientes validados con Memcached
<a name="network-type-validated-clients-memcached"></a>

Los siguientes clientes se han validado específicamente para funcionar con todas las configuraciones de tipo de red admitidas para Memcached.

Clientes validados:
+ [AWS ElastiCache Cluster Client Memcached para Php](https://github.com/awslabs/aws-elasticache-cluster-client-memcached-for-php): [versión \$13.6.2](https://github.com/awslabs/aws-elasticache-cluster-client-memcached-for-php/tree/v3.2.0)
+ [AWS ElastiCache Cluster Client Memcached para Java](https://github.com/awslabs/aws-elasticache-cluster-client-memcached-for-java): versión principal más reciente en Github

# Configuración de un protocolo preferido para clústeres de doble pila (Memcached)
<a name="network-type-configuring-dual-stack-memcached"></a>

Para los clústeres de Memcached, puede controlar el protocolo que los clientes utilizarán para conectarse a los nodos del clúster con el parámetro de detección de IP. El parámetro de detección de IP se puede establecer en IPv4 o IPv6. 

El parámetro de detección de IP controla el protocolo IP utilizado en la salida del clúster config get. Lo que, a su vez, determinará el protocolo IP utilizado por los clientes que admiten la detección automática de clústeres de ElastiCache para Memcached.

Cambiar la detección de IP no provocará ningún tiempo de inactividad para los clientes conectados. Sin embargo, los cambios tardarán algún tiempo en propagarse. 

Monitoree la salida de `getAvailableNodeEndPoints` para Java y para que Php monitoree la salida de `getServerList`. Una vez que la salida de estas funciones registre las IP de todos los nodos del clúster que utilizan el protocolo actualizado, los cambios terminarán de propagarse.

Ejemplo de Java:

```
MemcachedClient client = new MemcachedClient(new InetSocketAddress("xxxx", 11211));

Class targetProtocolType = Inet6Address.class; // Or Inet4Address.class if you're switching to IPv4

Set<String> nodes;
    
do {
    nodes = client.getAvailableNodeEndPoints().stream().map(NodeEndPoint::getIpAddress).collect(Collectors.toSet());

    Thread.sleep(1000);
} while (!nodes.stream().allMatch(node -> {
            try {
                return finalTargetProtocolType.isInstance(InetAddress.getByName(node));
            } catch (UnknownHostException ignored) {}
            return false;
        }));
```

Ejemplo de Php:

```
$client = new Memcached;
$client->setOption(Memcached::OPT_CLIENT_MODE, Memcached::DYNAMIC_CLIENT_MODE);
$client->addServer("xxxx", 11211);

$nodes = [];
$target_ips_count = 0;
do {
    # The PHP memcached client only updates the server list if the polling interval has expired and a
    # command is sent
    $client->get('test');
 
    $nodes = $client->getServerList();

    sleep(1);
    $target_ips_count = 0;

    // For IPv4 use FILTER_FLAG_IPV4
    $target_ips_count = count(array_filter($nodes, function($node) { return filter_var($node["ipaddress"], FILTER_VALIDATE_IP, FILTER_FLAG_IPV6); }));
 
} while (count($nodes) !== $target_ips_count);
```

Todas las conexiones de cliente existentes que se crearon antes de que se actualizara la detección de IP seguirán conectadas mediante el protocolo anterior. Todos los clientes validados se volverán a conectar automáticamente al clúster mediante el nuevo protocolo IP una vez que se detecten los cambios en el resultado de los comandos de detección del clúster. Sin embargo, esto depende de la implementación del cliente.

## Clústeres de ElastiCache de doble pila compatibles con TLS
<a name="network-type-configuring-tls-enabled-dual-stack"></a>

Cuando se habilita TLS para los clústeres de ElastiCache, las funciones de detección de clústeres (`cluster slots`, `cluster shards` y `cluster nodes` para Redis) o `config get cluster` para Memcached devuelven nombres de host en lugar de IP. A continuación, se utilizan los nombres de host en lugar de las IP para conectarse al clúster de ElastiCache y realizar un protocolo de enlace TLS. Esto significa que los clientes no se verán afectados por el parámetro de detección de IP. En el caso de los clústeres habilitados para TLS, el parámetro de detección de IP no tiene ningún efecto en el protocolo IP preferido. En cambio, el protocolo IP utilizado se determinará según el protocolo IP que prefiera el cliente al resolver los nombres de host de DNS.

**Clientes de Java**

Al conectarse desde un entorno de Java que admite IPv4 e IPv6, Java preferirá de forma predeterminada IPv4 en lugar de IPv6 por motivos de compatibilidad con versiones anteriores. Sin embargo, la preferencia del protocolo IP se puede configurar mediante los argumentos de JVM. Para preferir IPv4, JVM acepta `-Djava.net.preferIPv4Stack=true` y para preferir IPv6 establece `-Djava.net.preferIPv6Stack=true`. La configuración de `-Djava.net.preferIPv4Stack=true` significa que JVM ya no realizará ninguna conexión IPv6. **En el caso de Valkey o Redis OSS, esto incluye a otras aplicaciones que no son de Valkey ni de Redis OSS.**

**Preferencias de nivel de host**

En general, si el cliente o el entorno de ejecución del cliente no ofrecen opciones de configuración para establecer una preferencia de protocolo IP, al realizar la resolución de DNS, el protocolo IP dependerá de la configuración del host. De forma predeterminada, la mayoría de los hosts prefieren IPv6 en lugar de IPv4, pero esta preferencia se puede establecer en el nivel de host. Esto afectará a todas las solicitudes de DNS de ese host, no solo a las dirigidas a los clústeres de ElastiCache.

**Hosts de Linux**

Para Linux, se puede configurar una preferencia de protocolo IP modificando el archivo `gai.conf`. El archivo `gai.conf` se encuentra en `/etc/gai.conf`. Si no se especifica `gai.conf`, debería haber disponible un ejemplo en `/usr/share/doc/glibc-common-x.xx/gai.conf` que se pueda copiar a `/etc/gai.conf`. Además, la configuración predeterminada no debe estar comentada. Si desea actualizar la configuración para preferir IPv4 al conectarse a un clúster de ElastiCache, actualice la prioridad del rango de CIDR que abarca las IP del clúster para que esté por encima de la prioridad de las conexiones IPv6 predeterminadas. De forma predeterminada, las conexiones IPv6 tienen una prioridad de 40. Por ejemplo, suponiendo que el clúster esté ubicado en una subred con el CIDR 172.31.0.0:0/16, la siguiente configuración haría que los clientes prefirieran las conexiones IPv4 a ese clúster.

```
label ::1/128       0
label ::/0          1
label 2002::/16     2
label ::/96         3
label ::ffff:0:0/96 4
label fec0::/10     5
label fc00::/7      6
label 2001:0::/32   7
label ::ffff:172.31.0.0/112 8
#
#    This default differs from the tables given in RFC 3484 by handling
#    (now obsolete) site-local IPv6 addresses and Unique Local Addresses.
#    The reason for this difference is that these addresses are never
#    NATed while IPv4 site-local addresses most probably are.  Given
#    the precedence of IPv6 over IPv4 (see below) on machines having only
#    site-local IPv4 and IPv6 addresses a lookup for a global address would
#    see the IPv6 be preferred.  The result is a long delay because the
#    site-local IPv6 addresses cannot be used while the IPv4 address is
#    (at least for the foreseeable future) NATed.  We also treat Teredo
#    tunnels special.
#
# precedence  <mask>   <value>
#    Add another rule to the RFC 3484 precedence table.  See section 2.1
#    and 10.3 in RFC 3484.  The default is:
#
precedence  ::1/128       50
precedence  ::/0          40
precedence  2002::/16     30
precedence ::/96          20
precedence ::ffff:0:0/96  10
precedence ::ffff:172.31.0.0/112 100
```

Puede encontrar más información disponible sobre `gai.conf` en la [página principal de Linux](https://man7.org/linux/man-pages/man5/gai.conf.5.html) 

**Hosts de Windows**

El proceso para los hosts de Windows es similar. Para los hosts de Windows puede ejecutar `netsh interface ipv6 set prefix CIDR_CONTAINING_CLUSTER_IPS PRECEDENCE LABEL`. Esto tiene el mismo efecto que modificar el archivo `gai.conf` en los hosts de Linux.

Esto actualizará las políticas de preferencias, de modo que se prefieran las conexiones IPv4 en lugar de las conexiones IPv6 para el rango de CIDR especificado. Por ejemplo, suponiendo que el clúster esté en una subred con el CIDR 172.31.0.0:0/16, ejecutar `netsh interface ipv6 set prefix ::ffff:172.31.0.0:0/112 100 15` generaría la siguiente tabla de prioridades, lo que haría que los clientes prefirieran IPv4 al conectarse al clúster. 

```
C:\Users\Administrator>netsh interface ipv6 show prefixpolicies
Querying active state...

Precedence Label Prefix
---------- ----- --------------------------------
100 15 ::ffff:172.31.0.0:0/112
20 4 ::ffff:0:0/96
50 0 ::1/128
40 1 ::/0
30 2 2002::/16
5 5 2001::/32
3 13 fc00::/7
1 11 fec0::/10
1 12 3ffe::/16
1 3 ::/96
```

# 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"
```

# Prácticas recomendadas al trabajar con clústeres basados en nodos de Valkey y Redis OSS
<a name="BestPractices.SelfDesigned"></a>

El uso de multi-AZ, disponer de suficiente memoria, cambiar el tamaño del clúster y minimizar el tiempo de inactividad son conceptos útiles que hay que tener en cuenta al trabajar con clústeres basados en nodos en Valkey o Redis OSS. Le recomendamos que revise y siga estos procedimientos recomendados.

**Topics**
+ [Minimización del tiempo de inactividad con Multi-AZ](multi-az.md)
+ [Forma de garantizar que dispone de memoria suficiente para crear una instantánea de Valkey o Redis OSS](BestPractices.BGSAVE.md)
+ [Cambio de tamaño de clústeres online](best-practices-online-resharding.md)
+ [Minimización del tiempo de inactividad durante el mantenimiento](BestPractices.MinimizeDowntime.md)

# Minimización del tiempo de inactividad con Multi-AZ
<a name="multi-az"></a>

Existen varias instancias en las que ElastiCache Valkey o Redis OSS podrían tener que reemplazar un nodo principal. Entre estas se incluyen determinados tipos de mantenimiento planificado y el caso poco probable de que se produzca un error en el nodo principal o en la zona de disponibilidad.

Este reemplazo produce un tiempo de inactividad para el clúster, pero si Multi-AZ se encuentra habilitado, el tiempo de inactividad es mínimo. El rol del nodo primario tendrá una conmutación por error automática en una de las réplicas de lectura. No es necesario crear ni aprovisionar un nodo primario nuevo, ya que ElastiCache se encargará de esto de forma clara. Esta conmutación por error y promoción de réplica garantizan la posibilidad de reanudar la escritura en la réplica principal tan pronto como se complete la promoción.

Consulte [Minimización del tiempo de inactividad en ElastiCache utilizando multi-AZ con Valkey y Redis OSS](AutoFailover.md) para obtener más información sobre multi-AZ y la minimización del tiempo de inactividad.

# Forma de garantizar que dispone de memoria suficiente para crear una instantánea de Valkey o Redis OSS
<a name="BestPractices.BGSAVE"></a>

**Instantáneas y sincronizaciones en Valkey 7.2 y versiones posteriores y Redis OSS versión 2.8.22 y posteriores**  
Valkey admite de forma predeterminada instantáneas y sincronizaciones. Redis OSS 2.8.22 introduce un proceso de guardado sin ramificaciones que le permite asignar más memoria para el uso de su aplicación sin tener que aumentar el uso del espacio de intercambio durante las sincronizaciones y guardados. Para obtener más información, consulte [Cómo se implementan la sincronización y la copia de seguridad](Replication.Redis.Versions.md).

**Instantáneas y sincronizaciones de Redis OSS anteriores a la versión 2.8.22**

Al trabajar con ElastiCache para Redis OSS, Redis OSS llama a un comando de escritura en segundo plano en diversos casos:
+ Al crear una instantánea para una copia de seguridad.
+ Al sincronizar réplicas con la instancia principal en un grupo de reproducción.
+ Al habilitar la característica de archivo de solo anexado (AOF) para Redis OSS.
+ Al promocionar una réplica al nodo primario (lo que produce la sincronización del nodo primario/réplica).

Siempre que Redis OSS ejecute un proceso de escritura en segundo plano, debe disponer de memoria suficiente para los procesos adicionales. Si no tiene suficiente memoria disponible, se produce un error en el proceso. Por ello, es importante elegir un tipo de instancia de nodo que tenga suficiente memoria al crear el clúster de Redis OSS.

## Proceso de escritura en segundo plano y uso de memoria con Valkey y Redis OSS
<a name="BestPractices.BGSAVE.Process"></a>

Siempre que se llame a un proceso de escritura en segundo plano, Valkey y Redis OSS ramifican su proceso (recuerde que estos motores son de un solo proceso). Una ramificación conserva sus datos en disco en un archivo de instantánea .rdb de Redis OSS. El resto de los servicios de la ramificación son todos operaciones de lectura y escritura. Para asegurarse de que la instantánea sea una instantánea puntual, todas las actualizaciones y adiciones se escriben en un área de la memoria disponible independiente del área de los datos.

Siempre que tenga suficiente memoria disponible para registrar todas las operaciones de escritura mientras se almacenan los datos en disco, no debería tener problemas de memoria insuficiente. Es probable que experimente problemas de memoria insuficiente si se da alguna de las siguientes condiciones:
+ Su aplicación realiza muchas operaciones de escritura, lo que requiere una gran cantidad de memoria disponible para aceptar los datos nuevos o actualizados.
+ Tiene muy poca memoria disponible en la que agregar datos nuevos o datos.
+ Dispone de un gran conjunto de datos que requiere mucho tiempo para guardar en disco, lo que exige un gran número de operaciones de escritura.

El siguiente diagrama ilustra el uso de memoria al ejecutar un proceso de escritura en segundo plano.

![\[Imagen: Diagrama de uso de memoria durante la escritura en segundo plano.\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/images/ElastiCache-bgsaveMemoryUseage.png)


Para obtener más información acerca del impacto en el rendimiento de hacer una copia de seguridad, consulte [Impacto en el rendimiento de las copias de seguridad de los clústeres basados en nodos](backups.md#backups-performance).

Para obtener más información acerca de cómo realizan Valkey y Redis OSS las instantáneas, consulte [http://valkey.io](http://valkey.io).

Para obtener más información acerca de las regiones y zonas de disponibilidad, consulte [Elección de regiones y zonas de disponibilidad para ElastiCache](RegionsAndAZs.md). 

## Evitar el agotamiento de la memoria al ejecutar una escritura en segundo plano
<a name="BestPractices.BGSAVE.memoryFix"></a>

Siempre que se llame a un proceso de escritura en segundo plano, como `BGSAVE` o `BGREWRITEAOF`, para evitar que el proceso falle, debe tener más memoria disponible que la que consumirán las operaciones de escritura durante el proceso. Lo peor que podría ocurrir es que, durante la operación de escritura en segundo plano, se actualizasen todos los registros y se añadiesen algunos registros nuevos a la caché. Por ello, recomendamos que establezca `reserved-memory-percent` en 50 (50 %) en versiones de Redis OSS anteriores a 2.8.22, o bien en 25 (25 %) en Redis OSS 2.8.22 y versiones posteriores. 

El valor `maxmemory` indica la memoria disponible para sus datos y para la carga adicional operativa. Puesto que no puede modificar el parámetro `reserved-memory` en el grupo de parámetros predeterminado, debe crear un grupo de parámetros personalizado para el clúster. El valor predeterminado para `reserved-memory` es 0, lo que permite a Redis OSS consumir la totalidad de *maxmemory* con datos, lo que posiblemente deja muy poca memoria para otros usos, como un proceso de escritura en segundo plano. Para los valores `maxmemory` por tipo de instancia de nodo, consulte [Parámetros específicos de tipos de nodos de Redis OSS](ParameterGroups.Engine.md#ParameterGroups.Redis.NodeSpecific).

También puede utilizar el parámetro `reserved-memory` para reducir la cantidad de memoria que se utiliza de forma predeterminada.

Para obtener más información sobre los parámetros específicos de Valkey y Redis en ElastiCache, consulte [Parámetros de Valkey y Redis OSS](ParameterGroups.Engine.md#ParameterGroups.Redis).

Para obtener información acerca de cómo crear y modificar grupos de parámetros, consulte [Creación de un grupo de parámetros de ElastiCache](ParameterGroups.Creating.md) y [Modificación de un grupo de parámetros de ElastiCache](ParameterGroups.Modifying.md).

# Cambio de tamaño de clústeres online
<a name="best-practices-online-resharding"></a>

El *cambio de las particiones* implica agregar y eliminar particiones o nodos del clúster y redistribuir los espacios clave. Como resultado, varios aspectos influyen en la operación de cambio de las particiones, como la carga en el clúster, la utilización de memoria y el tamaño total de los datos. Para disfrutar de la mejor experiencia, recomendamos que siga las prácticas recomendadas de clúster global para una distribución uniforme del patrón de carga de trabajo. Además, recomendamos que siga los pasos que se detallan a continuación.

Antes de iniciar el cambio de las particiones, recomendamos lo siguiente:
+ **Probar la aplicación**: si es posible, pruebe el comportamiento de la aplicación durante el cambio de las particiones en un entorno de ensayo.
+ **Recibir notificaciones anticipadas sobre problemas de escalado**: el cambio de particiones es una operación que requiere mucho procesamiento. Por ello, recomendamos que mantenga el uso de la CPU por debajo del 80 por ciento en instancias de varios núcleos y en menos del 50 por ciento en instancias de un solo núcleo durante el cambio de particiones. Supervise las métricas de ElastiCache para Redis OSS e inicie el cambio de las particiones antes de que la aplicación comience a tener problemas de escalado. Las métricas de las que se puede realizar un seguimiento son `CPUUtilization`, `NetworkBytesIn`, `NetworkBytesOut`, `CurrConnections`, `NewConnections`, `FreeableMemory`, `SwapUsage` y `BytesUsedForCacheItems`.
+ **Comprobar que hay suficiente memoria libre disponible antes de la reducción horizontal**: si va a realizar una reducción horizontal, asegúrese de que la memoria libre disponible en las particiones que se van a retener sea al menos 1,5 veces la memoria utilizada en las particiones que tiene previsto eliminar.
+ **Iniciar el cambio de las particiones durante las horas de menor actividad**: esta práctica contribuye a reducir la latencia y el impacto en el rendimiento en el cliente durante la operación de cambio de las particiones. También ayuda a completar el cambio de las particiones con mayor rapidez ya que se pueden usar más recursos para la redistribución de ranuras.
+ **Revisar el comportamiento de tiempo de espera de cliente**: es posible que algunos clientes observen una latencia más alta durante el cambio de tamaño del clúster en línea. La configuración de la biblioteca de cliente con un tiempo de espera más alto puede ayudar a conceder al sistema tiempo para conectar incluso en condiciones de carga más altas en servidor. En algunos casos, es posible que abra un gran número de conexiones al servidor. En estos casos, considere la posibilidad de agregar retardo exponencial a la lógica de reconexión. Si lo hace, puede ayudar a evitar que llegue una ráfaga de conexiones nuevas al servidor al mismo tiempo.
+ **Cargar las funciones en cada partición**: al escalar horizontalmente el clúster, ElastiCache replicará automáticamente las funciones cargadas en uno de los nodos existentes (seleccionado de forma aleatoria) en los nuevos nodos. Si el clúster tiene Valkey 7.2 o una versión posterior o Redis OSS 7.0 o una versión posterior y la aplicación usa [funciones](https://valkey.io/topics/functions-intro/), le recomendamos que cargue todas las funciones en todas las particiones antes de escalar horizontalmente para que el clúster no termine con diferentes funciones en distintas particiones.

Después del cambio de las particiones, tenga en cuenta lo siguiente:
+ La reducción horizontal se puede realizar parcialmente si no hay suficiente memoria disponible en las particiones de destino. Si se produce este resultado, revise la memoria disponible y, si es necesario, reintente la operación. Los datos de las particiones de destino no se eliminarán.
+ No se admiten los comandos `FLUSHALL` y `FLUSHDB` en los scripts Lua dentro durante una operación de cambio de particiones. En versiones anteriores a Redis OSS 6, no se admite el comando `BRPOPLPUSH` si opera en la ranura que se va a migrar.

# Minimización del tiempo de inactividad durante el mantenimiento
<a name="BestPractices.MinimizeDowntime"></a>

La configuración de modo de clúster presenta la mejor disponibilidad durante operaciones administradas y no administradas. Se recomienda utilizar un cliente compatible con modo de clúster que se conecte al punto de enlace de detección de clústeres. Para el modo de clúster deshabilitado, se recomienda utilizar el punto de enlace principal para todas las operaciones de escritura. 

Para la actividad de lectura, las aplicaciones pueden conectarse también a cualquier nodo del clúster. A diferencia del punto de conexión principal, los puntos de conexión de nodo se resuelven en puntos de enlace específicos. Si realiza un cambio en su clúster, como añadir o eliminar una réplica, debe actualizar los puntos de enlace del nodo en su aplicación. Por eso, si el modo de clúster está deshabilitado, le recomendamos que utilice el punto de conexión del lector para la actividad de lectura.

Si la conmutación por error automática está habilitada en el clúster, es posible que el nodo principal cambie. Por lo tanto, la aplicación debe confirmar el rol del nodo y actualizar todos los puntos de enlace de lectura. Esta operación ayuda a garantizar que no esté provocando una carga importante en el nodo principal. Con la conmutación por error automática desactivada, el rol del nodo no cambia. Sin embargo, el tiempo de inactividad en las operaciones administradas o no administradas es mayor en comparación con los clústeres con conmutación por error automática habilitada.

 Evite dirigir las solicitudes de lectura a un único nodo de réplica de lectura, ya que su falta de disponibilidad podría provocar una interrupción de la lectura. Opte por la lectura desde el servidor principal o asegúrese de tener al menos dos réplicas de lectura para evitar cualquier interrupción de la lectura durante el mantenimiento. 

# Estrategias de almacenamiento en caché para Memcached
<a name="Strategies"></a>

En el siguiente tema, encontrará estrategias para completar y mantener la caché de Memcached.

Las estrategias que implemente para completar y mantener su caché dependen del tipo de datos que va a almacenar en su caché, así como de los patrones de acceso a dichos datos. Por ejemplo, probablemente no quiera utilizar la misma estrategia para una tabla de clasificación de los 10 mejores jugadores de un sitio de juegos y noticias de moda. En el resto de esta sección, se analizan las distintas estrategias comunes de mantenimiento de caché, junto con sus ventajas e inconvenientes.

**Topics**
+ [Réplicas de lectura](#Strategies.ReadReplicas)
+ [Carga diferida](#Strategies.LazyLoading)
+ [Escritura indirecta](#Strategies.WriteThrough)
+ [Agregar TTL](#Strategies.WithTTL)
+ [Temas relacionados](#Strategies.SeeAlso)

## Réplicas de lectura
<a name="Strategies.ReadReplicas"></a>

A menudo, el rendimiento de las cachés sin servidor de ElastiCache se puede mejorar considerablemente creando réplicas y leyendo desde ellas en lugar de desde el nodo de caché principal. Para obtener más información consulte () [Prácticas recomendadas para utilizar réplicas de lectura](ReadReplicas.md).

## Carga diferida
<a name="Strategies.LazyLoading"></a>

Como su nombre indica, la *carga diferida* es una estrategia de almacenamiento en caché que carga los datos en la caché solo cuando es necesario. Funciona como se describe a continuación. 

Amazon ElastiCache es un almacén de valor de clave en memoria que se sitúa entre su aplicación y el almacén de datos (base de datos) al que accede. Siempre que su aplicación solicite datos, primero realizará una solicitud a la caché de ElastiCache. Si los datos existen en la caché y son actuales, ElastiCache devuelve los datos a su aplicación. Si los datos no existen en la caché o se han vencido, la aplicación solicita los datos del almacén de datos. A continuación, el almacén de datos devuelve los datos a su aplicación. Luego, su aplicación escribe los datos que recibió del almacén en la caché. De esta forma, se pueden recuperar más rápidamente la próxima vez que se los soliciten.

Un *acierto de caché* se produce cuando los datos se encuentran en la caché y no han vencido:

1. La aplicación solicita los datos a la caché.

1. La caché devuelve los datos a la aplicación.

Un *error de caché* se produce cuando los datos no se encuentran en la caché y han vencido:

1. La aplicación solicita los datos a la caché.

1. La caché no dispone de los datos solicitados, por lo que devuelve `null`.

1. La aplicación solicita los datos a la base de datos y los recibe.

1. La aplicación actualiza la caché con los datos nuevos.

### Ventajas y desventajas de la carga diferida
<a name="Strategies.LazyLoading.Evaluation"></a>

Las ventajas de la carga diferida son las siguientes:
+ Solo se almacenan en la caché los datos solicitados.

  Dado que nunca se solicita la mayoría de los datos, la carga diferida evita completar la caché con datos que no se solicitan.
+ Los errores de nodo no son fatales para su aplicación.

  Cuando se produce un error en un nodo y se reemplaza por un nodo nuevo y vacío, la aplicación sigue funcionando, aunque con mayor latencia. Cuando se realizan solicitudes al nodo nuevo, cada error de caché da como resultado una consulta de la base de datos. Al mismo tiempo, la copia de datos se agrega a la caché para que las solicitudes posteriores se recuperen de la caché.

Las desventajas de la carga diferida son las siguientes:
+ Existe una penalización de errores de caché. Cada error de caché genera tres acciones: 

  1. Solicitud inicial de los datos a la caché

  1. Consulta de los datos en la base de datos

  1. Escritura de los datos en la caché

   Estos errores pueden provocar un retraso significativo en la obtención de los datos en la aplicación.
+ Datos obsoletos.

  Si los datos se escriben en la caché solo cuando se produce un error de caché, los datos de la caché pueden quedar obsoletos. Este resultado se produce porque no hay actualizaciones en la caché cuando se cambian los datos en la base de datos. Para solucionar este problema, puede utilizar las estrategias [Escritura indirecta](#Strategies.WriteThrough) y [Agregar TTL](#Strategies.WithTTL).

### Ejemplo de seudocódigo de carga diferida
<a name="Strategies.LazyLoading.CodeExample"></a>

El siguiente ejemplo es un seudocódigo de lógica de carga diferida.

```
// *****************************************
// function that returns a customer's record.
// Attempts to retrieve the record from the cache.
// If it is retrieved, the record is returned to the application.
// If the record is not retrieved from the cache, it is
//    retrieved from the database, 
//    added to the cache, and 
//    returned to the application
// *****************************************
get_customer(customer_id)

    customer_record = cache.get(customer_id)
    if (customer_record == null)
    
        customer_record = db.query("SELECT * FROM Customers WHERE id = {0}", customer_id)
        cache.set(customer_id, customer_record)
    
    return customer_record
```

Para este ejemplo, el código de aplicación que obtiene los datos es el siguiente.

```
customer_record = get_customer(12345)
```

## Escritura indirecta
<a name="Strategies.WriteThrough"></a>

La estrategia de escritura indirecta agrega o actualiza los datos de la caché siempre que se escriben datos en la base de datos.

### Ventajas y desventajas de la escritura indirecta
<a name="Strategies.WriteThrough.Evaluation"></a>

Las ventajas de la escritura indirecta son las siguientes:
+ Los datos de la caché nunca quedan obsoletos.

  Dado que los datos de la caché se actualizan cada vez que se escriben en la base de datos, estos siempre se mantienen actualizados.
+ Penalización de escritura frente a penalización de lectura.

  Toda operación de escritura implica dos acciones: 

  1. Una operación de escritura en la caché

  1. Una operación de escritura en la base de datos

   Estas acciones añaden latencia al proceso. Dicho esto, los usuarios finales suelen ser más tolerantes con la latencia a la hora de actualizar datos que con la latencia a la hora de recuperar datos. Existe un sentido inherente que apunta a que las actualizaciones conllevan más trabajo y, por lo tanto, requieren mayor tiempo.

Las desventajas de la escritura indirecta son las siguientes:
+ Pérdida de datos.

  Si pone en marcha un nodo nuevo, ya sea debido a un error de nodo o a una operación de escalado horizontal, existen datos que se perderán. Estos datos siguen faltando hasta que se agregan o actualizan en la base de datos. Puede minimizar esto al implementar una [carga diferida](#Strategies.LazyLoading) con escritura indirecta.
+ Pérdida de caché.

  La mayoría de los datos nunca se leen, lo cual es un desperdicio de recursos. Al [agregar un valor de periodo de vida (TTL)](#Strategies.WithTTL), puede minimizar el desperdicio de espacio.

### Ejemplo de seudocódigo de escritura indirecta
<a name="Strategies.WriteThrough.CodeExample"></a>

El siguiente ejemplo es un seudocódigo de lógica de escritura indirecta.

```
// *****************************************
// function that saves a customer's record.
// *****************************************
save_customer(customer_id, values)

    customer_record = db.query("UPDATE Customers WHERE id = {0}", customer_id, values)
    cache.set(customer_id, customer_record)
    return success
```

Para este ejemplo, el código de aplicación que obtiene los datos es el siguiente.

```
save_customer(12345,{"address":"123 Main"})
```

## Agregar TTL
<a name="Strategies.WithTTL"></a>

La carga diferida da lugar a que los datos queden obsoletos, pero no falla con nodos vacíos. La escritura diferida mantiene los datos siempre actualizados, pero puede fallar con nodos vacíos y puede llenar la caché con datos superfluos. Al agregar un valor de periodo de vida (TTL) a cada escritura, puede tener las ventajas de cada estrategia. Al mismo tiempo, puede evitar en gran medida saturar la memoria caché con datos adicionales.

El *periodo de vida (TTL)* es un valor entero que especifica el número de segundos hasta que caduque la clave. Valkey o Redis OSS puede especificar segundos o milisegundos para este valor. Memcached especifica este valor en segundos. Cuando una aplicación intenta leer una clave vencida, la trata como si no se encontrara la clave. La base de datos se consulta para la clave y se actualiza la caché. Este enfoque no garantiza que un valor no se encuentre obsoleto. Sin embargo, evita que los datos queden demasiado obsoletos y se actualizan los valores de la caché con frecuencia desde la base de datos.

Para obtener más información, consulte [Valkey and Redis OSS commands](https://valkey.io/commands) o los comandos de [Memcached`set`](https://www.tutorialspoint.com/memcached/memcached_set_data.htm).

### Ejemplos de seudocódigo de TTL
<a name="Strategies.WithTTL.CodeExample"></a>

El siguiente ejemplo es un seudocódigo de lógica de escritura indirecta con TTL.

```
// *****************************************
// function that saves a customer's record.
// The TTL value of 300 means that the record expires
//    300 seconds (5 minutes) after the set command 
//    and future reads will have to query the database.
// *****************************************
save_customer(customer_id, values)

    customer_record = db.query("UPDATE Customers WHERE id = {0}", customer_id, values)
    cache.set(customer_id, customer_record, 300)

    return success
```

El siguiente ejemplo es un seudocódigo de lógica de carga diferida con TTL.

```
// *****************************************
// function that returns a customer's record.
// Attempts to retrieve the record from the cache.
// If it is retrieved, the record is returned to the application.
// If the record is not retrieved from the cache, it is 
//    retrieved from the database, 
//    added to the cache, and 
//    returned to the application.
// The TTL value of 300 means that the record expires
//    300 seconds (5 minutes) after the set command 
//    and subsequent reads will have to query the database.
// *****************************************
get_customer(customer_id)

    customer_record = cache.get(customer_id)
    
    if (customer_record != null)
        if (customer_record.TTL < 300)
            return customer_record        // return the record and exit function
            
    // do this only if the record did not exist in the cache OR
    //    the TTL was >= 300, i.e., the record in the cache had expired.
    customer_record = db.query("SELECT * FROM Customers WHERE id = {0}", customer_id)
    cache.set(customer_id, customer_record, 300)  // update the cache
    return customer_record                // return the newly retrieved record and exit function
```

Para este ejemplo, el código de aplicación que obtiene los datos es el siguiente.

```
save_customer(12345,{"address":"123 Main"})
```

```
customer_record = get_customer(12345)
```

## Temas relacionados
<a name="Strategies.SeeAlso"></a>
+ [Almacenamiento de datos en memoria](elasticache-use-cases.md#elasticache-use-cases-data-store)
+ [Elección de un motor y una versión](SelectEngine.md)
+ [Escalado ElastiCache](Scaling.md)

# Administrar su clúster basado en nodos en ElastiCache
<a name="manage-self-designed-cluster"></a>

ElastiCache ofrece dos opciones de implementación: cachés sin servidor y clústeres basados en nodos. Cada una tiene sus propias capacidades y requisitos.

Esta sección contiene temas que lo ayudarán a administrar sus clústeres basados en nodos. 

**nota**  
Estos temas no se aplican a Serverless. ElastiCache 

**Topics**
+ [Clústeres de escalado automático de Valkey y Redis OSS](AutoScaling.md)
+ [Modificación del modo de clúster](modify-cluster-mode.md)
+ [Replicación entre AWS regiones mediante almacenes de datos globales](Redis-Global-Datastore.md)
+ [Alta disponibilidad a través de grupos de reproducción](Replication.md)
+ [Administración del mantenimiento de clústeres de ElastiCache](maintenance-window.md)
+ [Configuración de los parámetros de motor mediante grupos de parámetros de ElastiCache](ParameterGroups.md)

# Clústeres de escalado automático de Valkey y Redis OSS
<a name="AutoScaling"></a>

## Requisitos previos
<a name="AutoScaling-Prerequisites"></a>

ElastiCache Auto Scaling se limita a lo siguiente:
+ Clústeres de Valkey o Redis OSS (modo de clúster habilitado) que ejecutan Valkey 7.2 y versiones posteriores o Redis OSS 6.0 y versiones posteriores
+ Clústeres de organización de datos en niveles (modo de clúster habilitado) que ejecutan Valkey 7.2 y versiones posteriores o Redis OSS 7.0.7 y versiones posteriores 
+ Tamaños de instancia: grande XLarge, 2 XLarge
+ Familias de tipos de instancia: R7g, R6g, R6gd, R5, M7g, M6g, M5, C7gn
+ Auto Scaling in no ElastiCache es compatible con los clústeres que se ejecutan en almacenes de datos globales, Outposts o Zonas Locales.

## Gestión automática de la capacidad con ElastiCache Auto Scaling con Valkey o Redis OSS
<a name="AutoScaling-Managing"></a>

ElastiCache el escalado automático con Valkey o Redis OSS es la capacidad de aumentar o disminuir automáticamente los fragmentos o réplicas deseados en su servicio. ElastiCache ElastiCache aprovecha el servicio Application Auto Scaling para proporcionar esta funcionalidad. Para obtener más información, consulte [Auto Scaling de aplicaciones](https://docs.aws.amazon.com/autoscaling/application/userguide/what-is-application-auto-scaling.html). Para utilizar el escalado automático, debe definir y aplicar una política de escalado que utilice CloudWatch las métricas y los valores objetivo que usted asigne. ElastiCache el escalado automático utiliza la política para aumentar o disminuir la cantidad de instancias en respuesta a las cargas de trabajo reales. 

Puede utilizarla Consola de administración de AWS para aplicar una política de escalado basada en una métrica predefinida. Se define una `predefined metric` en una enumeración, de manera que puede especificarla por el nombre en el código o utilizarla en la Consola de administración de AWS. Las métricas personalizadas no se pueden seleccionar utilizando la Consola de administración de AWS. Como alternativa, puede usar la API Application Auto Scaling AWS CLI o la API para aplicar una política de escalado basada en una métrica predefinida o personalizada. 

ElastiCache para Valkey y Redis, el OSS admite el escalado de las siguientes dimensiones:
+ **Particiones**: agregar/eliminar de forma automática particiones en el clúster de forma similar al cambio de particiones manual en línea. En este caso, el escalado ElastiCache automático activa el escalado en tu nombre.
+ **Réplicas**: se add/remove replicas in the cluster similar to manual Increase/Decrease replica operations. ElastiCache auto scaling for Valkey and Redis OSS adds/removes replica automáticamente de manera uniforme en todos los fragmentos del clúster.

ElastiCache para Valkey y Redis, el OSS admite los siguientes tipos de políticas de escalado automático:
+ [Políticas de escalado de seguimiento de destino](AutoScaling-Scaling-Policies-Target.md)— Aumente o disminuya la cantidad de shards/replicas unidades que ejecuta su servicio en función del valor objetivo para una métrica específica. Se asemeja a los termostatos que se utilizan para mantener la temperatura del hogar. Se selecciona una temperatura y el termostato hace el resto.
+ [Escalado programado para su aplicación.](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-scheduled-scaling.html) — ElastiCache para Valkey y Redis, el escalado automático de OSS puede aumentar o disminuir el número de veces shards/replicas que se ejecuta su servicio en función de la fecha y la hora.

![\[Imagen de autoescalado ElastiCache para Valkey y Redis OSS\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/images/Auto-scaling.png)


Los siguientes pasos resumen el proceso de autoescalado ElastiCache de Valkey y Redis OSS, como se muestra en el diagrama anterior: 

1. Usted crea una política ElastiCache de escalado automático para su grupo de replicación.

1. ElastiCache el escalado automático crea un par de CloudWatch alarmas en tu nombre. Cada par representa los límites superiores e inferiores de las métricas. Estas CloudWatch alarmas se activan cuando la utilización real del clúster se desvía de la utilización objetivo durante un período prolongado. Puede ver las alarmas en la consola.

1. Si el valor de la métrica configurada supera su uso objetivo (o cae por debajo del objetivo) durante un período de tiempo específico, CloudWatch activa una alarma que invoca el escalado automático para evaluar su política de escalado.

1. ElastiCache el escalado automático emite una solicitud de modificación para ajustar la capacidad del clúster. 

1. ElastiCache procesa la solicitud de modificación, aumentando (o disminuyendo) de forma dinámica la Shards/Replicas capacidad del clúster para que se acerque al uso deseado. 

 Para entender cómo funciona ElastiCache Auto Scaling, supongamos que tiene un clúster denominado`UsersCluster`. Al supervisar las CloudWatch métricas`UsersCluster`, se determinan los fragmentos máximos que necesita el clúster cuando el tráfico está en su punto máximo y los fragmentos mínimos cuando el tráfico está en su punto más bajo. También decide un valor objetivo para el uso de la CPU en el `UsersCluster` clúster. ElastiCache el escalado automático utiliza su algoritmo de seguimiento de objetivos para garantizar que las particiones aprovisionadas se ajusten según sea necesario, de `UsersCluster` modo que la utilización se mantenga en el valor objetivo o cerca de él. 

**nota**  
El escalado puede llevar un tiempo considerable y requerir recursos de clúster adicionales para que los fragmentos se reequilibren. ElastiCache Auto Scaling modifica la configuración de los recursos solo cuando la carga de trabajo real permanece elevada (o reducida) durante un período prolongado de varios minutos. El algoritmo de seguimiento de destino del escalado automático intenta mantener el objetivo de utilización en el valor elegido o en valores próximos a él a largo plazo. 

# Políticas de Auto Scaling
<a name="AutoScaling-Policies"></a>

Una directiva de escalado tiene los siguientes componentes:
+ Una métrica de destino: es la métrica de CloudWatch que utiliza el escalado automático de ElastiCache para Valkey y Redis OSS para determinar cuándo escalar y en qué medida. 
+ Capacidad mínima y máxima: el número mínimo y máximo de particiones o réplicas que se utilizarán para el escalado. 
**importante**  
Al crear la política de Auto Scaling, si la capacidad actual es superior a la capacidad máxima configurada, reducimos verticalmente hasta estar en la capacidad máxima durante la creación de la política. Del mismo modo, si la capacidad actual es inferior a la capacidad mínima configurada, escalamos horizontalmente hasta la capacidad mínima. 
+ Un periodo de recuperación: la cantidad de tiempo, en segundos, tras completarse una actividad de reducción o escalado horizontal antes de que pueda comenzar otra actividad de escalado horizontal. 
+ Un rol vinculado a servicios: un rol de AWS Identity and Access Management (IAM) que se encuentra vinculado a un servicio de AWS específico. Un rol vinculado a servicios incluye todos los permisos que requiere el servicio para llamar a otros servicios de AWS en su nombre. El escalado automático de ElastiCache genera este rol, `AWSServiceRoleForApplicationAutoScaling_ElastiCacheRG`, de forma automática en su nombre. 
+ Habilitar o deshabilitar actividades de reducción horizontal: permite habilitar o deshabilitar actividades de reducción horizontal para una política.

**Topics**
+ [Métrica de destino para Auto Scaling](#AutoScaling-TargetMetric)
+ [Capacidad mínima y máxima](#AutoScaling-MinMax)
+ [Periodo de recuperación](#AutoScaling-Cooldown)
+ [Activar o desactivar actividades de escalado descendente](#AutoScaling-enable-disable-scale-in)

## Métrica de destino para Auto Scaling
<a name="AutoScaling-TargetMetric"></a>

En este tipo de política, una métrica predefinida o personalizada y un valor de destino de la métrica se especifica en una configuración de la política de escalado de seguimiento de destino. El escalado automático de ElastiCache para Valkey y Redis OSS crea y administra las alarmas de CloudWatch que desencadenan la política de escalado y calcula el ajuste de escalado en función de la métrica y el valor objetivo. La política de escalado agrega o elimina las particiones/réplicas en función de las necesidades para mantener la métrica en el valor objetivo especificado o en un valor próximo. Además de mantener la métrica próxima al valor de destino, la política de escalado de seguimiento de destino también se ajusta a las fluctuaciones de la métrica producidas por una carga de trabajo en constante cambio. Esta política también minimiza las fluctuaciones rápidas del número de particiones/réplicas disponibles de su clúster. 

Por ejemplo, considere una política de escalado que utilice la métrica `ElastiCachePrimaryEngineCPUUtilization` media predefinida. Esta política puede mantener la utilización de la CPU en el porcentaje de utilización especificado o en un valor próximo, como el 70 %. 

**nota**  
Para cada clúster, puede crear solo una política de Auto Scaling para cada métrica de destino. 

## Capacidad mínima y máxima
<a name="AutoScaling-MinMax"></a>

**Particiones**

Puede especificar el número máximo de particiones que se puede escalar mediante el escalado automático de ElastiCache para Valkey y Redis OSS. Este valor debe ser igual o inferior a 250 con un mínimo de 1. También puede especificar el número mínimo de particiones que va a administrar por medio del escalado automático. Este valor debe ser al menos 1, e igual o inferior al valor especificado para el máximo de 250 particiones. 

**Réplicas**

Puede especificar el número máximo de réplicas que va a administrar por medio del escalado automático de ElastiCache para Valkey y Redis OSS. Este valor debe ser igual o inferior a 5. También puede especificar el número mínimo de réplicas que va a administrar mediante el escalado automático. Este valor debe ser al menos 1, e igual o inferior al valor especificado para el máximo de 5 réplicas.

A fin de determinar el número mínimo y máximo de particiones/réplicas que necesite para el tráfico normal, pruebe la configuración de Auto Scaling con la tasa de tráfico esperada para su modelo. 

**nota**  
Las políticas de escalado automático de ElastiCache aumentan la capacidad del clúster hasta que alcanza el tamaño máximo definido o hasta que se apliquen los límites de servicio. Para solicitar un aumento del límite, consulte [AWS Service Limits](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) y elija el tipo de límite **Nodes per cluster per instance type** (Nodos por clúster por tipo de instancias). 

**importante**  
La reducción horizontal sucede cuando no hay tráfico. Si el tráfico de una variante es cero, ElastiCache reduce horizontalmente de forma automática al número mínimo de instancias especificadas.

## Periodo de recuperación
<a name="AutoScaling-Cooldown"></a>

Puede ajustar la capacidad de respuesta de una política de escalado de seguimiento de destino al agregar periodos de recuperación que afecten al escalado de su clúster. Un periodo de recuperación bloquea solicitudes de escalado descendente o ascendente posteriores hasta que vence el periodo. Esto ralentiza las eliminaciones de particiones o réplicas del clúster de ElastiCache para Valkey y Redis OSS para solicitudes de reducción horizontal y la creación de particiones o réplicas para solicitudes de escalado horizontal. Puede especificar los siguientes periodos de recuperación:
+ Una actividad de reducción horizontal reduce el número de particiones/réplicas del clúster. Un periodo de recuperación de escalado descendente especifica la cantidad de tiempo, en segundos, tras completarse una actividad de escalado descendente antes de que pueda comenzar otra actividad de escalado descendente.
+ Una actividad de escalado horizontal incrementa el número de particiones/réplicas del clúster. Un periodo de recuperación de escalado ascendente especifica la cantidad de tiempo, en segundos, tras completarse una actividad de escalado ascendente antes de que pueda comenzar otra actividad de escalado ascendente. 

Si no se especifica un periodo de recuperación de reducción o escalado horizontal, el valor predeterminado del escalado horizontal es de 600 segundos y de la reducción horizontal es de 900 segundos. 

## Activar o desactivar actividades de escalado descendente
<a name="AutoScaling-enable-disable-scale-in"></a>

Puede habilitar o deshabilitar actividades de escalado descendente para una política. La habilitación de actividades de reducción horizontal permite a la política de escalado eliminar particiones/réplicas. Al habilitarse actividades de escalado descendente, el periodo de recuperación de escalado descendente de la política de escalado se aplica a las actividades de escalado descendente. La deshabilitación de actividades de reducción horizontal impide a la política de escalado eliminar particiones/réplicas. 

**nota**  
Las actividades de escalado horizontal siempre se habilitan de modo que la política de escalado pueda crear particiones o réplicas de ElastiCache según sea necesario.

## Permisos de IAM requeridos para el escalado automático
<a name="AutoScaling-IAM-permissions"></a>

ElastiCache para Valkey y Redis OSS Auto Scaling es posible gracias a una combinación de ElastiCache CloudWatch, y Application Auto Scaling. APIs Los clústeres se crean y actualizan con ElastiCache, las alarmas se crean con CloudWatch y las políticas de escalado se crean con Application Auto Scaling. Además de los permisos de IAM estándar para crear y actualizar clústeres, el usuario de IAM que accede a la configuración de ElastiCache Auto Scaling debe tener los permisos adecuados para los servicios que admiten el escalado dinámico. En esta política más reciente, hemos añadido compatibilidad con el escalado vertical de Memcached con la acción `elasticache:ModifyCacheCluster`. Los usuarios de IAM deben contar con los permisos necesarios para utilizar las acciones que se muestran en la siguiente política de ejemplo: 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "application-autoscaling:*",
                "elasticache:DescribeReplicationGroups",
                "elasticache:ModifyReplicationGroupShardConfiguration",
                "elasticache:IncreaseReplicaCount",
                "elasticache:DecreaseReplicaCount",
                "elasticache:DescribeCacheClusters",
                "elasticache:DescribeCacheParameters",
                "cloudwatch:DeleteAlarms",
                "cloudwatch:DescribeAlarmHistory",
                "cloudwatch:DescribeAlarms",
                "cloudwatch:DescribeAlarmsForMetric",
                "cloudwatch:GetMetricStatistics",
                "cloudwatch:ListMetrics",
                "cloudwatch:PutMetricAlarm",
                "cloudwatch:DisableAlarmActions",
                "cloudwatch:EnableAlarmActions",
                "iam:CreateServiceLinkedRole",
                "sns:CreateTopic",
                "sns:Subscribe",
                "sns:Get*",
                "sns:List*"
            ],
            "Resource": "arn:aws:iam::123456789012:role/autoscaling-roles-for-cluster"
        }
    ]
}
```

------

## Rol vinculado a servicios
<a name="AutoScaling-SLR"></a>

El servicio de escalado automático OSS ElastiCache para Valkey y Redis también necesita permiso para describir sus clústeres y CloudWatch alarmas, y permisos para modificar su capacidad ElastiCache objetivo en su nombre. Si habilita el escalado automático para su clúster, crea un rol vinculado a servicios denominado `AWSServiceRoleForApplicationAutoScaling_ElastiCacheRG`. Esta función vinculada al servicio otorga permiso de escalado ElastiCache automático para describir las alarmas de sus políticas, monitorear la capacidad actual de la flota y modificar la capacidad de la flota. La función vinculada al servicio es la función predeterminada para el escalado ElastiCache automático. Para obtener más información, consulte [Funciones vinculadas a servicios ElastiCache para el autoescalado de Redis OSS en la Guía](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-service-linked-roles.html) del usuario de Application Auto Scaling.

## Prácticas recomendadas de Auto Scaling
<a name="AutoScaling-best-practices"></a>

Antes de registrarse en Auto Scaling, recomendamos lo siguiente:

1. **Utilizar solo una métrica de seguimiento**: identifique si el clúster tiene CPU o cargas de trabajo intensivas de datos y utilice una métrica predefinida correspondiente para definir la política de escalado. 
   + CPU del motor: `ElastiCachePrimaryEngineCPUUtilization` (dimensión de partición) o `ElastiCacheReplicaEngineCPUUtilization` (dimensión de réplica)
   + Uso de bases de datos: `ElastiCacheDatabaseCapacityUsageCountedForEvictPercentage` Esta política de escalado funciona mejor si la política maxmemory está configurada como noeviction en el clúster.

   Le recomendamos que evite tener varias políticas por dimensión en el clúster. ElastiCache en el caso de Valkey y Redis OSS, el escalado automático ampliará el objetivo escalable si alguna política de seguimiento de objetivos está lista para ampliarla, pero solo se ampliará si todas las políticas de seguimiento de objetivos (con la parte de escalamiento interno habilitada) están preparadas para ampliarse. Si varias políticas indican al destino escalable que se realice una reducción o escalado horizontal al mismo tiempo, se escala en función de la política que proporciona la mayor capacidad para la reducción o el escalado horizontal.

1. **Métricas personalizadas para el seguimiento de destinos**: tenga cuidado al utilizar métricas personalizadas para el seguimiento de destinos, ya que el escalado automático es la característica más adecuada para el escalado horizontal en proporción a los cambios en las métricas elegidas para la política. Si esas métricas no cambian proporcionalmente a las acciones de escalado usadas para la creación de políticas, es posible que den lugar a acciones continuas de escalar horizontalmente o reducir horizontalmente que es posible que afecten a la disponibilidad o el costo. 

    En el caso de los clústeres de datos por niveles (tipos de instancias de la familia r6gd), evite utilizar métricas basadas en memoria para escalar.

1. **Escalamiento programado**: si detecta que su carga de trabajo es determinista (se extiende high/low en un momento específico), le recomendamos que utilice el escalado programado y configure la capacidad objetivo según las necesidades. El seguimiento de destino es el más adecuado para las cargas de trabajo no determinista y para que el clúster funcione con la métrica de destino requerida al escalar horizontalmente cuando necesite más recursos y reducir horizontalmente cuando necesite menos. 

1. **Desactivar el escalado interno: el escalado automático en** Target Tracking es más adecuado para clústeres con cargas increase/decrease de trabajo graduales, ya spikes/dip que las métricas pueden provocar oscilaciones consecutivas de escalado amplio/entrada. Para evitar tales oscilaciones, puede comenzar con la reducción horizontal deshabilitada y luego siempre puede reducir horizontalmente de forma manual según sus necesidades. 

1. **Pruebe su aplicación**: le recomendamos que pruebe su aplicación con sus Min/Max cargas de trabajo estimadas para determinar el mínimo y el máximo absolutos shards/replicas necesarios para el clúster y, al mismo tiempo, cree políticas de escalado para evitar problemas de disponibilidad. Auto Scaling puede escalar horizontalmente hasta el máximo y reducir horizontalmente en el umbral mínimo configurado para el destino.

1. **Definición del valor objetivo**: puede analizar CloudWatch las métricas correspondientes a la utilización del clúster durante un período de cuatro semanas para determinar el umbral del valor objetivo. Si aún no se encuentra seguro de qué valor elegir, se recomienda comenzar con el valor mínimo admitido de métrica predefinida.

1. AutoScaling on Target Tracking es ideal para clústeres con una distribución uniforme de las cargas de trabajo en todas shards/replicas las dimensiones. Tener una distribución no uniforme puede conducir a:
   + Se puede escalar cuando no es necesario debido a la carga de trabajo spike/dip en unos pocos fragmentos o réplicas activos.
   + Falta de escalado cuando sí es necesario debido a que la carga de trabajo media general se encuentra próxima al objetivo aunque tenga particiones o réplicas en el almacenamiento activo.

**nota**  
Al ampliar el clúster, ElastiCache replicará automáticamente las funciones cargadas en uno de los nodos existentes (seleccionadas al azar) en los nuevos nodos. Si el clúster tiene Valkey o Redis 7.0 o una versión posterior y la aplicación usa [funciones](https://valkey.io/topics/functions-intro/), le recomendamos que cargue todas las funciones en todas las particiones antes de escalar horizontalmente para que el clúster no termine con diferentes funciones en distintas particiones.

Tras registrarte AutoScaling, ten en cuenta lo siguiente:
+ Existen limitaciones en las configuraciones compatibles con Auto Scaling, por lo que recomendamos no cambiar la configuración de un grupo de reproducción que se haya registrado para Auto Scaling. A continuación se muestran algunos ejemplos:
  + Modificación manual del tipo de instancias a tipos no admitidos.
  + Asociación del grupo de reproducción a un almacén de datos global.
  + Cambio del parámetro `ReservedMemoryPercent`.
  +  increasing/decreasing shards/replicas beyond the Min/MaxLa capacidad se configuró manualmente durante la creación de la política.

# Uso de Auto Scaling con particiones
<a name="AutoScaling-Using-Shards"></a>

Con el escalado automático de ElastiCache, puede utilizar políticas de seguimiento y programadas con su motor de Valkey o Redis OSS. 

A continuación se proporcionan detalles sobre el seguimiento de destinos y las políticas programadas, así como sobre cómo aplicarlas mediante la Consola de administración de AWS, la AWS CLI y API.

**Topics**
+ [Políticas de escalado de seguimiento de destino](AutoScaling-Scaling-Policies-Target.md)
+ [Adición de una política de escalado](AutoScaling-Scaling-Adding-Policy-Shards.md)
+ [Registro de un destino escalable](AutoScaling-Scaling-Registering-Policy-CLI.md)
+ [Definición de una política de escalado](AutoScaling-Scaling-Defining-Policy-API.md)
+ [Desactivación de actividad de escalado descendente](AutoScaling-Scaling-Disabling-Scale-in.md)
+ [Aplicación de una política de escalado](AutoScaling-Scaling-Applying-a-Scaling-Policy.md)
+ [Edición de una política de escalado](AutoScaling-Scaling-Editing-a-Scaling-Policy.md)
+ [Eliminación de una política de escalado](AutoScaling-Scaling-Deleting-a-Scaling-Policy.md)
+ [Uso de CloudFormation para las políticas de Auto Scaling](AutoScaling-with-Cloudformation-Shards.md)
+ [Escalado programado](AutoScaling-with-Scheduled-Scaling-Shards.md)

# Políticas de escalado de seguimiento de destino
<a name="AutoScaling-Scaling-Policies-Target"></a>

Las políticas de escalado de seguimiento de destino le permiten seleccionar una métrica y establecer un valor de destino. El escalado automático de ElastiCache para Valkey y Redis OSS crea y administra las alarmas de CloudWatch que desencadenan la política de escalado y calcula el ajuste de escalado en función de la métrica y el valor de destino. La política de escalado agrega o elimina las particiones en función de las necesidades para mantener la métrica en el valor objetivo especificado o en un valor próximo. Además de mantener la métrica próxima al valor de destino, la política de escalado de seguimiento de destino también se ajusta a las fluctuaciones de la métrica producidas por patrones de carga fluctuante y minimiza las fluctuaciones rápidas de la capacidad de la flota. 

Por ejemplo, considere una política de escalado que utilice la métrica `ElastiCachePrimaryEngineCPUUtilization` media predefinida con el valor objetivo configurado. Esta política puede mantener la utilización de la CPU en el valor objetivo especificado o en un valor próximo.

## Métricas predefinidas
<a name="AutoScaling-Scaling-Criteria-predfined-metrics"></a>

Una métrica predefinida es una estructura que hace referencia a un nombre, una dimensión y una estadística (`average`) específicos de una métrica de CloudWatch determinada. La política de escalado automático define una de las siguientes métricas predefinidas para el clúster:


****  

| Nombre de métrica predefinido | Nombre de métrica de CloudWatch | Dimensión de métricas de CloudWatch | Tipos de instancia no aptos  | 
| --- | --- | --- | --- | 
| ElastiCachePrimaryEngineCPUUtilization |  `EngineCPUUtilization`  |  ReplicationGroupId, Role = Principal  | Ninguno | 
| ElastiCacheDatabaseCapacityUsageCountedForEvictPercentage |  `DatabaseCapacityUsageCountedForEvictPercentage`  |  Métricas de grupo de replicación de Valkey o Redis OSS  | Ninguno | 
| ElastiCacheDatabaseMemoryUsageCountedForEvictPercentage |  `DatabaseMemoryUsageCountedForEvictPercentage`  |  Métricas de grupo de replicación de Valkey o Redis OSS  | R6gd | 

Los tipos de instancias con niveles de datos no pueden utilizar `ElastiCacheDatabaseMemoryUsageCountedForEvictPercentage`, ya que estos tipos de instancias almacenan datos en la memoria y SSD. El caso de uso esperado para las instancias con niveles de datos es tener un uso de memoria del 100 por ciento y llenar el SSD según sea necesario.

## Criterios de Auto Scaling para particiones
<a name="AutoScaling-Scaling-Criteria"></a>

Cuando el servicio detecta que la métrica predefinida es igual o mayor que la configuración del objetivo, aumentará la capacidad de las particiones de forma automática. ElastiCache para Valkey y Redis OSS escala horizontalmente las particiones del clúster en una cantidad equivalente al mayor de dos números: la variación del porcentaje del objetivo y el 20 % de las particiones actuales. En el caso de la reducción horizontal, ElastiCache no se reduce horizontalmente de forma automática a menos que el valor total de la métrica sea inferior al 75 % del objetivo definido. 

Para un ejemplo de escalado horizontal, si tiene 50 particiones y
+ si su objetivo sufre una interrupción del 30 %, ElastiCache escala horizontalmente un 30 %, lo que da como resultado 65 particiones por clúster. 
+ si su objetivo sufre una interrupción del 10 %, ElastiCache escala horizontalmente de forma predeterminada un mínimo de 20 %, lo que da como resultado 60 particiones por clúster. 

Para un ejemplo de reducción horizontal, si ha seleccionado un valor objetivo del 60 %, ElastiCache no se reducirá horizontalmente de forma automática hasta que la métrica sea inferior o igual al 45 % (25 % por debajo del objetivo de 60 %).

## Consideraciones de Auto Scaling
<a name="AutoScaling-Scaling-Considerations"></a>

Tenga en cuenta las siguientes consideraciones:
+ En las políticas de escalado de seguimiento de destino, se presupone que el escalado ascendente se lleva a cabo cuando la métrica está por encima del valor de destino. No puede utilizar una política de escalado de seguimiento de destinos si la métrica especificada está por debajo del valor de destino. ElastiCache para Valkey y Redis OSS escala horizontalmente las particiones con una desviación mínima del 20 % del objetivo de las particiones existentes en el clúster.
+ Las políticas de escalado de seguimiento de destino no realizan el escalado cuando la métrica especificada no tiene datos suficientes. No realiza la reducción horizontalmente porque la carencia de datos no se interpreta como una infrautilización de recursos. 
+ Es posible que haya diferencias entre el valor de destino y los puntos de datos de la métrica real. Esto se debe a que el escalado automático de ElastiCache siempre actúa de forma conservadora y redondea hacia arriba o hacia abajo a la hora de determinar la cantidad de capacidad que se debe añadir o quitar. Con esto se evita que se agrega capacidad insuficiente o se elimine demasiada capacidad. 
+ Para garantizar la disponibilidad de la aplicación, el servicio se escala horizontalmente en proporción a la métrica tan rápido como puede, pero se reduce horizontalmente de forma más gradual. 
+ Puede tener varias políticas de escalado de seguimiento de destino en un clúster de ElastiCache para Valkey y Redis OSS, siempre que cada uno de ellos utilice una métrica diferente. El objetivo del escalado automático de ElastiCache siempre es dar prioridad a la disponibilidad, por lo que su comportamiento varía en función de si las políticas de seguimiento del objetivo están listas para el escalado o la reducción horizontales. Realizará un escalado horizontal del servicio si cualquiera de las políticas de seguimiento de destino está lista para el escalado horizontal, pero solo realizará la reducción horizontal si todas las políticas de seguimiento de destino (que tienen la parte de reducción horizontal habilitada) están listas para la reducción horizontal. 
+ No modifique ni elimine las alarmas de CloudWatch que administra el escalado automático de ElastiCache para las políticas de escalado de seguimiento de destino. El escalado automático de ElastiCache elimina de forma automática las alarmas cuando se elimina la política de escalado. 
+ El escalado automático de ElastiCache no le impide modificar de forma manual las particiones del clúster. Estos ajustes manuales no afectan a las alarmas de CloudWatch existentes adjuntas a la política de escalado, pero pueden afectar a las métricas que pueden activar estas alarmas de CloudWatch. 
+ Estas alarmas de CloudWatch administradas por Auto Scaling se definen a través de la métrica AVG (Promedio) en todas las particiones del clúster. Por lo tanto, tener particiones activas puede resultar en cualquiera de los siguientes escenarios:
  + escalado cuando no es necesario debido a la carga en algunas particiones activas que desencadenan una alarma de CloudWatch
  + no escalar cuando sí sea necesario debido a un AVG (Promedio) agregado en todas las particiones que causa que la alarma se interrumpa. 
+ Siguen aplicándose los límites predeterminados de ElastiCache en nodos por clúster. Por lo tanto, al optar por Auto Scaling y, si espera que los nodos máximos sean superiores al límite predeterminado, solicite un aumento del límite en [AWS Service Limits](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) y elija el tipo de límite **Nodes per cluster per instance type** (Nodos por clúster por tipo de instancias). 
+ Asegúrese de tener suficientes ENI (interfaces de red elásticas) disponibles en su VPC, que son necesarias durante el escalado horizontal. Para obtener más información, consulte [Interfaces de red elástica](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_ElasticNetworkInterfaces.html).
+ Si no hay suficiente capacidad disponible desde EC2, el escalado automático de ElastiCache no se escala en forma horizontal y se retrasa hasta que haya capacidad.
+ El escalado automático de ElastiCache para Redis OSS durante la reducción horizontal no eliminará las particiones con ranuras que tengan un tamaño de elemento superior a 256 MB después de la serialización.
+ Durante la reducción horizontal, no se eliminarán particiones si no se encuentra disponible la memoria suficiente en la configuración de particiones resultante.

# Adición de una política de escalado
<a name="AutoScaling-Scaling-Adding-Policy-Shards"></a>

Puede agregar una política de escalado mediante la Consola de administración de AWS. 

**Cómo añadir una política de escalado automático a un clúster de ElastiCache para Valkey y Redis OSS**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon ElastiCache en [https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. En el panel de navegación, elija **Valkey** o **Redis OSS**. 

1. Elija el clúster al que desea agregar una política (elija el nombre del clúster y no el botón a su izquierda). 

1. Elija la pestaña de **Auto Scaling policies** (Políticas de Auto Scaling). 

1. Elija **add dynamic scaling** (agregar escalado dinámico). 

1. En **Policy name** (Nombre de política), ingrese un nombre de política. 

1. En **Scalable Dimension** (Dimensión escalable), elija **shards** (particiones). 

1. Para la métrica de destino, elija una de las siguientes opciones:
   + **Primary CPU Utilization** (Utilización de CPU principal) para crear una política basada en la utilización promedio de la CPU. 
   + **Memory** (Memoria) para crear una política basada en la memoria media de base de datos. 
   + **Capacidad** para crear una política basada en el uso promedio de la capacidad de la base de datos. La métrica de capacidad incluye la utilización de memoria y SSD para las instancias con niveles de datos y la utilización de la memoria para todos los demás tipos de instancias.

1. Para el valor objetivo, elija un valor mayor o igual a 35 y menor o igual a 70. El escalado automático mantendrá este valor para la métrica de destino seleccionada en las particiones de ElastiCache: 
   + **Utilización de la CPU principal**: mantiene el valor objetivo de la  métrica `EngineCPUUtilization` en los nodos principales. 
   + **Memoria**: mantiene el valor objetivo de la métrica `DatabaseMemoryUsageCountedForEvictPercentage` 
   + La **capacidad** mantiene el valor objetivo de la métrica `DatabaseCapacityUsageCountedForEvictPercentage`,

   Las particiones de clúster se agregan o quitan para mantener la métrica en un valor próximo al especificado. 

1. (Opcional) La consola no admite periodos de recuperación de reducción o escalado horizontal. Utilice la AWS CLI para modificar los valores de periodo de recuperación. 

1. En **Capacidad mínima**, escriba el número mínimo de particiones que debe mantener la política de escalado automático de ElastiCache. 

1. En **Capacidad máxima**, escriba el número máximo de particiones que debe mantener la política de escalado automático de ElastiCache. Este valor debe ser igual o inferior a 250.

1. Seleccione **Crear**.

# Registro de un destino escalable
<a name="AutoScaling-Scaling-Registering-Policy-CLI"></a>

Para poder utilizar el escalado automático con un clúster de ElastiCache para Valkey y Redis OSS, debe registrar su clúster en el escalado automático de ElastiCache. Esto se hace para definir la dimensión y los límites de escalado que se van a aplicar a ese clúster. El escalado automático de ElastiCache escala de forma dinámica el clúster a lo largo de la dimensión escalable `elasticache:replication-group:NodeGroups`, que representa el número de particiones del clúster. 

 **Uso de AWS CLI** 

Para registrar el clúster de ElastiCache para Valkey y Redis OSS, utilice el comando [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) con los siguientes parámetros: 
+ `--service-namespace` – establezca este valor en `elasticache`
+ `--resource-id`: el identificador de recurso para el clúster. Para este parámetro, el tipo de recurso es `ReplicationGroup` y el identificador único es el nombre del clúster; por ejemplo, `replication-group/myscalablecluster`. 
+ `--scalable-dimension` – establezca este valor en `elasticache:replication-group:NodeGroups`. 
+ `--max-capacity `: el número máximo de particiones que administrará el escalado automático de ElastiCache. Para obtener información sobre la relación entre `--min-capacity`, `--max-capacity` y el número de particiones del clúster, consulte [Capacidad mínima y máxima](AutoScaling-Policies.md#AutoScaling-MinMax). 
+ `--min-capacity `: el número mínimo de particiones que administrará el escalado automático de ElastiCache. Para obtener información sobre la relación entre `--min-capacity`, `--max-capacity` y el número de particiones del clúster, consulte [Capacidad mínima y máxima](AutoScaling-Policies.md#AutoScaling-MinMax). 

**Example**  
 En el siguiente ejemplo, registra un clúster de ElastiCache denominado `myscalablecluster`. El registro indica que el clúster debe escalarse de forma dinámica para tener de una a diez particiones.   
Para Linux, macOS o Unix:  

```
aws application-autoscaling register-scalable-target \
    --service-namespace elasticache \
    --resource-id replication-group/myscalablecluster \
    --scalable-dimension elasticache:replication-group:NodeGroups \
    --min-capacity 1 \
    --max-capacity 10 \
```
Para Windows:  

```
aws application-autoscaling register-scalable-target ^
    --service-namespace elasticache ^
    --resource-id replication-group/myscalablecluster ^
    --scalable-dimension elasticache:replication-group:NodeGroups ^
    --min-capacity 1 ^
    --max-capacity 10 ^
```

**Uso de la API**

Para registrar el clúster de ElastiCache, utilice el comando [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) con los siguientes parámetros: 
+ ServiceNamespace: establezca este valor en elasticache. 
+ ResourceID: el identificador de recurso para el clúster de ElastiCache. Para este parámetro, el tipo de recurso es ReplicationGroup y el identificador único es el nombre del clúster; por ejemplo, `replication-group/myscalablecluster`. 
+ ScalableDimension: establezca este valor en `elasticache:replication-group:NodeGroups`. 
+ MinCapacity: el número mínimo de particiones que administrará el escalado automático de ElastiCache. Para obtener información sobre la relación entre --min-capacity, --max-capacity y el número de réplicas del clúster, consulte [Capacidad mínima y máxima](AutoScaling-Policies.md#AutoScaling-MinMax).
+ MaxCapacity: el número máximo de particiones que administrará el escalado automático de ElastiCache. Para obtener información sobre la relación entre --min-capacity, --max-capacity y el número de réplicas del clúster, consulte [Capacidad mínima y máxima](AutoScaling-Policies.md#AutoScaling-MinMax).

**Example**  
En el siguiente ejemplo, se registra un clúster de ElastiCache denominado `myscalablecluster` con la API de Escalado automático de aplicaciones. Este registro indica que el clúster debe escalarse de forma dinámica para tener de una a cinco réplicas.   

```
POST / HTTP/1.1
Host: autoscaling.us-east-2.amazonaws.com
Accept-Encoding: identity
Content-Length: 219
X-Amz-Target: AnyScaleFrontendService.RegisterScalableTarget
X-Amz-Date: 20160506T182145Z
User-Agent: aws-cli/1.10.23 Python/2.7.11 Darwin/15.4.0 botocore/1.4.8
Content-Type: application/x-amz-json-1.1
Authorization: AUTHPARAMS
{
    "ServiceNamespace": "elasticache",
    "ResourceId": "replication-group/myscalablecluster",
    "ScalableDimension": "elasticache:replication-group:NodeGroups",
    "MinCapacity": 1,
    "MaxCapacity": 5
}
```

# Definición de una política de escalado
<a name="AutoScaling-Scaling-Defining-Policy-API"></a>

Una configuración de la política de escalado de seguimiento de destino está representada por un bloque JSON en el que se definen las métricas y los valores de destino. Puede guardar una configuración de la política de escalado como bloque JSON en un archivo de texto. Puede utilizar ese archivo de texto al invocar AWS CLI o la API de Auto Scaling de aplicaciones. Para obtener más información sobre la sintaxis de configuración de políticas, consulte [TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html) en la Referencia de la API de Auto Scaling de aplicaciones. 

Las siguientes opciones se encuentran disponibles para definir una configuración de la política de escalado de seguimiento de destino: 

**Topics**
+ [Uso de una métrica predefinida](#AutoScaling-Scaling-Predefined-Metric)
+ [Uso de una métrica personalizada](#AutoScaling-Scaling-Custom-Metric)
+ [Uso de periodos de recuperación](#AutoScaling-Scaling-Cooldown-periods)

## Uso de una métrica predefinida
<a name="AutoScaling-Scaling-Predefined-Metric"></a>

Mediante las métricas predefinidas, puede definir rápidamente una política de escalado de seguimiento de destino para un clúster de ElastiCache para Valkey y Redis OSS que funciona con el seguimiento de destino en el escalado automático de ElastiCache. 

Actualmente, ElastiCache admite las siguientes métricas predefinidas en el escalado automático de NodeGroup: 
+ **ElastiCachePrimaryEngineCPUUtilization**: el valor medio de la métrica `EngineCPUUtilization` en CloudWatch en todos los nodos principales del clúster.
+ **ElastiCacheDatabaseMemoryUsageCountedForEvictPercentage**: el valor medio de la métrica `DatabaseMemoryUsageCountedForEvictPercentage` en CloudWatch en todos los nodos principales del clúster.
+ **ElastiCacheDatabaseCapacityUsageCountedForEvictPercentage**: el valor medio de la métrica `ElastiCacheDatabaseCapacityUsageCountedForEvictPercentage` en CloudWatch en todos los nodos principales del clúster.

Para obtener más información sobre las métricas de `EngineCPUUtilization`, `DatabaseMemoryUsageCountedForEvictPercentage` y `DatabaseCapacityUsageCountedForEvictPercentage`, consulte [Supervisión del uso con CloudWatch métricas](CacheMetrics.md). Para usar una métrica predefinida en su política de escalado, puede crear una configuración de seguimiento de destino para su política de escalado. Esta configuración debe incluir `PredefinedMetricSpecification` para la métrica predefinida y un TargetValue para el valor de destino de esa métrica. 

**Example**  
En el siguiente ejemplo, se describe una configuración de la política típica para el escalado de seguimiento de destino de un clúster de ElastiCache para Valkey y Redis OSS. En esta configuración, la métrica predefinida `ElastiCachePrimaryEngineCPUUtilization` se utiliza para ajustar el clúster en función de la utilización promedio de la CPU del 40 % en todos los nodos principales del clúster.   

```
{
    "TargetValue": 40.0,
    "PredefinedMetricSpecification":
    {
        "PredefinedMetricType": "ElastiCachePrimaryEngineCPUUtilization"
    }
}
```

## Uso de una métrica personalizada
<a name="AutoScaling-Scaling-Custom-Metric"></a>

 Mediante las métricas personalizadas, puede definir una política de escalado de seguimiento de destino que cumpla sus requisitos personalizados. Puede definir una métrica personalizada en función de cualquier métrica de ElastiCache que cambie en proporción al escalado. No todas las métricas de ElastiCache funcionan para el seguimiento de destino. La métrica debe ser una métrica de utilización válida y describir el nivel de actividad de una instancia. El valor de la métrica debe aumentar o reducirse en proporción al número de particiones del clúster. Este aumento o reducción proporcionales son necesarios para utilizar los datos de las métricas a fin de reducir o escalar horizontalmente de forma proporcional el número de particiones. 

**Example**  
En el siguiente ejemplo se describe una configuración de seguimiento de destino para una política de escalado. En esta configuración, una métrica personalizada ajusta un clúster de ElastiCache para Redis OSS en función de una utilización promedio de la CPU del 50 % en todas las particiones de un clúster denominado `my-db-cluster`. 

```
{
    "TargetValue": 50,
    "CustomizedMetricSpecification":
    {
        "MetricName": "EngineCPUUtilization",
        "Namespace": "AWS/ElastiCache",
        "Dimensions": [
            {
                "Name": "ReplicationGroup","Value": "my-db-cluster"
            },
            {
                "Name": "Role","Value": "PRIMARY"
            }
        ],
        "Statistic": "Average",
        "Unit": "Percent"
    }
}
```

## Uso de periodos de recuperación
<a name="AutoScaling-Scaling-Cooldown-periods"></a>

Puede especificar un valor, en segundos, a fin de que `ScaleOutCooldown` agregue un periodo de recuperación para el escalado horizontal de su clúster. De forma similar, puede agregar un valor, en segundos, a fin de que `ScaleInCooldown` agregue un periodo de recuperación para el escalado vertical de su clúster. Para obtener más información, consulte [TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html) en la Referencia de la API de Auto Scaling de aplicaciones. 

 En el siguiente ejemplo se describe una configuración de seguimiento de destino para una política de escalado. En esta configuración, la métrica predefinida `ElastiCachePrimaryEngineCPUUtilization` se utiliza para ajustar un clúster de ElastiCache para Redis OSS en función de la utilización promedio de la CPU del 40 % en todos los nodos principales de ese clúster. La configuración proporciona un periodo de recuperación de escalado descendente de 10 minutos y un periodo de recuperación de escalado ascendente de 5 minutos. 

```
{
    "TargetValue": 40.0,
    "PredefinedMetricSpecification":
    {
        "PredefinedMetricType": "ElastiCachePrimaryEngineCPUUtilization"
    },
    "ScaleInCooldown": 600,
    "ScaleOutCooldown": 300
}
```

# Desactivación de actividad de escalado descendente
<a name="AutoScaling-Scaling-Disabling-Scale-in"></a>

Puede evitar que la configuración de la política de escalado de seguimiento de destino reduzca horizontalmente su clúster deshabilitando la actividad de reducción horizontal. La deshabilitación de la actividad de escalado horizontal evita que la política de escalado elimine particiones, a la vez que permite a la política de escalado crearlas según sea necesario. 

Puede especificar un valor booleano a fin de que `DisableScaleIn` habilite o deshabilite la actividad de reducción horizontal para su clúster. Para obtener más información, consulte [TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html) en la Referencia de la API de Auto Scaling de aplicaciones. 

En el siguiente ejemplo se describe una configuración de seguimiento de destino para una política de escalado. En esta configuración, la métrica predefinida `ElastiCachePrimaryEngineCPUUtilization` ajusta un clúster de ElastiCache para Valkey y Redis OSS en función de la utilización promedio de la CPU del 40 % en todos los nodos principales de ese clúster. La configuración deshabilita la actividad de escalado descendente para la política de escalado. 

```
{
    "TargetValue": 40.0,
    "PredefinedMetricSpecification":
    {
        "PredefinedMetricType": "ElastiCachePrimaryEngineCPUUtilization"
    },
    "DisableScaleIn": true
}
```

# Aplicación de una política de escalado
<a name="AutoScaling-Scaling-Applying-a-Scaling-Policy"></a>

Tras registrar su clúster con escalado automático de ElastiCache para Valkey y Redis OSS y definir una política de escalado, puede aplicarla al clúster registrado. Para aplicar una política de escalado a un clúster de ElastiCache para Redis OSS, puede utilizar la AWS CLI o la API de Escalado automático de aplicaciones. 

## Aplicación de una política de escalado mediante la AWS CLI
<a name="AutoScaling-Scaling-Applying-a-Scaling-Policy-CLI"></a>

Para aplicar una política de escalado a un clúster de ElastiCache para Valkey y Redis OSS, utilice el comando [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) con los siguientes parámetros: 
+ **--policy-name**: el nombre de la política de escalado. 
+ **--policy-type**: establezca este valor en `TargetTrackingScaling`. 
+ **--resource-id**: el identificador del recurso. Para este parámetro, el tipo de recurso es `ReplicationGroup` y el identificador único es el nombre del clúster; por ejemplo, `replication-group/myscalablecluster`. 
+ **--service-namespace**: establezca este valor en `elasticache`. 
+ **--scalable-dimension**: establezca este valor en `elasticache:replication-group:NodeGroups`. 
+ **--target-tracking-scaling-policy-configuration**: la configuración de la política de escalado de seguimiento de destino que se utilizará para el clúster. 

En el siguiente ejemplo, aplica una política de escalado de seguimiento de destino denominada `myscalablepolicy` a un clúster de ElastiCache para Valkey y Redis OSS denominado `myscalablecluster` con escalado automático de ElastiCache. Para ello, puede usar una configuración de la política guardada en un archivo denominado `config.json`. 

Para Linux, macOS o Unix:

```
aws application-autoscaling put-scaling-policy \
    --policy-name myscalablepolicy \
    --policy-type TargetTrackingScaling \
    --resource-id replication-group/myscalablecluster \
    --service-namespace elasticache \
    --scalable-dimension elasticache:replication-group:NodeGroups \
    --target-tracking-scaling-policy-configuration file://config.json
```

Para Windows:

```
aws application-autoscaling put-scaling-policy ^
    --policy-name myscalablepolicy ^
    --policy-type TargetTrackingScaling ^
    --resource-id replication-group/myscalablecluster ^
    --service-namespace elasticache ^
    --scalable-dimension elasticache:replication-group:NodeGroups ^
    --target-tracking-scaling-policy-configuration file://config.json
```

## Aplicación de una política de escalado mediante la API
<a name="AutoScaling-Scaling-Applying-a-Scaling-Policy-API"></a>

Para aplicar una política de escalado a un clúster de ElastiCache para Valkey y Redis OSS, utilice el comando [PutScalingPolicy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) de la AWS CLI con los siguientes parámetros: 
+ **--policy-name**: el nombre de la política de escalado. 
+ **--resource-id**: el identificador del recurso. Para este parámetro, el tipo de recurso es `ReplicationGroup` y el identificador único es el nombre del clúster; por ejemplo, `replication-group/myscalablecluster`. 
+ **--service-namespace**: establezca este valor en `elasticache`. 
+ **--scalable-dimension**: establezca este valor en `elasticache:replication-group:NodeGroups`. 
+ **--target-tracking-scaling-policy-configuration**: la configuración de la política de escalado de seguimiento de destino que se utilizará para el clúster. 

En el siguiente ejemplo, aplica una política de escalado de seguimiento de destino denominada `myscalablepolicy` a un clúster de ElastiCache denominado `myscalablecluster` con el escalado automático de ElastiCache. Puede usar una configuración de la política en función de la métrica predefinida `ElastiCachePrimaryEngineCPUUtilization`. 

```
POST / HTTP/1.1
Host: autoscaling.us-east-2.amazonaws.com
Accept-Encoding: identity
Content-Length: 219
X-Amz-Target: AnyScaleFrontendService.PutScalingPolicy
X-Amz-Date: 20160506T182145Z
User-Agent: aws-cli/1.10.23 Python/2.7.11 Darwin/15.4.0 botocore/1.4.8
Content-Type: application/x-amz-json-1.1
Authorization: AUTHPARAMS
{
    "PolicyName": "myscalablepolicy",
    "ServiceNamespace": "elasticache",
    "ResourceId": "replication-group/myscalablecluster",
    "ScalableDimension": "elasticache:replication-group:NodeGroups",
    "PolicyType": "TargetTrackingScaling",
    "TargetTrackingScalingPolicyConfiguration": {
        "TargetValue": 40.0,
        "PredefinedMetricSpecification":
        {
            "PredefinedMetricType": "ElastiCachePrimaryEngineCPUUtilization"
        }
    }
}
```

# Edición de una política de escalado
<a name="AutoScaling-Scaling-Editing-a-Scaling-Policy"></a>

Puede editar una política de escalado utilizando la Consola de administración de AWS, la AWS CLI o la API de Auto Scaling de aplicaciones. 

## Edición de una política de escalado mediante la Consola de administración de AWS
<a name="AutoScaling-Scaling-Editing-a-Scaling-Policy-CON"></a>

**Cómo editar una política de escalado automático de un clúster de ElastiCache para Valkey y Redis OSS**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon ElastiCache en [https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. En el panel de navegación, elija el motor correspondiente. 

1. Elija el clúster al que desea agregar una política (elija el nombre del clúster y no el botón a su izquierda). 

1. Elija la pestaña de **Auto Scaling policies** (Políticas de Auto Scaling). 

1. En **Scaling policies** (Políticas de escalado), elija el botón a la izquierda de la política de Auto Scaling que desea cambiar y, a continuación, elija **Modify** (Modificar). 

1. Realice los cambios solicitados en la política.

1. Elija **Modificar**.

## Edición de una política de escalado mediante la AWS CLI o la API
<a name="AutoScaling-Scaling-Editing-a-Scaling-Policy-CLI"></a>

Puede utilizar AWS CLI o la API de Auto Scaling de aplicaciones para editar una política de escalado de la misma forma que aplica una política de escalado: 
+ Al usar la AWS CLI, especifique el nombre de la política que desea editar en el parámetro `--policy-name`. Especifique nuevos valores para los parámetros que desea cambiar. 
+ Al usar la API de Auto Scaling de aplicaciones, especifique el nombre de la política que desea editar en el parámetro `PolicyName`. Especifique nuevos valores para los parámetros que desea cambiar. 

Para obtener más información, consulte [Aplicación de una política de escalado](AutoScaling-Scaling-Applying-a-Scaling-Policy.md).

# Eliminación de una política de escalado
<a name="AutoScaling-Scaling-Deleting-a-Scaling-Policy"></a>

Puede eliminar una política de escalado utilizando la Consola de administración de AWS, AWS CLI o la API de Auto Scaling de aplicaciones. 

## Eliminación de una política de escalado mediante la Consola de administración de AWS
<a name="AutoScaling-Scaling-Editing-a-Scaling-Policy-CON"></a>

**Cómo eliminar una política de escalado automático para un clúster de ElastiCache para Redis OSS**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon ElastiCache en [https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. En el panel de navegación, elija **Valkey** o **Redis OSS**. 

1. Elija el clúster con la política de Auto Scaling que desea editar (elija el nombre del clúster, no el botón a su izquierda). 

1. Elija la pestaña de **Auto Scaling policies** (Políticas de Auto Scaling). 

1. En **Scaling policies** (Políticas de escalado), elija la política de Auto Scaling y, a continuación, elija **Delete** (Eliminar). 

## Eliminación de una política de escalado mediante la AWS CLI
<a name="AutoScaling-Scaling-Deleting-a-Scaling-Policy-CLI"></a>

Para eliminar una política de escalado de un clúster de ElastiCache para Valkey y Redis OSS, utilice el comando [delete-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/delete-scaling-policy.html) de la AWS CLI con los siguientes parámetros: 
+ **--policy-name**: el nombre de la política de escalado. 
+ **--resource-id**: el identificador del recurso. Para este parámetro, el tipo de recurso es `ReplicationGroup` y el identificador único es el nombre del clúster; por ejemplo, `replication-group/myscalablecluster`. 
+ **--service-namespace**: establezca este valor en `elasticache`. 
+ **--scalable-dimension**: establezca este valor en `elasticache:replication-group:NodeGroups`. 

En el siguiente ejemplo, elimina una política de escalado de seguimiento de destino denominada `myscalablepolicy` de un clúster denominado `myscalablecluster`. 

Para Linux, macOS o Unix:

```
aws application-autoscaling delete-scaling-policy \
    --policy-name myscalablepolicy \
    --resource-id replication-group/myscalablecluster \
    --service-namespace elasticache \
    --scalable-dimension elasticache:replication-group:NodeGroups
```

Para Windows:

```
aws application-autoscaling delete-scaling-policy ^
    --policy-name myscalablepolicy ^
    --resource-id replication-group/myscalablecluster ^
    --service-namespace elasticache ^
    --scalable-dimension elasticache:replication-group:NodeGroups
```

## Eliminación de una política de escalado mediante la API
<a name="AutoScaling-Scaling-Deleting-a-Scaling-Policy-API"></a>

Para eliminar una política de escalado de un clúster de ElastiCache para Valkey y Redis OSS, utilice el comando [DeleteScalingPolicy](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/delete-scaling-policy.html) de la AWS CLI con los siguientes parámetros: 
+ **--policy-name**: el nombre de la política de escalado. 
+ **--resource-id**: el identificador del recurso. Para este parámetro, el tipo de recurso es `ReplicationGroup` y el identificador único es el nombre del clúster; por ejemplo, `replication-group/myscalablecluster`. 
+ **--service-namespace**: establezca este valor en `elasticache`. 
+ **--scalable-dimension**: establezca este valor en `elasticache:replication-group:NodeGroups`. 

En el siguiente ejemplo, elimina una política de escalado de seguimiento de destino denominada `myscalablepolicy` de un clúster denominado `myscalablecluster`. 

```
POST / HTTP/1.1
Host: autoscaling.us-east-2.amazonaws.com
Accept-Encoding: identity
Content-Length: 219
X-Amz-Target: AnyScaleFrontendService.DeleteScalingPolicy
X-Amz-Date: 20160506T182145Z
User-Agent: aws-cli/1.10.23 Python/2.7.11 Darwin/15.4.0 botocore/1.4.8
Content-Type: application/x-amz-json-1.1
Authorization: AUTHPARAMS
{
    "PolicyName": "myscalablepolicy",
    "ServiceNamespace": "elasticache",
    "ResourceId": "replication-group/myscalablecluster",
    "ScalableDimension": "elasticache:replication-group:NodeGroups"
}
```

# Uso de CloudFormation para las políticas de Auto Scaling
<a name="AutoScaling-with-Cloudformation-Shards"></a>

Este fragmento muestra cómo crear una política de seguimiento de destino y aplicarla a un recurso [AWS::ElastiCache::ReplicationGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html) mediante el recurso [AWS::ApplicationAutoScaling::ScalableTarget](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html). Utiliza las funciones intrínsecas [Fn::Join](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-join.html) y [Ref](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html) para construir la propiedad `ResourceId` con el nombre lógico del recurso `AWS::ElastiCache::ReplicationGroup` especificado en la misma plantilla. 

```
ScalingTarget:
   Type: 'AWS::ApplicationAutoScaling::ScalableTarget'
   Properties:
     MaxCapacity: 3
     MinCapacity: 1
     ResourceId: !Sub replication-group/${logicalName}
     ScalableDimension: 'elasticache:replication-group:NodeGroups'
     ServiceNamespace: elasticache
     RoleARN: !Sub "arn:aws:iam::${AWS::AccountId}:role/aws-service-role/elasticache.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ElastiCacheRG"

  ScalingPolicy:
    Type: "AWS::ApplicationAutoScaling::ScalingPolicy"
    Properties:
      ScalingTargetId: !Ref ScalingTarget
      ServiceNamespace: elasticache
      PolicyName: testpolicy
      PolicyType: TargetTrackingScaling
      ScalableDimension: 'elasticache:replication-group:NodeGroups'
      TargetTrackingScalingPolicyConfiguration:
        PredefinedMetricSpecification:
          PredefinedMetricType: ElastiCachePrimaryEngineCPUUtilization
        TargetValue: 40
```

# Escalado programado
<a name="AutoScaling-with-Scheduled-Scaling-Shards"></a>

El escalado según una programación le permite escalar la aplicación en respuesta a los cambios previstos en la demanda. Para utilizar el escalado programado, deberá crear acciones programadas, que indiquen a ElastiCache para Valkey y Redis OSS que realice actividades de escalado en momentos específicos. Cuando crea una acción programada, especifica un clúster existente, cuando debe ocurrir la actividad de escalado, la capacidad mínima y la capacidad máxima. Puede crear acciones programadas que realizan el escalado de forma puntual o periódica. 

 Solo puede crear una acción programada para los clústeres que ya existen. No puede crear una acción programada a la vez que crea un clúster.

A fin de obtener más información sobre la terminología de la creación, administración y eliminación de acciones programadas, consulte [Comandos de uso frecuente para la creación, administración y eliminación de acciones programadas](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-scheduled-scaling.html#scheduled-scaling-commonly-used-commands). 

**Para crear de forma periódica:**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon ElastiCache en [https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. En el panel de navegación, elija **Valkey** o **Redis OSS**. 

1. Elija el clúster para el que desea agregar una política. 

1. Elija **Manage Auto Scaling policies** (Administrar política de Auto Scaling) en el menú desplegable de **Actions** (Acciones). 

1. Elija la pestaña de **Auto Scaling policies** (Políticas de Auto Scaling).

1. En la sección de **Auto Scaling policies** (Políticas de Auto Scaling), aparece el cuadro de diálogo de **Add Scaling policy** (Agregar política de escalado). Elija **Scheduled scaling** (Escalado programado).

1. En **Policy name** (Nombre de política), ingrese el nombre de la política. 

1. En **Scalable Dimension** (Dimensión escalable), elija **Shards** (Particiones). 

1. En **Target Shards** (Particiones de destino), elija el valor. 

1. En **Recurrence** (Recurrencia), elija **Recurring** (Recurrente). 

1. En **Frequency** (Frecuencia), elija el valor respectivo. 

1. En **Start Date** (Fecha de inicio) y **Start time** (Hora de inicio), elija la hora a partir de la cual la política entrará en vigor. 

1. Elija **Add Policy** (Agregar política). 

**Para crear una acción programada puntual:**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon ElastiCache en [https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. En el panel de navegación, elija **Valkey** o **Redis OSS**. 

1. Elija el clúster para el que desea agregar una política. 

1. Elija **Manage Auto Scaling policies** (Administrar política de Auto Scaling) en el menú desplegable de **Actions** (Acciones). 

1. Elija la pestaña de **Auto Scaling policies** (Políticas de Auto Scaling).

1. En la sección de **Auto Scaling policies** (Políticas de Auto Scaling), aparece el cuadro de diálogo de **Add Scaling policy** (Agregar política de escalado). Elija **Scheduled scaling** (Escalado programado).

1. En **Policy name** (Nombre de política), ingrese el nombre de la política. 

1. En **Scalable Dimension** (Dimensión escalable), elija **Shards** (Particiones). 

1. En **Target Shards** (Particiones de destino), elija el valor. 

1. En **Recurrence** (Recurrencia), elija **One Time** (Una vez). 

1. En **Start Date** (Fecha de inicio) y **Start time** (Hora de inicio), elija la hora a partir de la cual la política entrará en vigor. 

1. En **End Date** (Fecha de finalización), elija la fecha hasta la que la política estará vigente. 

1. Elija **Add Policy** (Agregar política). 

**Para eliminar una acción programada**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon ElastiCache en [https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. En el panel de navegación, elija **Valkey** o **Redis OSS**. 

1. Elija el clúster para el que desea agregar una política. 

1. Elija **Manage Auto Scaling policies** (Administrar política de Auto Scaling) en el menú desplegable de **Actions** (Acciones). 

1. Elija la pestaña de **Auto Scaling policies** (Políticas de Auto Scaling).

1. En la sección de **Auto Scaling Policies** (Políticas de Auto Scaling), elija la política de Auto Scaling y, a continuación, elija **Delete** (Eliminar) en el cuadro de diálogo de **Actions** (Acciones).

**Para administrar el escalado programado mediante la AWS CLI **

Utilice las siguientes API de escalado automático de aplicaciones:
+ [put-scheduled-action](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/put-scheduled-action.html) 
+ [describe-scheduled-actions](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/describe-scheduled-actions.html) 
+ [delete-scheduled-action](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/delete-scheduled-action.html) 

## Utilice CloudFormation para crear una acción programada
<a name="AutoScaling-with-Cloudformation-Declare-Scheduled-Action"></a>

Este fragmento muestra cómo crear una política de seguimiento de destino y aplicarla a un recurso [AWS::ElastiCache::ReplicationGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html) mediante el recurso [AWS::ApplicationAutoScaling::ScalableTarget](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html). Utiliza las funciones intrínsecas [Fn::Join](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-join.html) y [Ref](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html) para construir la propiedad `ResourceId` con el nombre lógico del recurso `AWS::ElastiCache::ReplicationGroup` especificado en la misma plantilla. 

```
ScalingTarget:
   Type: 'AWS::ApplicationAutoScaling::ScalableTarget'
   Properties:
     MaxCapacity: 3
     MinCapacity: 1
     ResourceId: !Sub replication-group/${logicalName}
     ScalableDimension: 'elasticache:replication-group:NodeGroups'
     ServiceNamespace: elasticache
     RoleARN: !Sub "arn:aws:iam::${AWS::AccountId}:role/aws-service-role/elasticache.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ElastiCacheRG"
     ScheduledActions:
       - EndTime: '2020-12-31T12:00:00.000Z'
         ScalableTargetAction:
           MaxCapacity: '5'
           MinCapacity: '2'
         ScheduledActionName: First
         Schedule: 'cron(0 18 * * ? *)'
```

# Uso de Auto Scaling con réplicas
<a name="AutoScaling-Using-Replicas"></a>

Un grupo de replicación de ElastiCache puede configurar una o más cachés para que funcionen como un solo nodo lógico. 

A continuación se proporcionan detalles sobre el seguimiento de destinos y las políticas programadas, así como sobre cómo aplicarlas mediante la Consola de administración de AWS, la AWS CLI y API.

# Políticas de escalado de seguimiento de destino
<a name="AutoScaling-Scaling-Policies-Replicas-Replicas"></a>

Las políticas de escalado de seguimiento de destino le permiten seleccionar una métrica y establecer un valor de destino. El escalado automático de ElastiCache para Valkey y Redis OSS crea y administra las alarmas de CloudWatch que desencadenan la política de escalado y calcula el ajuste de escalado en función de la métrica y el valor de destino. La política de escalado agrega o elimine las réplicas por igual en todas las particiones en función de las necesidades para mantener la métrica en el valor objetivo especificado o en un valor próximo. Además de mantener la métrica próxima al valor de destino, la política de escalado de seguimiento de destino también se ajusta a las fluctuaciones de la métrica producidas por patrones de carga fluctuante y minimiza las fluctuaciones rápidas de la capacidad de la flota. 

## Criterios de Auto Scaling para las réplicas
<a name="AutoScaling-Scaling-Criteria-Replicas"></a>

La política de Auto Scaling define la siguiente métrica predefinida para el clúster:

`ElastiCacheReplicaEngineCPUUtilization`: el umbral de utilización de AVG EngineCPU agregado en todas las réplicas que ElastiCache utiliza para activar una operación de escalado automático. Puede establecer el objetivo de utilización entre el 35 y el 70 %.

Cuando el servicio detecta que su métrica `ElastiCacheReplicaEngineCPUUtilization` es igual o mayor que la configuración del Target (Objetivo), aumentará las réplicas de las particiones de forma automática. ElastiCache escala horizontalmente las réplicas del clúster en un recuento igual al mayor de dos números: la variación del porcentaje del objetivo y una réplica. En el caso de la reducción horizontal, ElastiCache no se reduce horizontalmente de forma automática a menos que el valor total de la métrica sea inferior al 75 % del objetivo definido. 

Para un ejemplo de escalado horizontal, si tiene 5 particiones y 1 réplica cada una:

Si el objetivo se incumple en un 30 %, ElastiCache para Valkey y Redis OSS se escala horizontalmente por una réplica (máx. 0,3; el valor predeterminado es 1) en todas las particiones, lo que da como resultado cinco particiones con dos réplicas cada una.

Para ver un ejemplo de reducción horizontal, si ha seleccionado un valor de objetivo del 60 %, ElastiCache para Valkey y Redis OSS no se reducirá horizontalmente de forma automática hasta que la métrica sea inferior o igual al 45 % (25 % por debajo del objetivo del 60 %).

### Consideraciones de Auto Scaling
<a name="AutoScaling-Scaling-Considerations-Replicas"></a>

Tenga en cuenta las siguientes consideraciones:
+ En las políticas de escalado de seguimiento de destino, se presupone que el escalado ascendente se lleva a cabo cuando la métrica está por encima del valor de destino. No puede utilizar una política de escalado de seguimiento de destinos si la métrica especificada está por debajo del valor de destino. ElastiCache para Valkey y Redis OSS escala horizontalmente las réplicas con un máximo (porcentaje de desviación redondeada a partir del objetivo; el predeterminado es 1) de las réplicas existentes en todas las particiones del clúster.
+ Las políticas de escalado de seguimiento de destino no realizan el escalado cuando la métrica especificada no tiene datos suficientes. No realiza el escalado porque la carencia de datos no se interpreta como una infrautilización de recursos. 
+ Es posible que haya diferencias entre el valor de destino y los puntos de datos de la métrica real. Esto se debe a que el escalado automático de ElastiCache siempre actúa de forma conservadora y redondea hacia arriba o hacia abajo a la hora de determinar la cantidad de capacidad que se debe añadir o quitar. Con esto se evita que se agrega capacidad insuficiente o se elimine demasiada capacidad. 
+ Para garantizar la disponibilidad de la aplicación, el servicio escalará horizontalmente en proporción a la métrica tan rápido como puede, pero se reduce horizontalmente de manera más gradual con un máximo de reducción horizontal de 1 réplica en las particiones del clúster. 
+ Puede tener varias políticas de escalado de seguimiento de destino en un clúster de ElastiCache para Valkey y Redis OSS, siempre que cada uno de ellos utilice una métrica diferente. El objetivo del escalado automático siempre es dar prioridad a la disponibilidad, por lo que su comportamiento varía en función de si las políticas de seguimiento de destino están listas para el escalado horizontal o la reducción horizontal. Realizará un escalado horizontal del servicio si cualquiera de las políticas de seguimiento de destino está lista para el escalado horizontal, pero solo realizará la reducción horizontal si todas las políticas de seguimiento de destino (que tienen la parte de reducción horizontal habilitada) están listas para la reducción horizontal. 
+ No modifique ni elimine las alarmas de CloudWatch que administra el escalado automático de ElastiCache para las políticas de escalado de seguimiento de destino. El escalado automático elimina de forma automática las alarmas cuando se elimina la política de escalado o el clúster. 
+ El escalado automático de ElastiCache no impide modificar de forma manual las réplicas en las particiones. Estos ajustes manuales no afectan a las alarmas de CloudWatch existentes adjuntas a la política de escalado, pero pueden afectar a las métricas que pueden activar estas alarmas de CloudWatch. 
+ Estas alarmas de CloudWatch administradas por Auto Scaling se definen a través de la métrica AVG (Promedio) en todas las particiones del clúster. Por lo tanto, tener particiones activas puede resultar en cualquiera de los siguientes escenarios:
  + escalado cuando no es necesario debido a la carga en algunas particiones activas que desencadenan una alarma de CloudWatch
  + no escalar cuando sí sea necesario debido a un AVG (Promedio) agregado en todas las particiones que causa que la alarma se interrumpa. 
+ Siguen aplicándose los límites predeterminados de ElastiCache en nodos por clúster. Por lo tanto, al optar por Auto Scaling y, si espera que los nodos máximos sean superiores al límite predeterminado, solicite un aumento del límite en [AWS Service Limits](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) y elija el tipo de límite **Nodes per cluster per instance type** (Nodos por clúster por tipo de instancias). 
+ Asegúrese de tener suficientes ENI (interfaces de red elásticas) disponibles en su VPC, que son necesarias durante el escalado horizontal. Para obtener más información, consulte [Interfaces de red elástica](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_ElasticNetworkInterfaces.html).
+ Si no hay suficiente capacidad disponible de EC2, el escalado automático de ElastiCache no se escalará horizontalmente hasta que la capacidad se encuentre disponible o hasta que modifique de forma manual el clúster a los tipos de instancia que tengan suficiente capacidad.
+ El escalado automático de ElastiCache no admite el escalado de réplicas con un clúster que tenga un `ReservedMemoryPercent` menor del 25 %. Para obtener más información, consulte [Administración de la memoria reservada para Valkey y Redis OSS](redis-memory-management.md). 

# Adición de una política de escalado
<a name="AutoScaling-Adding-Policy-Replicas"></a>

Puede agregar una política de escalado mediante la Consola de administración de AWS. 

**Adición de una política de escalado mediante la Consola de administración de AWS**

Cómo añadir una política de escalado automático a ElastiCache para Valkey y Redis OSS

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon ElastiCache en [https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. En el panel de navegación, elija **Valkey** o **Redis OSS**. 

1. Elija el clúster al que desea agregar una política (elija el nombre del clúster y no el botón a su izquierda). 

1. Elija la pestaña de **Auto Scaling policies** (Políticas de Auto Scaling). 

1. Elija **add dynamic scaling** (agregar escalado dinámico). 

1. En **Scaling policies** (Políticas de escalado), elija **Add dynamic scaling** (Agregar escalado dinámico).

1. En **Policy name** (Nombre de política), ingrese el nombre de la política. 

1. En **Scalable Dimension** (Dimensión escalable), seleccione **Replicas** (Réplicas) en el cuadro de diálogo. 

1. Para el valor de objetivo, escriba el porcentaje promedio de utilización de la CPU que desea mantener en las réplicas de ElastiCache. El valor debe ser >=35 y <=70. Las réplicas de clúster se agregan o quitan para mantener la métrica en un valor próximo al especificado.

1. (Opcional) La consola no admite periodos de recuperación de reducción o escalado horizontal. Utilice la AWS CLI para modificar los valores de periodo de recuperación. 

1. En **Capacidad mínima**, escriba el número mínimo de réplicas que debe mantener la política de escalado automático de ElastiCache. 

1. En **Capacidad máxima**, escriba el número máximo de réplicas que debe mantener la política de escalado automático de ElastiCache. Este valor debe ser >=5. 

1. Seleccione **Crear**.

# Registro de un destino escalable
<a name="AutoScaling-Register-Policy"></a>

Puede aplicar una política de escalado en función de una métrica predefinida o una personalizada. Para ello, puede usar AWS CLI o la API de Auto Scaling de aplicaciones. El primer paso consiste en registrar su grupo de replicación de ElastiCache para Valkey y Redis OSS en el escalado automático. 

Para poder utilizar el escalado automático de ElastiCache con un clúster, debe registrar su clúster en el escalado automático de ElastiCache. Esto se hace para definir la dimensión y los límites de escalado que se van a aplicar a ese clúster. El escalado automático de ElastiCache escala de forma dinámica el clúster a lo largo de la dimensión escalable `elasticache:replication-group:Replicas`, que representa el número de réplicas del clúster por partición. 

**Uso de la CLI** 

Para registrar el clúster de ElastiCache, utilice el comando [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) con los siguientes parámetros: 
+ --service-namespace: establezca este valor en elasticache. 
+ --resource-id: el identificador de recurso para el clúster de ElastiCache. Para este parámetro, el tipo de recurso es ReplicationGroup y el identificador único es el nombre del clúster; por ejemplo, `replication-group/myscalablecluster`. 
+ --scalable-dimension: establezca este valor en `elasticache:replication-group:Replicas`. 
+ --min-capacity: número mínimo de réplicas que administrará el escalado automático de ElastiCache. Para obtener información sobre la relación entre --min-capacity, --max-capacity y el número de réplicas del clúster, consulte [Capacidad mínima y máxima](AutoScaling-Policies.md#AutoScaling-MinMax).
+ --max-capacity: número máximo de réplicas que administrará el escalado automático de ElastiCache. Para obtener información sobre la relación entre --min-capacity, --max-capacity y el número de réplicas del clúster, consulte [Capacidad mínima y máxima](AutoScaling-Policies.md#AutoScaling-MinMax).

**Example**  
En el siguiente ejemplo, registra un clúster de ElastiCache denominado `myscalablecluster`. El registro indica que el clúster debe escalarse de forma dinámica para tener de una a cinco réplicas.   
Para Linux, macOS o Unix:  

```
aws application-autoscaling register-scalable-target \
    --service-namespace elasticache \
    --resource-id replication-group/myscalablecluster \
    --scalable-dimension elasticache:replication-group:Replicas \
    --min-capacity 1 \
    --max-capacity 5 \
```
Para Windows:  

```
aws application-autoscaling register-scalable-target ^
    --service-namespace elasticache ^
    --resource-id replication-group/myscalablecluster ^
    --scalable-dimension elasticache:replication-group:Replicas ^
    --min-capacity 1 ^
    --max-capacity 5 ^
```

**Uso de la API**

Para registrar el clúster de ElastiCache, utilice el comando [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) con los siguientes parámetros: 
+ ServiceNamespace: establezca este valor en elasticache. 
+ ResourceID: el identificador de recurso para el clúster de ElastiCache. Para este parámetro, el tipo de recurso es ReplicationGroup y el identificador único es el nombre del clúster; por ejemplo, `replication-group/myscalablecluster`. 
+ ScalableDimension: establezca este valor en `elasticache:replication-group:Replicas`. 
+ MinCapacity: número mínimo de réplicas que administrará el escalado automático de ElastiCache. Para obtener información sobre la relación entre --min-capacity, --max-capacity y el número de réplicas del clúster, consulte [Capacidad mínima y máxima](AutoScaling-Policies.md#AutoScaling-MinMax).
+ MaxCapacity: número máximo de réplicas que administrará el escalado automático de ElastiCache. Para obtener información sobre la relación entre --min-capacity, --max-capacity y el número de réplicas del clúster, consulte [Capacidad mínima y máxima](AutoScaling-Policies.md#AutoScaling-MinMax).

**Example**  
En el siguiente ejemplo, se registra un clúster denominado `myscalablecluster` con la API de Application Auto Scaling. Este registro indica que el clúster debe escalarse de forma dinámica para tener de una a cinco réplicas. 

```
POST / HTTP/1.1
Host: autoscaling.us-east-2.amazonaws.com
Accept-Encoding: identity
Content-Length: 219
X-Amz-Target: AnyScaleFrontendService.RegisterScalableTarget
X-Amz-Date: 20160506T182145Z
User-Agent: aws-cli/1.10.23 Python/2.7.11 Darwin/15.4.0 botocore/1.4.8
Content-Type: application/x-amz-json-1.1
Authorization: AUTHPARAMS
{
    "ServiceNamespace": "elasticache",
    "ResourceId": "replication-group/myscalablecluster",
    "ScalableDimension": "elasticache:replication-group:Replicas",
    "MinCapacity": 1,
    "MaxCapacity": 5
}
```

# Definición de una política de escalado
<a name="AutoScaling-Defining-Policy"></a>

Una configuración de la política de escalado de seguimiento de destino está representada por un bloque JSON en el que se definen las métricas y los valores de destino. Puede guardar una configuración de la política de escalado como bloque JSON en un archivo de texto. Puede utilizar ese archivo de texto al invocar AWS CLI o la API de Auto Scaling de aplicaciones. Para obtener más información sobre la sintaxis de configuración de políticas, consulte [TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/ApplicationAutoScaling/latest/APIReference/API_TargetTrackingScalingPolicyConfiguration.html) en la *Referencia de la API de Auto Scaling de aplicaciones*. 

Las siguientes opciones se encuentran disponibles para definir una configuración de la política de escalado de seguimiento de destino:

**Topics**
+ [Uso de una métrica predefinida](#AutoScaling-Predefined-Metric)
+ [Edición de una política de escalado](AutoScaling-Editing-Policy.md)
+ [Eliminación de una política de escalado](AutoScaling-Deleting-Policy.md)
+ [Uso de CloudFormation para las políticas de Auto Scaling](AutoScaling-with-Cloudformation.md)
+ [Escalado programado](AutoScaling-with-Scheduled-Scaling-Replicas.md)

## Uso de una métrica predefinida
<a name="AutoScaling-Predefined-Metric"></a>

Una configuración de la política de escalado de seguimiento de destino está representada por un bloque JSON en el que se definen las métricas y los valores de destino. Puede guardar una configuración de la política de escalado como bloque JSON en un archivo de texto. Puede utilizar ese archivo de texto al invocar AWS CLI o la API de Auto Scaling de aplicaciones. Para obtener más información sobre la sintaxis de configuración de políticas, consulte [TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/ApplicationAutoScaling/latest/APIReference/API_TargetTrackingScalingPolicyConfiguration.html) en la *Referencia de la API de Auto Scaling de aplicaciones*. 

Las siguientes opciones se encuentran disponibles para definir una configuración de la política de escalado de seguimiento de destino:

**Topics**
+ [Uso de una métrica predefinida](#AutoScaling-Predefined-Metric)
+ [Uso de una métrica personalizada](#AutoScaling-Custom-Metric)
+ [Uso de periodos de recuperación](#AutoScaling-Using-Cooldowns)
+ [Desactivación de actividad de escalado descendente](#AutoScaling-Disabling-Scalein)
+ [Aplicación de una política de escalado a un clúster de ElastiCache para Valkey y Redis OSS](#AutoScaling-Applying-Policy)

### Uso de una métrica predefinida
<a name="AutoScaling-Predefined-Metric"></a>

Mediante las métricas predefinidas, puede definir rápidamente una política de escalado de seguimiento de destino para un clúster de ElastiCache para Valkey y Redis OSS que funciona con el seguimiento de destino en el escalado automático de ElastiCache. Actualmente, ElastiCache admite las siguientes métricas predefinidas en el escalado automático de réplicas de ElastiCache: 

`ElastiCacheReplicaEngineCPUUtilization`: el valor medio de la métrica EngineCPUUtilization en CloudWatch en todas las réplicas del clúster. Puede encontrar el valor agregado de la métrica en CloudWatch en `ReplicationGroupId, Role` de ElastiCache para los valores de ReplicationGroupId y Role Replica necesarios. 

Para usar una métrica predefinida en su política de escalado, puede crear una configuración de seguimiento de destino para su política de escalado. Esta configuración debe incluir `PredefinedMetricSpecification` para la métrica predefinida y `TargetValue` para el valor de destino de esa métrica. 

### Uso de una métrica personalizada
<a name="AutoScaling-Custom-Metric"></a>

Mediante las métricas personalizadas, puede definir una política de escalado de seguimiento de destino que cumpla sus requisitos personalizados. Puede definir una métrica personalizada en función de cualquier métrica de ElastiCache para Valkey y Redis OSS que cambie en proporción al escalado. No todas las métricas de ElastiCache funcionan para el seguimiento de destino. La métrica debe ser una métrica de utilización válida y describir el nivel de actividad de una instancia. El valor de la métrica debe aumentar o reducirse en proporción al número de réplicas del clúster. Este aumento o reducción proporcionales son necesarios para utilizar los datos de las métricas a fin de ampliar o reducir proporcionalmente el número de réplicas. 

**Example**  
En el siguiente ejemplo se describe una configuración de seguimiento de destino para una política de escalado. En esta configuración, una métrica personalizada ajusta un clúster en función de un uso medio de la CPU del 50 % en todas las réplicas de un clúster denominado `my-db-cluster`.   

```
{"TargetValue": 50,
    "CustomizedMetricSpecification":
    {"MetricName": "EngineCPUUtilization",
        "Namespace": "AWS/ElastiCache",
        "Dimensions": [
            {"Name": "ReplicationGroup","Value": "my-db-cluster"},
            {"Name": "Role","Value": "REPLICA"}
        ],
        "Statistic": "Average",
        "Unit": "Percent"
    }
}
```

### Uso de periodos de recuperación
<a name="AutoScaling-Using-Cooldowns"></a>

Puede especificar un valor, en segundos, a fin de que `ScaleOutCooldown` agregue un periodo de recuperación para el escalado horizontal de su clúster. De forma similar, puede agregar un valor, en segundos, a fin de que `ScaleInCooldown` agregue un periodo de recuperación para el escalado vertical de su clúster. Para obtener más información sobre `ScaleInCooldown` y `ScaleOutCooldown`, consulte [TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/ApplicationAutoScaling/latest/APIReference/API_TargetTrackingScalingPolicyConfiguration.html) en la *Referencia de la API de Auto Scaling de aplicaciones*. En el siguiente ejemplo se describe una configuración de seguimiento de destino para una política de escalado. En esta configuración, la métrica predefinida `ElastiCacheReplicaEngineCPUUtilization` se usa para ajustar un clúster en función del uso medio de la CPU del 40 % en todas las réplicas de ese clúster. La configuración proporciona un periodo de recuperación de escalado descendente de 10 minutos y un periodo de recuperación de escalado ascendente de 5 minutos. 

```
{"TargetValue": 40.0,
    "PredefinedMetricSpecification":
    {"PredefinedMetricType": "ElastiCacheReplicaEngineCPUUtilization"
    },
    "ScaleInCooldown": 600,
    "ScaleOutCooldown": 300
}
```

### Desactivación de actividad de escalado descendente
<a name="AutoScaling-Disabling-Scalein"></a>

Puede evitar que la configuración de la política de escalado de seguimiento de destino reduzca horizontalmente su clúster de ElastiCache para Valkey y Redis OSS desactivando la actividad de reducción horizontal. La deshabilitación de la actividad de escalado horizontal evita que la política de escalado elimine réplicas, a la vez que permite a la política de escalado agregarlas según sea necesario. 

Puede especificar un valor booleano a fin de que `DisableScaleIn` habilite o deshabilite la actividad de reducción horizontal para su clúster. Para obtener más información sobre `DisableScaleIn`, consulte [TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/ApplicationAutoScaling/latest/APIReference/API_TargetTrackingScalingPolicyConfiguration.html) en la *Referencia de la API de Auto Scaling de aplicaciones*. 

**Example**  
En el siguiente ejemplo se describe una configuración de seguimiento de destino para una política de escalado. En esta configuración, la métrica predefinida `ElastiCacheReplicaEngineCPUUtilization` ajusta un clúster en función del uso medio de la CPU del 40 % en todas las réplicas de ese clúster. La configuración deshabilita la actividad de escalado descendente para la política de escalado. 

```
{"TargetValue": 40.0,
    "PredefinedMetricSpecification":
    {"PredefinedMetricType": "ElastiCacheReplicaEngineCPUUtilization"
    },
    "DisableScaleIn": true
}
```

### Aplicación de una política de escalado a un clúster de ElastiCache para Valkey y Redis OSS
<a name="AutoScaling-Applying-Policy"></a>

Tras registrar su clúster con escalado automático de ElastiCache para Valkey y Redis OSS y definir una política de escalado, puede aplicarla al clúster registrado. Para aplicar una política de escalado a un clúster de ElastiCache para Valkey y Redis OSS, puede utilizar la AWS CLI o la API de Escalado automático de aplicaciones. 

**Uso de AWS CLI**

Para aplicar una política de escalado a un clúster de ElastiCache para Valkey y Redis OSS, utilice el comando [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/put-scaling-policy.html) con los siguientes parámetros: 
+ --policy-name: el nombre de la política de escalado. 
+ --policy-type: establezca este valor en `TargetTrackingScaling`. 
+ --resource-id: el identificador de recurso para el clúster. Para este parámetro, el tipo de recurso es ReplicationGroup y el identificador único es el nombre del clúster; por ejemplo, `replication-group/myscalablecluster`. 
+ --service-namespace: establezca este valor en elasticache. 
+ --scalable-dimension: establezca este valor en `elasticache:replication-group:Replicas`. 
+ --target-tracking-scaling-policy-configuration: la configuración de la política de escalado de seguimiento de destino que se utilizará para el clúster. 

**Example**  
En el siguiente ejemplo, se aplica una política de escalado de seguimiento de destino denominada `myscalablepolicy` a un clúster denominado `myscalablecluster` con escalado automático de ElastiCache. Para ello, puede usar una configuración de la política guardada en un archivo denominado `config.json`. 

Para Linux, macOS o Unix:

```
aws application-autoscaling put-scaling-policy \
    --policy-name myscalablepolicy \
    --policy-type TargetTrackingScaling \
    --resource-id replication-group/myscalablecluster \
    --service-namespace elasticache \
    --scalable-dimension elasticache:replication-group:Replicas \
    --target-tracking-scaling-policy-configuration file://config.json
```

```
{"TargetValue": 40.0,
    "PredefinedMetricSpecification":
    {"PredefinedMetricType": "ElastiCacheReplicaEngineCPUUtilization"
    },
    "DisableScaleIn": true
}
```

Para Windows:

```
aws application-autoscaling put-scaling-policy ^
    --policy-name myscalablepolicy ^
    --policy-type TargetTrackingScaling ^
    --resource-id replication-group/myscalablecluster ^
    --service-namespace elasticache ^
    --scalable-dimension elasticache:replication-group:Replicas ^
    --target-tracking-scaling-policy-configuration file://config.json
```

**Uso de la API**

Para aplicar una política de escalado a un clúster de ElastiCache con la API de Escalado automático de aplicaciones, utilice la operación [PutScalingPolicy](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_PutScalingPolicy.html) de la API de Escalado automático de aplicaciones con los siguientes parámetros: 
+ PolicyName: el nombre de la política de escalado. 
+ PolicyType: establezca este valor en `TargetTrackingScaling`. 
+ ResourceID: el identificador de recurso para el clúster. Para este parámetro, el tipo de recurso es ReplicationGroup y el identificador único es el nombre del clúster de ElastiCache para Redis OSS, por ejemplo, `replication-group/myscalablecluster`. 
+ ServiceNamespace: establezca este valor en elasticache. 
+ ScalableDimension: establezca este valor en `elasticache:replication-group:Replicas`. 
+ TargetTrackingScalingPolicyConfiguration: la configuración de la política de escalado de seguimiento de destino que se utilizará para el clúster. 

**Example**  
En el siguiente ejemplo, se aplica una política de escalado de seguimiento de destino denominada `scalablepolicy` a un clúster denominado `myscalablecluster` con escalado automático de ElastiCache. Puede usar una configuración de la política en función de la métrica predefinida `ElastiCacheReplicaEngineCPUUtilization`. 

```
POST / HTTP/1.1
Host: autoscaling.us-east-2.amazonaws.com
Accept-Encoding: identity
Content-Length: 219
X-Amz-Target: AnyScaleFrontendService.PutScalingPolicy
X-Amz-Date: 20160506T182145Z
User-Agent: aws-cli/1.10.23 Python/2.7.11 Darwin/15.4.0 botocore/1.4.8
Content-Type: application/x-amz-json-1.1
Authorization: AUTHPARAMS
{
    "PolicyName": "myscalablepolicy",
    "ServiceNamespace": "elasticache",
    "ResourceId": "replication-group/myscalablecluster",
    "ScalableDimension": "elasticache:replication-group:Replicas",
    "PolicyType": "TargetTrackingScaling",
    "TargetTrackingScalingPolicyConfiguration": {
        "TargetValue": 40.0,
        "PredefinedMetricSpecification":
        {
            "PredefinedMetricType": "ElastiCacheReplicaEngineCPUUtilization"
        }
    }
}
```

# Edición de una política de escalado
<a name="AutoScaling-Editing-Policy"></a>

Puede editar una política de escalado utilizando la Consola de administración de AWS, la AWS CLI o la API de Auto Scaling de aplicaciones. 

**Edición de una política de escalado mediante la Consola de administración de AWS**

Solo puede editar políticas con el tipo Predefined metrics (Métricas predefinidas) mediante la Consola de administración de AWS

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon ElastiCache en [https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. En el panel de navegación, elija **Valkey** o **Redis OSS**.

1. Elija el clúster al que desea agregar una política (elija el nombre del clúster y no el botón a su izquierda). 

1. Elija la pestaña de **Auto Scaling policies** (Políticas de Auto Scaling). 

1. En **Scaling policies** (Políticas de escalado), elija el botón a la izquierda de la política de Auto Scaling que desea cambiar y, a continuación, elija **Modify** (Modificar). 

1. Realice los cambios solicitados en la política.

1. Elija **Modificar**.

1. Realice cambios en la política. 

1. Elija **Modificar**.

**Edición de una política de escalado mediante la AWS CLI o la API de Auto Scaling de aplicaciones**

Puede utilizar AWS CLI o la API de Application Auto Scaling para editar una política de escalado de la misma forma que aplica una política de escalado: 
+ Al usar la API de Auto Scaling de aplicaciones, especifique el nombre de la política que desea editar en el parámetro `PolicyName`. Especifique nuevos valores para los parámetros que desea cambiar. 

Para obtener más información, consulte [Aplicación de una política de escalado a un clúster de ElastiCache para Valkey y Redis OSS](AutoScaling-Defining-Policy.md#AutoScaling-Applying-Policy).

# Eliminación de una política de escalado
<a name="AutoScaling-Deleting-Policy"></a>

Puede eliminar una política de escalado mediante la Consola de administración de AWS, la AWS CLI o la API de Auto Scaling de aplicaciones.

**Eliminación de una política de escalado mediante la Consola de administración de AWS**

Solo puede editar políticas con el tipo Predefined metrics (Métricas predefinidas) mediante la Consola de administración de AWS

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon ElastiCache en [https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. En el panel de navegación, elija **Valkey** o **Redis OSS**.

1. Elija el clúster con la política de Auto Scaling que desea eliminar.

1. Elija la pestaña de **Auto Scaling policies** (Políticas de Auto Scaling). 

1. En **Scaling policies** (Políticas de escalado), elija la política de Auto Scaling y, a continuación, elija **Delete** (Eliminar). 

**Eliminación de una política de escalado mediante la AWS CLI o la API de Auto Scaling de aplicaciones**

Puede utilizar la AWS CLI o la API de Application Auto Scaling para eliminar una política de escalado de un clúster de ElastiCache. 

**CLI**

Para eliminar una política de escalado de un clúster de ElastiCache para Valkey y Redis OSS, utilice el comando [delete-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/delete-scaling-policy.html) con los siguientes parámetros: 
+ --policy-name: el nombre de la política de escalado. 
+ --resource-id: el identificador de recurso para el clúster. Para este parámetro, el tipo de recurso es ReplicationGroup y el identificador único es el nombre del clúster; por ejemplo, `replication-group/myscalablecluster`. 
+ --service-namespace: establezca este valor en elasticache. 
+ --scalable-dimension: establezca este valor en `elasticache:replication-group:Replicas`. 

**Example**  
En el siguiente ejemplo, elimina una política de escalado de seguimiento de destino denominada `myscalablepolicy` de un clúster de ELC denominado `myscalablecluster`. 

Para Linux, macOS o Unix:

```
aws application-autoscaling delete-scaling-policy \
    --policy-name myscalablepolicy \
    --resource-id replication-group/myscalablecluster \
    --service-namespace elasticache \
    --scalable-dimension elasticache:replication-group:Replicas \
```

Para Windows:

```
aws application-autoscaling delete-scaling-policy ^
    --policy-name myscalablepolicy ^
    --resource-id replication-group/myscalablecluster ^
    --service-namespace elasticache ^
    --scalable-dimension elasticache:replication-group:Replicas ^
```

**API**

Para eliminar una política de escalado de su clúster de ElastiCache para Valkey y Redis OSS, utilice la operación [DeleteScalingPolicy](https://docs.aws.amazon.com/ApplicationAutoScaling/latest/APIReference/API_DeleteScalingPolicy.html) de la API de Escalado automático de aplicaciones con los siguientes parámetros: 
+ PolicyName: el nombre de la política de escalado. 
+ ResourceID: el identificador de recurso para el clúster. Para este parámetro, el tipo de recurso es ReplicationGroup y el identificador único es el nombre del clúster; por ejemplo, `replication-group/myscalablecluster`. 
+ ServiceNamespace: establezca este valor en elasticache. 
+ ScalableDimension: establezca este valor en `elasticache:replication-group:Replicas`. 

En el siguiente ejemplo, elimina una política de escalado de seguimiento de destino denominada `myscalablepolicy` de un clúster llamado `myscalablecluster` con la API de Application Auto Scaling. 

```
POST / HTTP/1.1
>>>>>>> mainline
Host: autoscaling.us-east-2.amazonaws.com
Accept-Encoding: identity
Content-Length: 219
X-Amz-Target: AnyScaleFrontendService.DeleteScalingPolicy
X-Amz-Date: 20160506T182145Z
User-Agent: aws-cli/1.10.23 Python/2.7.11 Darwin/15.4.0 botocore/1.4.8
Content-Type: application/x-amz-json-1.1
Authorization: AUTHPARAMS
{
    "PolicyName": "myscalablepolicy",
    "ServiceNamespace": "elasticache",
    "ResourceId": "replication-group/myscalablecluster",
    "ScalableDimension": "elasticache:replication-group:Replicas"
}
```

# Uso de CloudFormation para las políticas de Auto Scaling
<a name="AutoScaling-with-Cloudformation"></a>

Este fragmento muestra cómo crear una acción programada y aplicarla a un recurso [AWS::ElastiCache::ReplicationGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html) mediante el recurso [AWS::ApplicationAutoScaling::ScalableTarget](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html). Utiliza las funciones intrínsecas [Fn::Join](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-join.html) y [Ref](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html) para construir la propiedad `ResourceId` con el nombre lógico del recurso `AWS::ElastiCache::ReplicationGroup` especificado en la misma plantilla. 

```
ScalingTarget:
   Type: 'AWS::ApplicationAutoScaling::ScalableTarget'
   Properties:
     MaxCapacity: 0
     MinCapacity: 0
     ResourceId: !Sub replication-group/${logicalName}
     ScalableDimension: 'elasticache:replication-group:Replicas'
     ServiceNamespace: elasticache
     RoleARN: !Sub "arn:aws:iam::${AWS::AccountId}:role/aws-service-role/elasticache.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ElastiCacheRG"

  ScalingPolicy:
    Type: "AWS::ApplicationAutoScaling::ScalingPolicy"
    Properties:
      ScalingTargetId: !Ref ScalingTarget
      ServiceNamespace: elasticache
      PolicyName: testpolicy
      PolicyType: TargetTrackingScaling
      ScalableDimension: 'elasticache:replication-group:Replicas'
      TargetTrackingScalingPolicyConfiguration:
        PredefinedMetricSpecification:
          PredefinedMetricType: ElastiCacheReplicaEngineCPUUtilization
        TargetValue: 40
```

# Escalado programado
<a name="AutoScaling-with-Scheduled-Scaling-Replicas"></a>

El escalado según una programación le permite escalar la aplicación en respuesta a los cambios previstos en la demanda. Para utilizar el escalado programado, deberá crear acciones programadas, que indiquen a ElastiCache para Valkey y Redis OSS que realice actividades de escalado en momentos específicos. Cuando se crea una acción programada, se especifica un clúster de ElastiCache existente, cuando se debe producir la actividad de escalado, la capacidad mínima y la capacidad máxima. Puede crear acciones programadas que realizan el escalado de forma puntual o periódica. 

 Solo puede crear una acción programada para los clústeres de ElastiCache que ya existen. No puede crear una acción programada a la vez que crea un clúster.

A fin de obtener más información sobre la terminología de la creación, administración y eliminación de acciones programadas, consulte [Comandos de uso frecuente para la creación, administración y eliminación de acciones programadas](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-scheduled-scaling.html#scheduled-scaling-commonly-used-commands). 

**Para crear una acción programada puntual:**

Similar a la dimensión Shard (Partición). Consulte [Escalado programado](AutoScaling-with-Scheduled-Scaling-Shards.md).

**Para eliminar una acción programada**

Similar a la dimensión Shard (Partición). Consulte [Escalado programado](AutoScaling-with-Scheduled-Scaling-Shards.md).

**Para administrar el escalado programado mediante la AWS CLI**

Utilice las siguientes API de escalado automático de aplicaciones:
+ [put-scheduled-action](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scheduled-action.html) 
+ [describe-scheduled-actions](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/describe-scheduled-actions.html) 
+ [delete-scheduled-action](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/delete-scheduled-action.html) 

## Utilice CloudFormation para crear políticas de Auto Scaling
<a name="AutoScaling-with-Cloudformation-Update-Action"></a>

Este fragmento muestra cómo crear una acción programada y aplicarla a un recurso [AWS::ElastiCache::ReplicationGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html) mediante el recurso [AWS::ApplicationAutoScaling::ScalableTarget](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html). Utiliza las funciones intrínsecas [Fn::Join](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-join.html) y [Ref](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html) para construir la propiedad `ResourceId` con el nombre lógico del recurso `AWS::ElastiCache::ReplicationGroup` especificado en la misma plantilla. 

```
ScalingTarget:
   Type: 'AWS::ApplicationAutoScaling::ScalableTarget'
   Properties:
     MaxCapacity: 0
     MinCapacity: 0
     ResourceId: !Sub replication-group/${logicalName}
     ScalableDimension: 'elasticache:replication-group:Replicas'
     ServiceNamespace: elasticache
     RoleARN: !Sub "arn:aws:iam::${AWS::AccountId}:role/aws-service-role/elasticache.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ElastiCacheRG"
     ScheduledActions:
       - EndTime: '2020-12-31T12:00:00.000Z'
         ScalableTargetAction:
           MaxCapacity: '5'
           MinCapacity: '2'
         ScheduledActionName: First
         Schedule: 'cron(0 18 * * ? *)'
```

# Modificación del modo de clúster
<a name="modify-cluster-mode"></a>

Valkey y Redis OSS son bases de datos en memoria distribuidas que admiten las funciones de partición y replicación. Los clústeres de ElastiCache Valkey y Redis OSS son la implementación distribuida que permite particionar los datos en varios nodos. Un clúster de ElastiCache para Redis OSS tiene dos modos de funcionamiento, el modo de clúster habilitado (CME) y el modo de clúster desactivado (CMD). En el modo CME, un motor de Valkey y Redis OSS funciona como una base de datos distribuida con múltiples particiones y nodos, mientras que en el modo CMD, Valkey y Redis OSS funcionan como un solo nodo.

Antes de migrar de CMD a CME, deben cumplirse las siguientes condiciones:

**importante**  
La configuración del modo de clúster solo se puede cambiar del modo de clúster desactivado al modo de clúster habilitado. No es posible revertir esta configuración.
+ Es posible que el clúster solo tenga claves en la base de datos 0.
+ Las aplicaciones deben usar un cliente de Valkey o Redis OSS que sea capaz de usar el protocolo de clúster y un punto de conexión de configuración.
+ La conmutación por error automática debe estar habilitada en el clúster con un mínimo de 1 réplica.
+ La versión mínima del motor requerida para la migración es Valkey 7.2 y versiones posteriores o Redis OSS 7.0 y versiones posteriores.

Para migrar de CMD a CME, la configuración del modo de clúster solo se puede cambiar del modo de clúster desactivado al modo de clúster habilitado. Se trata de un procedimiento de dos pasos que garantiza la disponibilidad del clúster durante el proceso de migración.

**nota**  
Debe proporcionar un grupo de parámetros con una configuración habilitada para el clúster, es decir, el parámetro habilitado para el clúster se establece como `yes`. Si utiliza un grupo de parámetros predeterminado, ElastiCache para Redis OSS seleccionará automáticamente el grupo de parámetros predeterminado correspondiente con una configuración habilitada para clústeres. El valor del parámetro habilitado para el clúster se establece en `no` para un clúster de CMD. A medida que el clúster pasa al modo compatible, el valor del parámetro habilitado para el clúster se actualiza a `yes` como parte de la acción de modificación.   
Para obtener más información, consulte [Configuración de los parámetros de motor mediante grupos de parámetros de ElastiCache](ParameterGroups.md)

1. **Prepararse**: cree un clúster de CME de prueba y asegúrese de que la pila esté lista para trabajar con él. ElastiCache para Redis OSS no tiene forma de verificar si está preparado. Para obtener más información, consulte [Creación de un clúster para Valkey o Redis OSS](Clusters.Create.md).

1. **Modificar la configuración del clúster de CMD existente para que sea compatible con el modo de clúster**: en este modo, se implementará una única partición y ElastiCache para Redis OSS funcionará como un solo nodo, pero también como un solo clúster de partición. El modo compatible significa que la aplicación cliente puede usar cualquiera de los protocolos para comunicarse con el clúster. En este modo, las aplicaciones se deben volver a configurar para empezar a utilizar el protocolo del clúster de Valkey o Redis OSS y el punto de conexión de configuración. Para cambiar el modo de clúster de Valkey o Redis OSS al modo de clúster compatible, siga los pasos que se indican a continuación:
**nota**  
En el modo compatible, no se permiten otras operaciones de modificación, como el escalado y la versión del motor, para el clúster. Además, los parámetros (excluyendo `cacheParameterGroupName`) no se pueden modificar al definir el parámetro en modo clúster en la solicitud [ModifyReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroup.html). 

   1. Con la Consola de administración de AWS, consulte [Modificación de un grupo de reproducción](Replication.Modify.md) y configure el modo de clúster en **Compatible**

   1. Mediante la API, consulte [ModifyReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroup.html) y actualice el parámetro `ClusterMode` a `compatible`.

   1. Mediante la AWS CLI, consulte [modify-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-replication-group.html) y actualice el parámetro `cluster-mode` a `compatible`.

   Tras cambiar el modo de clúster de Valkey o Redis OSS al modo de clúster compatible, la API [DescribeReplicationGroups](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeReplicationGroups.html) devolverá el punto de conexión de configuración del clúster de ElastiCache para Redis OSS. El punto de conexión de configuración del clúster es un punto de conexión único que las aplicaciones pueden utilizar para conectarse al clúster. Para obtener más información, consulte [Búsqueda de puntos de conexión en ElastiCache](Endpoints.md).

1. **Modificar la configuración del clúster al modo de clúster habilitado**: una vez que el modo de clúster esté configurado como compatible con el modo de clúster, el segundo paso consiste en modificar la configuración del clúster para que esté habilitado el modo de clúster. En este modo, se ejecuta una única partición y los clientes ahora pueden escalar los clústeres o modificar otras configuraciones de clústeres.

   Para cambiar el modo de clúster a Habilitado, siga estos pasos:

   Antes de empezar, asegúrese de que los clientes de Valkey o Redis OSS hayan migrado al protocolo de clúster y de que el punto de conexión de la configuración del clúster no esté en uso.

   1. Con la Consola de administración de AWS, consulte [Modificación de un grupo de reproducción](Replication.Modify.md) y configure el modo de clúster en **Habilitado**.

   1. Mediante la API, consulte [ModifyReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroup.html) y actualice el parámetro `ClusterMode` a `enabled`.

   1. Mediante la AWS CLI, consulte [modify-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-replication-group.html) y actualice el parámetro `cluster-mode` a `enabled`.

   Tras cambiar el modo de clúster a habilitado, los puntos de conexión se configurarán según la especificación del clúster de Valkey o Redis OSS. La API [DescribeReplicationGroups](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeReplicationGroups.html) devolverá el parámetro del modo de clúster como `enabled` y los puntos de conexión del clúster que ahora están disponibles para que las aplicaciones los utilicen para conectarse al clúster.

   Tenga en cuenta que los puntos de conexión del clúster cambiarán una vez que el modo de clúster se cambie a habilitado. Asegúrese de actualizar las aplicaciones con los nuevos puntos de conexión.

También puede elegir la opción de volver al modo de clúster desactivado (CMD) desde el modo de clúster compatible y conservar las configuraciones originales.

**Modificar la configuración del clúster al modo de clúster desactivado desde el modo de clúster compatible**

1. Con la Consola de administración de AWS, consulte [Modificación de un grupo de reproducción](Replication.Modify.md) y configure el modo de clúster en **Deshabilitado**

1. Mediante la API, consulte [ModifyReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroup.html) y actualice el parámetro `ClusterMode` a `disabled`. 

1. Mediante la AWS CLI, consulte [modify-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-replication-group.html) y actualice el parámetro `cluster-mode` a `disabled`.

Tras cambiar el modo de clúster a desactivado, la API [DescribeReplicationGroups](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeReplicationGroups.html) devolverá el parámetro de modo de clúster como `disabled`.

# Replicación entre AWS regiones mediante almacenes de datos globales
<a name="Redis-Global-Datastore"></a>

**nota**  
Actualmente, el almacén de datos global solo está disponible para clústeres basados en nodos.

Al utilizar la función Global Datastore, puede trabajar con una replicación de clústeres de OSS de Valkey o Redis totalmente gestionada, rápida, fiable y segura en todas las regiones.AWS Con esta función, puede crear clústeres de réplicas de lectura entre regiones para permitir las lecturas de baja latencia y la recuperación ante desastres en todas las regiones.AWS

En las secciones siguientes, puede encontrar una descripción de cómo trabajar con almacenes de datos globales.

**Topics**
+ [Descripción general de](#Redis-Global-Data-Stores-Overview)
+ [Requisitos previos y limitaciones](Redis-Global-Datastores-Getting-Started.md)
+ [Uso de almacenes de datos globales (consola)](Redis-Global-Datastores-Console.md)
+ [Uso de almacenes de datos globales (CLI)](Redis-Global-Datastores-CLI.md)

## Descripción general de
<a name="Redis-Global-Data-Stores-Overview"></a>

Cada *almacén de datos global* es un conjunto de uno o más clústeres que se replican entre sí. 

Un almacén de datos global consta de lo siguiente:
+ **Clúster principal (activo)**: un clúster principal acepta escrituras que se replican en todos los clústeres dentro del almacén de datos global. Un clúster principal también acepta solicitudes de lectura. 
+ **Clúster secundario (pasivo)**: un clúster secundario solo acepta solicitudes de lectura y replica las actualizaciones de datos a partir de un clúster principal. Un clúster secundario debe estar en una AWS región diferente a la del clúster principal. 

Al crear un almacén de datos global ElastiCache para Valkey o Redis OSS, este replica automáticamente los datos del clúster principal al clúster secundario. Elija la AWS región en la que se deben replicar los datos de Valkey o Redis OSS y, a continuación, cree un clúster secundario en esa región.AWS ElastiCache a continuación, configura y gestiona la replicación automática y asíncrona de los datos entre los dos clústeres. 

El uso de un almacén de datos global de Valkey or Redis OSS ofrece las siguientes ventajas: 
+ **Rendimiento geolocal**: al configurar clústeres de réplicas remotas en AWS regiones adicionales y sincronizar los datos entre ellas, puede reducir la latencia del acceso a los datos en esa región.AWS Un almacén de datos global puede ayudar a aumentar la capacidad de respuesta de su aplicación al ofrecer lecturas geolocales de baja latencia en todas las regiones.AWS
+ **Recuperación de desastres**: si el clúster principal de un almacén de datos global experimenta una reducción, puede promocionar un clúster secundario como su clúster principal nuevo. Puede hacerlo conectándose a cualquier AWS región que contenga un clúster secundario.

El siguiente diagrama muestra cómo pueden funcionar los almacenes de datos globales.

![\[almacén de datos global\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/images/Global-DataStore.png)


# Requisitos previos y limitaciones
<a name="Redis-Global-Datastores-Getting-Started"></a>

Antes de comenzar con almacenes de datos globales, tenga en cuenta lo siguiente:
+ Los almacenes de datos globales se admiten en las siguientes regiones de AWS:
  + **África**: Ciudad del Cabo
  + **Asia-Pacífico**: Hong Kong, Hyderabad, Yakarta, Malasia, Melbourne, Mumbai, Osaka, Seúl, Singapur, Sídney, Tailandia y Tokio 
  + **Canadá**: Canadá centro y Oeste de Canadá (Calgary)
  + **China**: Pekín y Ningxia
  + **Europa**: Fráncfort, Londres, Irlanda, Milán, París, España, Estocolmo y Zúrich
  + **AWS GovCloud**: Oeste de EE. UU. y Este de EE. UU.
  + **Israel**: Tel Aviv
  + **Medio Oriente**: Baréin y Emiratos Árabes Unidos
  + **EE. UU.**: Este (Norte de Virginia y Ohio) y Oeste (Norte de California y Oregón)
  + **América del Sur**: México (centro) y São Paulo
+  Todos los clústeres (principal y secundario) del almacén de datos global deben tener el mismo número de nodos primarios, tipo de nodo, versión del motor y número de particiones (en caso de que el modo clúster se encuentre habilitado). Cada clúster del almacén de datos global puede tener un número distinto de réplicas de lectura para acomodar el tráfico de lectura local a dicho clúster. 

  La reproducción debe estar habilitada si tiene previsto utilizar un clúster de nodo único existente.
+ Los almacenes de datos globales se admiten en instancias de tamaño grande y superior.
+ Puede configurar la reproducción para un clúster principal desde una región de AWS a un clúster secundario en un máximo de otras dos regiones de AWS. 
**nota**  
La excepción a esto son las regiones de China (Pekín) y China (Ningxia), donde la reproducción solo puede ocurrir entre las dos regiones. 
+ Solo puede trabajar con almacenes de datos globales en clústeres de VPC. Para obtener más información, consulte [Patrones de acceso para obtener acceso a una caché de ElastiCache en una Amazon VPC](elasticache-vpc-accessing.md). Los almacenes de datos globales no se admiten cuando se utiliza EC2-Classic. Para obtener más información, consulte [EC2-Classic](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/ec2-classic-platform.html) en la *Guía del usuario de Amazon EC2*.
**nota**  
Por el momento, no puede utilizar almacenes de datos globales en [Uso de Local Zones con ElastiCache](Local_zones.md).
+ ElastiCache no admite la conmutación por error automática de una región de AWS a otra. Cuando sea necesario, puede promover manualmente un clúster secundario. Para ver un ejemplo, consulta [Promoción del clúster secundario a principal](Redis-Global-Datastores-Console.md#Redis-Global-Datastores-Console-Promote-Secondary). 
+ Para iniciar desde datos existentes, utilice un clúster existente como principal para crear un almacén de datos global. No se admite la adición de un clúster existente como secundario. El proceso de agregar el clúster como secundario borra datos, lo que puede provocar la pérdida de datos. 
+ Las actualizaciones de parámetros se aplican a todos los clústeres cuando se modifica un grupo de parámetros local de un clúster que pertenece a un almacén de datos global. 
+ Puede escalar los clústeres regionales tanto vertical (aumento y disminución) como horizontalmente (escalado ascendente y descendente). Puede escalar los clústeres modificando el almacén de datos global. A continuación, todos los clústeres regionales del almacén de datos global se escalan sin interrupción. Para obtener más información, consulte [Escalado ElastiCache](Scaling.md).
+ Los almacenes de datos globales admiten [cifrado en reposo](at-rest-encryption.md), [cifrado en tránsito](in-transit-encryption.md) y [AUTH](auth.md). 
+ Los almacenes de datos globales no admiten el protocolo de Internet versión 6 (IPv6).
+  Los almacenes de datos globales admiten claves de AWS KMS. Para obtener más información, consulte [Conceptos de servicios administrados de claves de AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys) en la *Guía para desarrolladores de AWS Key Management Service.* 

**nota**  
Los almacenes de datos globales admiten [mensajes de publicación/suscripción](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/elasticache-use-cases.html#elasticache-for-redis-use-cases-messaging) con las siguientes condiciones:  
Para el modo de clúster deshabilitado, se admite por completo la publicación/suscripción. Los eventos publicados en el clúster principal de la región de AWS principal se propagan a las regiones de AWS secundarias.
Para el modo de clúster habilitado, se aplica lo siguiente:  
En el caso de los eventos publicados que no se encuentran en un espacio de claves, solo los suscriptores de la misma región de AWS reciben los eventos.
En el caso de eventos de espacio de claves publicados, los suscriptores de todas las regiones de AWS reciben los eventos.

# Uso de almacenes de datos globales (consola)
<a name="Redis-Global-Datastores-Console"></a>

Para crear un almacén de datos global mediante la consola, siga este proceso de dos pasos:

1. Cree un clúster principal, ya sea mediante un clúster existente o creando un clúster nuevo. El motor debe ser Valkey 7.2 o una versión posterior, o Redis OSS 5.0.6 o una versión posterior.

1. Añada hasta dos clústeres secundarios en distintas regiones de AWS, utilizando de nuevo Valkey 7.2 o una versión posterior o Redis OSS 5.0.6 o una versión posterior.

Los siguientes procedimientos lo guían para crear un almacén de datos global para Valkey o Redis OSS y para realizar otras operaciones mediante la consola de ElastiCache.

**Topics**
+ [Creación de un almacén de datos global mediante un clúster existente](#Redis-Global-Datastores-Console-Create-Primary)
+ [Creación de un almacén de datos global nuevo mediante un clúster principal nuevo](#Redis-Global-Datastores-Create-From-Scratch)
+ [Visualización de detalles del almacén de datos global](#Redis-Global-Datastores-Console-Details)
+ [Adición de una región a un almacén de datos global](#Redis-Global-Datastores-Console-Create-Secondary)
+ [Modificación de un almacén de datos global](#Redis-Global-Datastores-Console-Modify-Regional-Clusters)
+ [Promoción del clúster secundario a principal](#Redis-Global-Datastores-Console-Promote-Secondary)
+ [Eliminación de una región de un almacén de datos global](#Redis-Global-Datastore-Console-Remove-Region)
+ [Eliminación de un almacén de datos global](#Redis-Global-Datastores-Console-Delete-GlobalDatastore)

## Creación de un almacén de datos global mediante un clúster existente
<a name="Redis-Global-Datastores-Console-Create-Primary"></a>

En esta situación, utilice un clúster existente que sirva como principal del nuevo almacén de datos global. A continuación, creará un clúster secundario de solo lectura en una región de AWS independiente. Este clúster secundario recibe actualizaciones automáticas y asincrónicas del clúster principal. 

**importante**  
El clúster existente debe utilizar un motor que sea Valkey 7.2 o posterior o Redis OSS 5.0.6 o posterior.

**Para crear un almacén de datos global mediante un clúster existente**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de ElastiCache en [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. En el panel de navegación, elija **Almacenes de datos globales** y, luego, elija **Crear almacén de datos global**.

1. En la página **Configuración del clúster principal**, haga lo siguiente:
   + En el campo **Información del almacén de datos global**, introduzca un nombre para el nuevo almacén de datos global. 
   + (Opcional) Introduzca un valor **Description (Descripción)**. 

1. En **Clúster regional**, seleccione **Usar clúster regional existente**.

1. En **Clúster existente**, seleccione el clúster existente que desea usar.

1. Mantenga las siguientes opciones tal como están. Se rellenan previamente para que coincidan con la configuración del clúster principal, no se pueden cambiar.
   + Versión del motor
   + Tipo de nodo
   + Grupo de parámetros
**nota**  
ElastiCache genera de forma automática un grupo de parámetros nuevo a partir de los valores del grupo de parámetros proporcionado y aplica el grupo de parámetros nuevo al clúster. Utilice este nuevo grupo de parámetros para modificar parámetros en un almacén de datos global. Cada grupo de parámetros generado automáticamente está asociado a un solo clúster y, por lo tanto, solo a un almacén de datos global.
   + Número de fragmentos
   + Encryption at rest (Cifrado en reposo): permite el cifrado de los datos almacenados en el disco. Para obtener más información, consulte [Cifrado en reposo](at-rest-encryption.md).
**nota**  
Puede suministrar una clave de cifrado distinta al elegir la **Clave de AWS KMS administrada por el cliente** y, a continuación elija la clave. Para obtener más información, consulte [Uso de claves de AWS KMS administradas por el cliente](at-rest-encryption.md#using-customer-managed-keys-for-elasticache-security).
   + Encryption in-transit (Cifrado en tránsito): permite el cifrado de datos del cable. Para obtener más información, consulte [Cifrado en tránsito](in-transit-encryption.md). Para Valkey 7.2 en adelante y Redis OSS 6.0 en adelante, si habilita el cifrado en tránsito, se le pedirá que especifique una de las siguientes opciones de **Control de acceso**:
     + **No Access Control** (Sin control de acceso): este es el valor predeterminado. Esto indica que no hay restricciones.
     + **Lista de control de acceso (ACL) de grupos de usuarios**: elija un grupo de usuarios con un conjunto definido de usuarios y permisos para las operaciones disponibles. Para obtener más información, consulte [Administración de grupos de usuarios con la consola y la CLI](Clusters.RBAC.md#User-Groups).
     + **Usuario predeterminado con el comando AUTH**: un mecanismo de autenticación para el servidor de Valkey o Redis OSS. Para obtener más información, consulte [AUTH](auth.md).

1. (Opcional) Según sea necesario, actualice la configuración del clúster secundario restante. Estos se rellenan previamente con los mismos valores que el clúster principal, pero puede actualizarlos para que cumplan los requisitos específicos de ese clúster.
   + Puerto
   + Número de réplicas
   + Grupo de subredes
   + Zonas de disponibilidad preferidas
   + Grupos de seguridad
   + Clave administrada por el cliente (clave de AWS KMS)
   + Token de AUTH
   + Habilitar copias de seguridad automáticas
   + Backup retention period
   + Intervalo de copia de seguridad
   + Periodo de mantenimiento
   + Tema para la notificación de SNS

1. Seleccione **Crear**. Al hacerlo, se establece el estado del almacén de datos global en **Creating (Creando)**. El estado pasa a **Modifying (Modificando)** después de que el clúster principal esté asociado al almacén de datos global y el clúster secundario esté en estado **Associating (Asociando)**.

   Una vez que el clúster principal y los clústeres secundarios se asocian al almacén de datos global, el estado cambia a **Available (Disponible)**. En este punto, tiene un clúster principal que acepta lecturas y escrituras y clústeres secundarios que aceptan lecturas replicadas desde el clúster principal.

   La página se actualiza para indicar si un clúster forma parte de un almacén de datos global, lo que incluye:
   + **Almacén de datos global**: el nombre del almacén de datos global al que pertenece el clúster.
   + **Rol del almacén de datos global**: el rol del clúster, ya sea principal o secundario.

Puede agregar hasta un clúster secundario adicional en una región de AWS diferente. Para obtener más información, consulte [Adición de una región a un almacén de datos global](#Redis-Global-Datastores-Console-Create-Secondary).

## Creación de un almacén de datos global nuevo mediante un clúster principal nuevo
<a name="Redis-Global-Datastores-Create-From-Scratch"></a>

Si decide crear un almacén de datos global con un clúster nuevo, utilice el siguiente procedimiento. 

1. Inicie sesión en la Consola de administración de AWS y abra la consola de ElastiCache en [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. En el panel de navegación, elija **Almacenes de datos globales** y, luego, elija **Crear almacén de datos global**.

1. En **Primary cluster settings** (Configuración de clúster principal), realice la siguiente operación:

   1. Para **Cluster mode** (Modo clúster), elija **Enabled** (Habilitado) o **Disabled** (Desactivado).

   1. Para **Global Datastore info** (Información del almacén de datos global) ingrese un valor para **Name** (Nombre). ElastiCache utiliza el sufijo para generar un nombre único para el almacén de datos global. Puede buscar el almacén de datos global utilizando el sufijo que especifique aquí.

   1. (Opcional) Escriba un valor para **Global Datastore Description (Descripción de almacén de datos global)**.

1. En **Regional cluster** (Clúster regional):

   1. Para **Region** (Región), elija una región de AWS disponible.

   1. Elija **Create new regional cluster** (Crear un nuevo clúster regional) o **Use existing regional cluster** (Utilizar el clúster regional existente)

   1. Si elige **Create new regional cluster** (Crear un nuevo clúster regional), en **Cluster info** (Información sobre clúster), introduzca un nombre y una descripción opcional del clúster.

   1. En **Location** (Ubicación), le recomendamos que acepte la configuración predeterminada de **Multi-AZ** y **Auto-failover** (Conmutación por error automática).

1. En **Cluster settings** (Configuración del clúster)

   1. Para **Engine version** (Versión del motor), elija una versión disponible, que sea 5.0.6 o una versión posterior.

   1. En **Port** (Puerto), utilice el puerto predeterminado, 6379. Si tiene un motivo para utilizar un puerto diferente, escriba el número de puerto.

   1. En **Grupo de parámetros**, elija un grupo de parámetros o cree uno nuevo. Los grupos de parámetros controlan los parámetros de tiempo de ejecución de su clúster. Para obtener más información acerca de los grupos de parámetros, consulte [Parámetros de Valkey y Redis OSS](ParameterGroups.Engine.md#ParameterGroups.Redis) y [Creación de un grupo de parámetros de ElastiCache](ParameterGroups.Creating.md).
**nota**  
Cuando se selecciona un grupo de parámetros para definir los valores de configuración del motor, dicho grupo de parámetros se aplica a todos los clústeres del almacén de datos global. En la página **Parameter Groups (Grupos de parámetros)**, el atributo **Global** sí/no, indica si un grupo de parámetros forma parte de un almacén de datos global.

   1. Para **Node type**, elija la flecha hacia abajo (![\[Downward-pointing triangle icon, typically used to indicate a dropdown menu.\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/images/ElastiCache-DnArrow.png)). En el cuadro de diálogo **Cambiar tipo de nodo**, elija un valor para **Familia de instancias** para el tipo de nodo que desea. A continuación, elija el tipo de nodo que desea utilizar para este clúster y, a continuación, elija **Guardar**.

      Para obtener más información, consulte [Elección del tamaño del nodo](CacheNodes.SelectSize.md).

      Si elige un tipo de nodo r6gd, 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).

   1. Si está creando un clúster de Valkey o Redis OSS (modo de clúster deshabilitado):

      Para **Number of replicas** (Número de réplicas), elija el número de réplicas que desea para este clúster.

   1. Si está creando un clúster de Valkey or Redis OSS (modo de clúster habilitado):

      1. En **Número de particiones**, elija el número de particiones (particiones/grupos de nodos) que desea para este clúster de Valkey o Redis OSS (modo de clúster habilitado).

         En algunas versiones de Valkey o Redis OSS (modo de clúster habilitado), puede cambiar dinámicamente el número de particiones del clúster:
         + **Redis OSS 3.2.10 y versiones posteriores**: si el clúster ejecuta Redis OSS 3.2.10 o versiones posteriores, puede cambiar el número de particiones del clúster de forma dinámica. Para obtener más información, consulte [Escalado de clústeres de Valkey o Redis OSS (modo de clúster habilitado)](scaling-redis-cluster-mode-enabled.md).
         + **Otras versiones de Redis OSS**: si su clúster ejecuta una versión de Redis OSS anterior a 3.2.10, existe otro enfoque. Para cambiar el número de particiones del clúster en este caso, cree un nuevo clúster con el nuevo número de particiones. Para obtener más información, consulte [Restauración desde una copia de seguridad a una nueva caché](backups-restoring.md).

      1. En **Réplicas por partición**, elija el número de nodos de réplica de lectura que desea en cada partición.

         Existen las siguientes restricciones para Valkey o Redis OSS (modo de clúster habilitado).
         + Si tiene habilitado Multi-AZ, asegúrese de tener al menos una réplica por partición.
         + El número de réplicas es el mismo para cada fragmento al crear el clúster utilizando la consola.
         + El número de réplicas de lectura por fragmento es fijo y no puede modificarse. Si se da cuenta de que necesita más o menos réplicas por fragmento (API/CLI: grupo de nodos), debe crear un nuevo clúster con el nuevo número de réplicas. Para obtener más información, consulte [Tutorial: propagación de un nuevo clúster basado en nodos con una copia de seguridad creada externamente](backups-seeding-redis.md).

1. Para **Subnet group settings** (Configuración de grupos de subredes), elija la subred que desea aplicar a este clúster. ElastiCache proporciona un grupo de subredes IPv4 predeterminado o puede optar por crear uno nuevo. Para IPv6, debe crear un grupo de subred con un bloque de CIDR IPv6. Si elige **dual stack** (doble pila), debe seleccionar un tipo de IP de detección, IPv6 o IPv4.

   Para obtener más información, consulte [Creación de una subred en la VPC](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#AddaSubnet).

1. En **Availability zone placements** Ubicaciones de las zonas de disponibilidad), tiene dos opciones:
   + **No preference (Sin preferencia)**: ElastiCache elige la zona de disponibilidad.
   + **Specify availability zones** (Especificar zonas de disponibilidad): especifique la zona de disponibilidad para cada clúster.

     Si decide especificar las zonas de disponibilidad, para cada clúster en cada fragmento, elija la zona de disponibilidad de la lista.

   Para obtener más información, consulte [Elección de regiones y zonas de disponibilidad para ElastiCache](RegionsAndAZs.md).  
![\[Imagen: especificación de espacios de nombres y zonas de disponibilidad\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/images/ElastiCache-ClusterOn-Slots-AZs.png)

   *Especificación de espacios de nombres y zonas de disponibilidad*

1. Elija **Next** (Siguiente).

1. En **Configuración avanzada de Valkey y Redis OSS**

   1. Para **Security** (Seguridad): 

     1. Para cifrar sus datos, tiene las siguientes opciones:
        + **Encryption at rest** (Cifrado en reposo): permite el cifrado de los datos almacenados en el disco. Para obtener más información, consulte [Cifrado en reposo](at-rest-encryption.md).
**nota**  
Tiene la opción de suministrar una clave de cifrado distinta al elegir **Customer Managed AWS KMS key** (Clave KMS de administrada por el cliente) y elegir la clave. Para obtener más información, consulte [Uso de claves de AWS KMS administradas por el cliente](at-rest-encryption.md#using-customer-managed-keys-for-elasticache-security).
        + **Encryption in-transit** (Cifrado en tránsito): permite el cifrado de datos del cable. Para obtener más información, consulte [Cifrado en tránsito](in-transit-encryption.md). Para Valkey 7.2 y versiones posteriores o Redis OSS 6.0 y versiones posteriores, si habilita el cifrado en tránsito, se le pedirá que especifique una de las siguientes opciones de **Control de acceso**:
          + **No Access Control** (Sin control de acceso): este es el valor predeterminado. Esto indica que no hay restricciones en el acceso de los usuarios al clúster.
          + **User Group Access Control List** (Lista de control de acceso del grupo de usuarios): seleccione un grupo de usuarios con un conjunto definido de usuarios que pueden acceder al clúster. Para obtener más información, consulte [Administración de grupos de usuarios con la consola y la CLI](Clusters.RBAC.md#User-Groups).
          + **Usuario predeterminado con el comando AUTH**: un mecanismo de autenticación para el servidor de Valkey o Redis OSS. Para obtener más información, consulte [AUTH](auth.md).
        + **AUTH**: un mecanismo de autenticación para un servidor de Valkey o Redis OSS. Para obtener más información, consulte [AUTH](auth.md).
**nota**  
Para las versiones de Redis OSS a partir de la 3.2.6, excepto la versión 3.2.10, AUTH es la única opción.

     1. En **Grupos de seguridad**, elija los grupos de seguridad que desea para este clúster. Un *grupo de seguridad* actúa como un firewall para controlar el acceso de red al clúster. Puede utilizar el grupo de seguridad predeterminado para la VPC o crear uno nuevo.

        Para obtener más información sobre los grupos de seguridad, consulte [Grupos de seguridad de su VPC](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) en la *Guía del usuario de Amazon VPC*.

1. En las copias de seguridad automáticas programadas regularmente, seleccione **Enable automatic backups** (Habilitar copias de seguridad automáticas) y, a continuación, escriba el número de días que desea conservar cada copia de seguridad automática antes de que se elimine automáticamente. Si no quiere tener copias de seguridad automáticas programadas regularmente, desactive la casilla de verificación **Enable automatic backups (Habilitar copias de seguridad automáticas)**. En cualquier caso, siempre tendrá la opción de crear copias de seguridad manuales.

   Para obtener más información acerca de la copia de seguridad y restauración, consulte [Instantánea y restauración](backups.md).

1. (Opcional) Especifique un periodo de mantenimiento. El *periodo de mantenimiento* hace alusión al tiempo, generalmente una hora, de cada semana en la que ElastiCache programa el mantenimiento del sistema en su clúster. Puede permitir que ElastiCache elija el día y la hora de su periodo de mantenimiento (*No preference* [Sin preferencia]), o bien puede elegir el día, la hora y la duración por su cuenta (*Specify maintenance window* [Especificar periodo de mantenimiento]). Si elige *Especificar el periodo de mantenimiento* en las listas, seleccione *Día de inicio*, *Hora de inicio* y *Duración* (en horas) para el periodo de mantenimiento. Todas las horas se indican en UCT.

   Para obtener más información, consulte [Administración del mantenimiento de clústeres de ElastiCache](maintenance-window.md).

1. (Opcional) Para **Logs** (Registros):
   + En **Log format** (Formato de registro), elija **Text** o **JSON**.
   + En **Destination Type** (Tipo de destino), elija **CloudWatch Logs** o **Kinesis Firehose**.
   + En **Destino de registro**, elija **Crear nuevo** e introduzca el nombre del grupo de registro de Registros de CloudWatch o el nombre del flujo de Firehose, o elija **Seleccionar existente** y, a continuación, elija el nombre del grupo de registro de Registros de CloudWatch o el nombre del flujo de Firehose.

1. Para **Tags** (Etiquetas), para ayudarlo a administrar sus clústeres y otros recursos de ElastiCache, puede asignar sus propios metadatos a cada recurso en forma de etiquetas. Para obtener más información, consulte [Etiquetar sus recursos ElastiCache](Tagging-Resources.md).

1. Revise todas las entradas y opciones y, a continuación, realice todos los cambios necesarios. Cuando esté preparado para continuar, seleccione **Next** (Siguiente).

1. Una vez que haya configurado el clúster en los pasos anteriores, configure los detalles de clúster secundario.

1. En **Regional cluster** (Clúster regional), elija la región de AWS en la que se encuentra el clúster.

1. En **Cluster info** (Información sobre clúster), introduzca un nombre y una descripción opcional del clúster.

1. Las siguientes opciones se rellenan previamente para que coincidan con la configuración del clúster principal y no se pueden cambiar:
   + Ubicación
   + Versión del motor
   + Tipo de instancia
   + Tipo de nodo
   + Número de fragmentos
   + Grupo de parámetros
**nota**  
ElastiCache genera de forma automática un grupo de parámetros nuevo a partir de los valores del grupo de parámetros proporcionado y aplica el grupo de parámetros nuevo al clúster. Utilice este nuevo grupo de parámetros para modificar parámetros en un almacén de datos global. Cada grupo de parámetros generado automáticamente está asociado a un solo clúster y, por lo tanto, solo a un almacén de datos global.
   + Encryption at rest (Cifrado en reposo): permite el cifrado de los datos almacenados en el disco. Para obtener más información, consulte [Cifrado en reposo](at-rest-encryption.md).
**nota**  
Puede suministrar una clave de cifrado distinta al elegir la **Clave de AWS KMS administrada por el cliente** y, a continuación elija la clave. Para obtener más información, consulte [Uso de claves de AWS KMS administradas por el cliente](at-rest-encryption.md#using-customer-managed-keys-for-elasticache-security).
   + Encryption in-transit (Cifrado en tránsito): permite el cifrado de datos del cable. Para obtener más información, consulte [Cifrado en tránsito](in-transit-encryption.md). Para Valkey 7.2 y versiones posteriores o Redis OSS 6.4 y versiones posteriores, si habilita el cifrado en tránsito, se le pedirá que especifique una de las siguientes opciones de **Control de acceso**:
     + **No Access Control** (Sin control de acceso): este es el valor predeterminado. Esto indica que no hay restricciones en el acceso de los usuarios al clúster.
     + **User Group Access Control List** (Lista de control de acceso del grupo de usuarios): elija un grupo de usuarios con un conjunto definido de usuarios que pueden acceder al clúster. Para obtener más información, consulte [Administración de grupos de usuarios con la consola y la CLI](Clusters.RBAC.md#User-Groups).
     + **Usuario predeterminado con el comando AUTH**: un mecanismo de autenticación para el servidor de Valkey o Redis OSS. Para obtener más información, consulte [AUTH](auth.md).
**nota**  
Para las versiones de Redis OSS comprendidas entre la 4.0.2, cuando se admitió el cifrado en tránsito por primera vez, y la 6.0.4, AUTH es la única opción.

   La configuración de clúster secundario restante se rellena previamente con los mismos valores que el clúster principal, pero se puede actualizar lo siguiente para cumplir los requisitos específicos de dicho clúster:
   + Puerto
   + Número de réplicas
   + Grupo de subredes
   + Zonas de disponibilidad preferidas 
   + Grupos de seguridad
   + Clave administrada por el cliente (clave de AWS KMS) 
   + Token de AUTH
   + Habilitar copias de seguridad automáticas
   + Backup retention period
   + Intervalo de copia de seguridad
   + Periodo de mantenimiento
   + Tema para la notificación de SNS

1. Seleccione **Crear**. Esto establece el estado del almacén de datos global en **Creating (Creando)**. Una vez que el clúster principal y los clústeres secundarios se asocian al almacén de datos global, el estado cambia a **Available (Disponible)**. Tiene un clúster principal que acepta lecturas y escrituras y un clúster secundario que acepta lecturas replicadas desde el clúster principal.

   La página también se actualiza para indicar si un clúster forma parte de un almacén de datos global, incluido lo siguiente:
   + **Almacén de datos global**: el nombre del almacén de datos global al que pertenece el clúster.
   + **Rol del almacén de datos global**: el rol del clúster, ya sea principal o secundario.

Puede agregar hasta un clúster secundario adicional en una región de AWS diferente. Para obtener más información, consulte [Adición de una región a un almacén de datos global](#Redis-Global-Datastores-Console-Create-Secondary).

## Visualización de detalles del almacén de datos global
<a name="Redis-Global-Datastores-Console-Details"></a>

Puede ver los detalles de los almacenes de datos globales existentes y modificarlos también en la página **Almacén de datos global**.

**Para ver los detalles del almacén de datos global**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de ElastiCache en [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. En el panel de navegación, elija **Almacén de datos global** y, a continuación, elija un almacén de datos global disponible.

A continuación, puede examinar las siguientes propiedades globales del almacén de datos:
+ **Global Datastore Name (Nombre del almacén de datos global):** el nombre del almacén de datos global
+ **Description (Descripción):** una descripción del almacén de datos global
+ **Status (Estado)**: las opciones son:
  + Creación
  + Modificar
  + Disponible
  + Eliminación
  + Solo principal: este estado indica que el almacén de datos global contiene solo un clúster principal. Todos los clústeres secundarios se eliminan o no se crean correctamente.
+ **Cluster Mode (Modo de clúster):** habilitado o deshabilitado
+ **Versión del motor:** la versión del motor de Valkey o Redis OSS que ejecuta el almacén de datos global
+ **Instance Node Type (Tipo de nodo de instancia):** el tipo de nodo utilizado para el almacén de datos global
+ **Encryption at-rest (Cifrado en reposo):** habilitado o deshabilitado
+ **Encryption in-transit (Cifrado en tránsito):** habilitado o deshabilitado
+ **AUTH:** habilitado o deshabilitado

Puede realizar los siguientes cambios en el almacén de datos global:
+ [Adición de una región a un almacén de datos global](#Redis-Global-Datastores-Console-Create-Secondary) 
+ [Eliminación de una región de un almacén de datos global](#Redis-Global-Datastore-Console-Remove-Region) 
+ [Promoción del clúster secundario a principal](#Redis-Global-Datastores-Console-Promote-Secondary)
+ [Modificación de un almacén de datos global](#Redis-Global-Datastores-Console-Modify-Regional-Clusters)

La página Global Datastore también muestra los clústeres individuales que componen el almacén de datos global y las siguientes propiedades para cada uno de ellos:
+ **Región**: la región de AWS donde se almacena el clúster
+ **Role (Rol)**: primario o secundario
+ **Cluster name (Nombre del clúster)**: el nombre del clúster
+ **Status (Estado)**: las opciones son:
  + **Associating (Asociando)**: el clúster está en proceso de asociarse al almacén de datos global
  + **Associated (Asociado)**: el clúster está asociado al almacén de datos global
  + **Disassociating (Desasociando)**: proceso de eliminación de un clúster secundario del almacén de datos global mediante el nombre del almacén de datos global. Después de esto, el clúster secundario ya no recibe actualizaciones del clúster principal, sino que permanece como clúster independiente en esa región de AWS.
  + **Desasociado**: el clúster secundario se ha eliminado del almacén de datos global y ahora es un clúster independiente en su región de AWS.
+ **Retraso en la réplica del almacén de datos global**: muestra un valor por región de AWS secundaria en el almacén de datos global. Es el retraso entre el nodo primario de la región secundaria y el nodo primario de la región principal. Para Valkey o Redis OSS en modo de clúster habilitado, el retraso indica el retardo máximo entre las particiones. 

## Adición de una región a un almacén de datos global
<a name="Redis-Global-Datastores-Console-Create-Secondary"></a>

Puede agregar hasta una región de AWS adicional a un almacén de datos global existente. En esta situación, crea un clúster de solo lectura en una región de AWS independiente que recibe actualizaciones automáticas y asíncronas del clúster principal.

**Para agregar una región de AWS a un almacén de datos global**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de ElastiCache en [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. En el panel de navegación, elija **Almacenes de datos globales** y, a continuación, elija un almacén de datos global existente.

1. Elija **Agregar clúster regional** y luego la región de AWS donde residirá el clúster secundario.

1. En **Información del clúster**, escriba un valor en **Nombre** y, de manera opcional, en **Descripción** para el clúster.

1. Mantenga las siguientes opciones tal como están. Se rellenan previamente para que coincidan con la configuración del clúster principal y no se pueden cambiar.
   + Versión del motor
   + Tipo de instancia
   + Tipo de nodo
   + Número de fragmentos
   + Grupo de parámetros
**nota**  
ElastiCache genera de forma automática un grupo de parámetros nuevo a partir de los valores del grupo de parámetros proporcionado y aplica el grupo de parámetros nuevo al clúster. Utilice este nuevo grupo de parámetros para modificar parámetros en un almacén de datos global. Cada grupo de parámetros generado automáticamente está asociado a un solo clúster y, por lo tanto, solo a un almacén de datos global.
   + Cifrado en reposo
**nota**  
Puede suministrar una clave de cifrado distinta al elegir la **Clave de AWS KMS administrada por el cliente** y, a continuación elija la clave.
   + Cifrado en tránsito
   + AUTH

1. (Opcional) Actualice la configuración del clúster secundario restante. Esta se rellena previamente con los mismos valores que el clúster principal, pero puede actualizarlos para que cumplan los requisitos específicos de ese clúster:
   + Puerto
   + Número de réplicas
   + Grupo de subredes
   + Zonas de disponibilidad preferidas
   + Grupos de seguridad
   + Clave de AWS KMS administrada por el cliente 
   + Token de AUTH
   + Habilitar copias de seguridad automáticas
   + Backup retention period
   + Intervalo de copia de seguridad
   + Periodo de mantenimiento
   + Tema para la notificación de SNS

1. Elija **Agregar**.

## Modificación de un almacén de datos global
<a name="Redis-Global-Datastores-Console-Modify-Regional-Clusters"></a>

Puede modificar las propiedades de los clústeres regionales. Solo puede haber una operación de modificación en curso en un almacén de datos global, con la excepción de la promoción de un clúster secundario a principal. Para obtener más información, consulte [Promoción del clúster secundario a principal](#Redis-Global-Datastores-Console-Promote-Secondary).

**Para modificar un almacén de datos global**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de ElastiCache en [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. En el panel de navegación, elija **Almacenes de datos globales** y, a continuación, en **Nombre del almacén de datos global**, elija un almacén de datos global.

1. Elija **Modify (Modificar)** y elija entre las siguientes opciones:
   + **Modificar descripción:** actualice la descripción del almacén de datos global
   + **Modificar versión del motor**: solo están disponibles Valkey 7.2 y versiones posteriores o Redis OSS 5.0.6 y versiones posteriores.
   + **Modificar tipo de nodo**: escale los clústeres regionales tanto de forma vertical (reducción y escalado vertical) como horizontal (escalado y reducción horizontal). Las opciones incluyen las familias de nodos R5 y M5. Para obtener más información acerca de los tipos de nodos, consulte [Tipos de nodos compatibles](CacheNodes.SupportedTypes.md).
   + **Modificar la conmutación por error automática**: habilite o deshabilite la conmutación por error automática. Cuando habilita la conmutación por error y los nodos primarios de los clústeres regionales se desconectan de forma inesperada, ElastiCache conmuta por error a una de las réplicas regionales. Para obtener más información, consulte [Conmutación por error automática](AutoFailover.md).

   Para clústeres de Valkey o Redis OSS con el modo de clúster habilitado:
   + **Agregar particiones**: ingrese el número de particiones que desea agregar y, opcionalmente, especifique una o varias zonas de disponibilidad.
   + **Eliminar particiones**: elija particiones que se eliminarán en cada región de AWS.
   + **Particiones de reequilibrio**: reequilibre la distribución de las ranuras para garantizar una distribución uniforme entre las particiones existentes en el clúster. 

A fin de modificar los parámetros de un almacén de datos global, modifique el grupo de parámetros de cualquier clúster de miembros para el almacén de datos global. ElastiCache aplica este cambio a todos los clústeres de ese almacén de datos global de forma automática. Para modificar el grupo de parámetros de ese clúster, utilice la consola de Valkey o Redis OSS o la operación de la API [ModifyCacheCluster](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyCacheCluster.html). Para obtener más información, consulte [Modificación de un grupo de parámetros de ElastiCache](ParameterGroups.Modifying.md). Cuando modifica el grupo de parámetros de cualquier clúster contenido en un almacén de datos global, se aplica a todos los clústeres dentro de ese almacén de datos global.

Para restablecer un grupo de parámetros completo o parámetros específicos, utilice la operación de la API [ResetCacheParameterGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ResetCacheParameterGroup.html).

## Promoción del clúster secundario a principal
<a name="Redis-Global-Datastores-Console-Promote-Secondary"></a>

Si el clúster principal o la región de AWS no se encuentran disponibles o tiene problemas de rendimiento, puede promover un clúster secundario a principal. La promoción está permitida en cualquier momento, incluso si hay otras modificaciones en curso. También puede emitir varias promociones en paralelo y el almacén de datos global se resuelve al final en uno principal. Si promociona varios clústeres secundarios de forma simultánea, ElastiCache no garantiza cuál se resuelve en última instancia en el principal.

**Para promover un clúster secundario a principal**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de ElastiCache en [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. En el panel de navegación, elija **Almacenes de datos globales**.

1. Elija el nombre del almacén de datos global para ver los detalles.

1. Elija el clúster **Secondary** (Secundario).

1. Elija **Promote to primary (Promocionar a principal)**.

   A continuación, se pedirá que confirme su decisión con la siguiente advertencia: ` Promoting a region to primary will make the cluster in this region as read/writable. Are you sure you want to promote the secondary cluster to primary?`

   `The current primary cluster in primary region will become secondary and will stop accepting writes after this operation completes. Please ensure you update your application stack to direct traffic to the new primary region.`

1. Seleccione **Confirm (Confirmar)** si desea continuar la promoción o **Cancel (Cancelar)** si no lo desea.

Si opta por confirmar, el almacén de datos global pasará a un estado **Modifying (Modificando)** y no estará disponible hasta que se complete la promoción.

## Eliminación de una región de un almacén de datos global
<a name="Redis-Global-Datastore-Console-Remove-Region"></a>

Puede quitar una región de AWS de un almacén de datos global mediante el siguiente procedimiento.

**Para eliminar una región de AWS de un almacén de datos global**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de ElastiCache en [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. En el panel de navegación, elija **Almacenes de datos globales**.

1. Elija un almacén de datos global.

1. Seleccione la **Region (Región)** que desea eliminar.

1. Elija **Remove region (Quitar región)**.
**nota**  
Esta opción solo está disponible para clústeres secundarios. 

   A continuación, se le pedirá que confirme su decisión con la siguiente advertencia: ` Removing the region will remove your only available cross region replica for the primary cluster. Your primary cluster will no longer be set up for disaster recovery and improved read latency in remote region. Are you sure you want to remove the selected region from the global datastore?`

1. Seleccione **Confirm (Confirmar)** si desea continuar la promoción o **Cancel (Cancelar)** si no lo desea.

Si elige confirmar, se eliminará la región de AWS y el clúster secundario dejará de recibir actualizaciones de reproducción.

## Eliminación de un almacén de datos global
<a name="Redis-Global-Datastores-Console-Delete-GlobalDatastore"></a>

Para eliminar un almacén de datos global, quite primero todos los clústeres secundarios. Para obtener más información, consulte [Eliminación de una región de un almacén de datos global](#Redis-Global-Datastore-Console-Remove-Region). Al hacerlo, el almacén de datos global se encuentra en estado **primary-only (solo principal)**. 

**Para eliminar un almacén de datos global**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de ElastiCache en [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. En el panel de navegación, elija **Almacenes de datos globales**.

1. En **Global Datastore Name (Nombre del almacén de datos global)**, elija el almacén de datos que desea eliminar y, a continuación, elija **Delete (Eliminar)**.

   A continuación, se le pedirá que confirme su decisión con la siguiente advertencia: `Are you sure you want to delete this Global Datastore?`

1. Elija **Eliminar**.

El almacén de datos global pasa al estado **Deleting (Eliminando)**.

# Uso de almacenes de datos globales (CLI)
<a name="Redis-Global-Datastores-CLI"></a>

Puede usar la AWS Command Line Interface (AWS CLI) para controlar varios servicios de AWS desde la línea de comandos y automatizarlos mediante scripts. Puede utilizar la AWS CLI para operaciones ad hoc (únicas). 

## Descarga y configuración de la AWS CLI
<a name="Redis-Global-Datastores-Downloading-CLI"></a>

La AWS CLI se ejecuta en Windows, macOS o Linux. Utilice el siguiente procedimiento para descargarlo y configurarlo.

**Para descargar, instalar y configurar la CLI**

1. Descargue la CLI de AWS en la página web de [Interfaz de línea de comandos de AWS](https://aws.amazon.com/cli).

1. Siga las instrucciones para instalar la AWS CLI y configurar la AWS CLI en la *Guía del usuario de la AWS Command Line Interface*.

## Uso de la AWS CLI con almacenes de datos globales
<a name="Redis-Global-Datastores-Using-CLI"></a>

Utilice las siguientes operaciones de la CLI para trabajar con almacenes de datos globales: 
+ [create-global-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/create-global-replication-group.html)

  ```
  aws elasticache create-global-replication-group \
     --global-replication-group-id-suffix my global datastore  \
     --primary-replication-group-id sample-repl-group  \
     --global-replication-group-description an optional description of the global datastore
  ```

  Amazon ElastiCache aplica de forma automática un prefijo al ID de almacén de datos global en el momento de la creación. Cada región de AWS tiene su propio prefijo. Por ejemplo, un ID de almacén de datos global creado en la región de oeste de EE. UU. (Norte de California) comienza con “virxk” junto con el nombre del sufijo que proporcione. El sufijo, en conjunto con el prefijo autogenerado, garantiza la exclusividad del nombre del almacén de datos global en varias regiones. 

  En la siguiente tabla se enumera cada región de AWS y su prefijo de ID de almacén de datos global.

    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/Redis-Global-Datastores-CLI.html)
+  [create-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/create-replication-group.html): utilice esta operación con el fin de crear clústeres secundarios para un almacén de datos global al proporcionar el nombre del almacén de datos global al parámetro `--global-replication-group-id`.

  ```
  aws elasticache create-replication-group \
    --replication-group-id secondary replication group name \
    --replication-group-description “Replication group description" \
    --global-replication-group-id global datastore name
  ```

  Al llamar a esta operación y pasar un valor de `--global-replication-group-id`, ElastiCache deducirá los valores del grupo de replicación principal del grupo de replicación global para los siguientes parámetros. No ingrese valores para estos parámetros:

  `"PrimaryClusterId",`

  `"AutomaticFailoverEnabled",`

  ` "NumNodeGroups",`

  ` "CacheParameterGroupName",`

  ` "CacheNodeType",`

  ` "Engine",`

  ` "EngineVersion",`

  ` "CacheSecurityGroupNames",`

  ` "EnableTransitEncryption",`

  ` "AtRestEncryptionEnabled",`

  ` "SnapshotArns",`

  ` "SnapshotName"`
+ [describe-global-replication-groups](https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-global-replication-groups.html)

  ```
  aws elasticache describe-global-replication-groups \
     --global-replication-group-id my global datastore  \
     --show-member-info an optional parameter that returns a list of the primary and secondary clusters that make up the global datastore
  ```
+ [modify-global-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-global-replication-group.html)

  ```
  aws elasticache modify-global-replication-group \
     --global-replication-group-id my global datastore  \
     --automatic-failover-enabled \
     --cache-node-type node type \
     --cache-parameter-group-name parameter group name \ 
     --engine-version engine version \
     -—apply-immediately \
     --global-replication-group-description description
  ```

  **Actualización entre motores de Redis OSS a Valkey para GlobalDataStore de ElastiCache**

  Puede actualizar un grupo de replicación global de Redis OSS existente en Valkey mediante la consola, la API o la CLI. 

  Si ya tiene un grupo de replicación global de Redis OSS, puede actualizarlo a Valkey especificando el nuevo motor y la versión del motor con la API modify-global-replication-group.

  Para Linux, macOS o Unix:

  ```
  aws elasticache modify-global-replication-group \
     --global-replication-group-id myGlobalReplGroup \
     --engine valkey \
     --apply-immediately \
     --engine-version 8.0
  ```

  Para Windows:

  ```
  aws elasticache modify-global-replication-group ^
     --global-replication-group-id myGlobalReplGroup ^
     --engine valkey ^
     --apply-immediately ^
     --engine-version 8.0
  ```

  Si tiene un grupo de parámetros de caché personalizado aplicado al grupo de replicación global de Redis OSS existente que desea actualizar, también tendrá que incluir un grupo de parámetros de caché de Valkey personalizado en la solicitud. El grupo de parámetros personalizados de Valkey de entrada debe tener los mismos valores de parámetros estáticos de Redis OSS que el grupo de parámetros personalizados de Redis OSS existente.

  Para Linux, macOS o Unix:

  ```
  aws elasticache modify-global-replication-group \
     --global-replication-group-id myGlobalReplGroup \
     --engine valkey \
     --engine-version 8.0 \
     --apply-immediately \
     --cache-parameter-group-name myParamGroup
  ```

  Para Windows:

  ```
  aws elasticache modify-global-replication-group ^
     --global-replication-group-id myGlobalReplGroup ^
     --engine valkey ^
     --engine-version 8.0 ^
     --apply-immediately ^
     --cache-parameter-group-name myParamGroup
  ```
+ [delete-global-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/delete-global-replication-group.html)

  ```
  aws elasticache delete-global-replication-group \
     --global-replication-group-id my global datastore  \
     --retain-primary-replication-group defaults to true
  ```
+ [disassociate-global-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/disassociate-global-replication-group.html)

  ```
  aws elasticache disassociate-global-replication-group \
     --global-replication-group-id my global datastore  \
     --replication-group-id my secondary cluster  \
     --replication-group-region the AWS Region in which the secondary cluster resides
  ```
+ [failover-global-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/failover-global-replication-group.html)

  ```
  aws elasticache failover-replication-group \
     --global-replication-group-id my global datastore \
     --primary-region The AWS Region of the primary cluster \  
     --primary-replication-group-id  The name of the global datastore, including the suffix.
  ```
+ [increase-node-groups-in-global-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/increase-node-groups-in-global-replication-group.html)

  ```
  aws elasticache increase-node-groups-in-global-replication-group \
     --apply-immediately yes \
     --global-replication-group-id global-replication-group-name \
     --node-group-count 3
  ```
+ [decrease-node-groups-in-global-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/decrease-node-groups-in-global-replication-group.html)

  ```
  aws elasticache decrease-node-groups-in-global-replication-group \
     --apply-immediately yes \
     --global-replication-group-id global-replication-group-name \
     --node-group-count 3
  ```
+ [rebalance-shards-in-global-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/rebalance-slots-in-global-replication-group.html)

  ```
  aws elasticache rebalance-shards-in-global-replication-group \
     --apply-immediately yes \
     --global-replication-group-id global-replication-group-name
  ```

Utilice la ayuda para mostrar todos los comandos disponibles de ElastiCache para Valkey o Redis OSS.

```
aws elasticache help
```

También puede utilizar la ayuda para describir un comando específico y obtener más información sobre su uso: 

```
aws elasticache create-global-replication-group help
```

# Alta disponibilidad a través de grupos de reproducción
<a name="Replication"></a>

Los clústeres de Valkey o Redis OSS de Amazon ElastiCache de un único nodo son entidades en memoria con servicios de protección de datos limitados (AOF). Si el clúster produce un error por cualquier motivo, se perderán todos los datos del clúster. No obstante, si ejecuta el motor de Valkey o Redis OSS, puede agrupar de 2 a 6 nodos en un clúster con réplicas, donde de 1 a 5 nodos de solo lectura contienen datos de réplica del nodo principal de lectura/escritura único del grupo. En esta situación, si solo se produce un error en un nodo por cualquier motivo, no perderá todos los datos, ya que estos se replican en otro u otros nodos. Debido a la latencia de reproducción, es posible que se pierdan algunos datos si el error se produce en el nodo principal de lectura/escritura.

Como se observa en el siguiente gráfico, la estructura de la replicación se encuentra en una partición (denominada *grupo de nodos* en la API/CLI), que a su vez se encuentra en un clúster de Valkey o Redis OSS. Los clústeres de Valkey o Redis OSS (modo de clúster deshabilitado) siempre tienen una partición. Los clústeres de Valkey o Redis OSS (modo de clúster habilitado) pueden tener hasta 500 particiones, con sus datos del clúster divididos entre las particiones. Puede crear un clúster con un mayor número de particiones y un menor número de réplicas con un total de hasta 90 nodos por clúster. Esta configuración de clúster puede variar desde 90 particiones y 0 réplicas hasta 15 particiones y 5 réplicas, que es el número máximo de réplicas permitido. 

El límite de nodos o particiones se puede aumentar a un máximo de 500 por clúster con ElastiCache para Valkey o con ElastiCache versión 5.0.6 o posteriores para Redis OSS. Por ejemplo, puede elegir configurar un clúster de 500 nodos que oscila entre 83 particiones (uno primario y 5 réplicas por partición) y 500 particiones (único primario y sin réplicas). Asegúrese de que hay suficientes direcciones IP disponibles para acomodar el aumento. Algunos problemas comunes incluyen que las subredes del grupo de subredes tienen un rango CIDR demasiado pequeño o que otros clústeres comparten y utilizan considerablemente las subredes. Para obtener más información, consulte [Creación de un grupo de subredes](SubnetGroups.Creating.md).

 Para las versiones inferiores a 5.0.6, el límite es de 250 por clúster.

Para solicitar un aumento del límite, consulte [AWS Service Limits](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) y elija el tipo de límite **Nodes per cluster per instance type** (Nodos por clúster por tipo de instancias). 

![\[Imagen: el clúster de Valkey o Redis OSS (modo de clúster deshabilitado) tiene una sola partición y de 0 a 5 nodos de réplica\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/images/ElastiCacheClusters-CSN-Redis-Replicas.png)


*El clúster de Valkey o Redis OSS (modo de clúster deshabilitado) tiene una sola partición y de 0 a 5 nodos de réplica*

Si el clúster con réplicas tiene habilitado Multi-AZ y el nodo principal produce un error, el principal realizará una conmutación por error a una réplica de lectura. Dado que los datos se actualizan en los nodos de réplica de forma asíncrona, es posible que haya algunas pérdidas de datos debido a la latencia en la actualización de los nodos de réplica. Para obtener más información, consulte [Mitigación de errores al ejecutar Valkey o Redis OSS](disaster-recovery-resiliency.md#FaultTolerance.Redis).

**Topics**
+ [Descripción de la replicación de Valkey y Redis OSS](Replication.Redis.Groups.md)
+ [Replicación: Valkey y Redis OSS en modo de clúster deshabilitado o habilitado](Replication.Redis-RedisCluster.md)
+ [Minimización del tiempo de inactividad en ElastiCache utilizando multi-AZ con Valkey y Redis OSS](AutoFailover.md)
+ [Cómo se implementan la sincronización y la copia de seguridad](Replication.Redis.Versions.md)
+ [Creación de un grupo de replicación de Valkey o Redis OSS](Replication.CreatingRepGroup.md)
+ [Visualización de detalles de un grupo de reproducción](Replication.ViewDetails.md)
+ [Búsqueda de puntos de enlace del grupo de reproducción](Replication.Endpoints.md)
+ [Modificación de un grupo de reproducción](Replication.Modify.md)
+ [Eliminación de un grupo de reproducción](Replication.DeletingRepGroup.md)
+ [Cambio del número de réplicas](increase-decrease-replica-count.md)
+ [Promoción de una réplica de lectura a principal para grupos de replicación de Valkey o Redis OSS (modo de clúster deshabilitado)](Replication.PromoteReplica.md)

# Descripción de la replicación de Valkey y Redis OSS
<a name="Replication.Redis.Groups"></a>

Redis OSS implementa la replicación de dos formas: 
+ Con una única partición que contiene todos los datos del clúster en cada nodo: Valkey o Redis OSS (modo de clúster deshabilitado)
+ Con datos particionados en hasta 500 particiones: Valkey o Redis OSS (modo de clúster habilitado)

Cada partición de un grupo de reproducción tiene un nodo primario de lectura/escritura y hasta 5 nodos de réplica de solo lectura. Puede crear un clúster con un mayor número de particiones y un menor número de réplicas con un total de hasta 90 nodos por clúster. Esta configuración de clúster puede variar desde 90 particiones y 0 réplicas hasta 15 particiones y 5 réplicas, que es el número máximo de réplicas permitido.

El límite de nodos o particiones se puede aumentar a un máximo de 500 por clúster si la versión del motor de Redis OSS es 5.0.6 o posteriores. Por ejemplo, puede elegir configurar un clúster de 500 nodos que oscila entre 83 particiones (uno primario y 5 réplicas por partición) y 500 particiones (único primario y sin réplicas). Asegúrese de que hay suficientes direcciones IP disponibles para acomodar el aumento. Algunos problemas comunes incluyen que las subredes del grupo de subredes tienen un rango CIDR demasiado pequeño o que otros clústeres comparten y utilizan considerablemente las subredes. Para obtener más información, consulte [Creación de un grupo de subredes](SubnetGroups.Creating.md).

 Para las versiones inferiores a 5.0.6, el límite es de 250 por clúster.

Para solicitar un aumento del límite, consulte [AWS Service Limits](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) y elija el tipo de límite **Nodes per cluster per instance type** (Nodos por clúster por tipo de instancias). 

**Topics**
+ [Valkey o Redis OSS (modo de clúster deshabilitado)](#Replication.Redis.Groups.Classic)
+ [Valkey o Redis OSS (modo de clúster habilitado)](#Replication.Redis.Groups.Cluster)

## Valkey o Redis OSS (modo de clúster deshabilitado)
<a name="Replication.Redis.Groups.Classic"></a>

Los clústeres de Valkey o Redis OSS (modo de clúster deshabilitado) contienen una sola partición, que alberga una colección de nodos: un nodo principal de lectura/escritura y hasta cinco nodos de réplica secundarios de solo lectura. Cada réplica de lectura mantiene una copia de los datos del nodo principal del clúster. Se utilizan mecanismos de replicación asíncronos para mantener las réplicas de lectura sincronizadas con el principal. Las aplicaciones pueden leer de cualquier nodos del clúster. Las aplicaciones pueden escribir únicamente en el nodo principal. Las réplicas de lectura mejoran el rendimiento de lectura y evitan la pérdida de datos en caso de error en un nodo.

![\[Imagen: clúster de Valkey o Redis OSS (modo de clúster deshabilitado) con una sola partición y nodos de réplica\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/images/ElastiCacheClusters-CSN-Redis-Replicas.png)


*Clúster de Valkey o Redis OSS (modo de clúster deshabilitado) con una sola partición y nodos de réplica*

Puede utilizar clústeres de Valkey o Redis OSS (modo de clúster deshabilitado) con nodos de réplica para escalar su solución de ElastiCache para gestionar las aplicaciones con gran intensidad de lecturas o para permitir que un gran número de clientes pueda leer simultáneamente desde el mismo clúster.

Todos los nodos de un clúster de Valkey o Redis OSS (modo de clúster deshabilitado) deben residir en la misma región. 

Al agregar una réplica de lectura a un clúster, todos los datos de la instancia principal se copian al nuevo nodo. A partir de entonces, siempre que se escriben datos en el nodo principal, los cambios se propagarán de forma asíncrona a todas las réplicas de lectura.

Para mejorar la tolerancia a errores y reducir el tiempo de inactividad de escritura, habilite multi-AZ con conmutación por error automática para el clúster de Valkey o Redis OSS (modo de clúster deshabilitado) con réplicas. Para obtener más información, consulte [Minimización del tiempo de inactividad en ElastiCache utilizando multi-AZ con Valkey y Redis OSS](AutoFailover.md).

Puede cambiar los roles de los nodos del clúster de Valkey o Redis OSS (modo de clúster deshabilitado), donde el nodo principal y una de las réplicas intercambian los roles. Puede que decida hacerlo por motivos de ajuste del rendimiento. Por ejemplo, con una aplicación web que tenga una gran actividad de escritura, puede elegir el nodo con la menor latencia de red. Para obtener más información, consulte [Promoción de una réplica de lectura a principal para grupos de replicación de Valkey o Redis OSS (modo de clúster deshabilitado)](Replication.PromoteReplica.md).

## Valkey o Redis OSS (modo de clúster habilitado)
<a name="Replication.Redis.Groups.Cluster"></a>

Un clúster de Valkey o Redis OSS (modo de clúster habilitado) se compone de 1 a 500 particiones (API/CLI: grupos de nodos). Cada partición tiene un nodo primario y hasta 5 nodos de réplica de solo lectura. La configuración puede variar desde 90 particiones y 0 réplicas hasta 15 particiones y 5 réplicas, que es el número máximo de réplicas permitido. 

El límite de nodos o particiones se puede aumentar a un máximo de 500 por clúster si la versión del motor es Valkey 7.2 y posteriores o Redis OSS 5.0.6 y posteriores. Por ejemplo, puede elegir configurar un clúster de 500 nodos que oscila entre 83 particiones (uno primario y 5 réplicas por partición) y 500 particiones (único primario y sin réplicas). Asegúrese de que hay suficientes direcciones IP disponibles para acomodar el aumento. Algunos problemas comunes incluyen que las subredes del grupo de subredes tienen un rango CIDR demasiado pequeño o que otros clústeres comparten y utilizan considerablemente las subredes. Para obtener más información, consulte [Creación de un grupo de subredes](SubnetGroups.Creating.md).

 Para las versiones inferiores a 5.0.6, el límite es de 250 por clúster.

Para solicitar un aumento del límite, consulte [AWS Service Limits](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) y elija el tipo de límite **Nodes per cluster per instance type** (Nodos por clúster por tipo de instancias). 

 Cada réplica de lectura de un fragmento mantiene una copia de los datos del principal del fragmento. Se utilizan mecanismos de replicación asíncronos para mantener las réplicas de lectura sincronizadas con el principal. Las aplicaciones pueden leer de cualquier nodos del clúster. Las aplicaciones pueden escribir únicamente en los nodos. Las réplicas de lectura mejoran la escalabilidad de lectura y evitan la pérdida de datos. Los datos se encuentran divididos entre las distintas particiones del clúster de Valkey o Redis OSS (modo de clúster habilitado).

Las aplicaciones utilizan el *punto de conexión de configuración* del clúster de Valkey o Redis OSS (modo de clúster habilitado) para conectarse a los nodos del clúster. Para obtener más información, consulte [Búsqueda de puntos de conexión en ElastiCache](Endpoints.md).

![\[Imagen: clúster de Valkey o Redis OSS (modo de clúster habilitado) con varias particiones y nodos de réplica\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/images/ElastiCacheClusters-CSN-RedisClusters.png)


*Clúster de Valkey o Redis OSS (modo de clúster habilitado) con varias particiones y nodos de réplica*

Todos los nodos de un clúster de Valkey o Redis OSS (modo de clúster habilitado) deben residir en la misma región. Para mejorar la tolerancia a errores, puede aprovisionar tanto a los principales como a las réplicas de lectura en varias zonas de disponibilidad dentro de esa región.

En la actualidad, las características de Valkey o Redis OSS (modo de clúster habilitado) tienen algunas limitaciones.
+ No puede promocionar manualmente ningún nodo de réplica a principal.

# Replicación: Valkey y Redis OSS en modo de clúster deshabilitado o habilitado
<a name="Replication.Redis-RedisCluster"></a>

A partir de Valkey 7.2 y Redis OSS versión 3.2, tiene la posibilidad de crear uno de dos tipos distintos de clústeres (API/CLI: grupos de replicación). Un clúster de Valkey o Redis OSS (modo de clúster deshabilitado) siempre dispone de una sola partición (API/CLI: grupo de nodos) con hasta 5 nodos de réplica de lectura. Un clúster de Valkey o Redis OSS (modo de clúster habilitado) tiene hasta 500 particiones con entre 1 y 5 nodos de réplica de lectura en cada uno.

![\[Imagen: clústeres de Valkey o Redis OSS (modo de clúster deshabilitado) y Valkey o Redis OSS (modo de clúster habilitado)\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/images/ElastiCache-NodeGroups.png)


*Clústeres de Valkey o Redis OSS (modo de clúster deshabilitado) y Valkey o Redis OSS (modo de clúster habilitado)*

En la siguiente tabla, se resumen las diferencias importantes entre los clústeres de Valkey o Redis OSS (modo de clúster deshabilitado) y Valkey o Redis OSS (modo de clúster habilitado).


**Comparación de clústeres de Valkey o Redis OSS (modo de clúster deshabilitado) y Valkey o Redis OSS (modo de clúster habilitado)**  

| Característica | Valkey o Redis OSS (modo de clúster deshabilitado) | Valkey o Redis OSS (modo de clúster habilitado) | 
| --- | --- | --- | 
| Modificable | Sí. Admite la adición y eliminación de nodos de réplica, así como la ampliación del tipo de nodo. | Limitado. Para obtener más información, consulte [Administración de versiones para ElastiCache](VersionManagement.md) y [Escalado de clústeres de Valkey o Redis OSS (modo de clúster habilitado)](scaling-redis-cluster-mode-enabled.md). | 
| Particiones de datos | No | Sí | 
| Particiones | 1 | 1 a 500  | 
| Réplicas de lectura | De 0 a 5 Si no tiene réplicas y el nodo falla, experimentará la pérdida total de datos. | 0 a 5 por partición. Si no tiene réplicas y el nodo falla, experimentará la pérdida de todos los datos del fragmento. | 
| Multi-AZ  | Sí, con al menos 1 réplica. Opcional. Activado de forma predeterminada. | SíOpcional. Activado de forma predeterminada. | 
| Instantáneas (copias de seguridad) | Sí, creando un único archivo .rdb. | Sí, creando un único archivo .rdb para cada fragmento. | 
| Restaurar | Sí, al utilizar un único archivo .rdb de un clúster de Valkey o Redis OSS (modo de clúster deshabilitado). | Sí, al utilizar archivos .rdb desde un clúster de Valkey o Redis OSS (modo de clúster deshabilitado) o un clúster de Valkey o Redis OSS (modo de clúster habilitado). | 
| Compatible con | Todas las versiones de Valkey y Redis OSS | Todas las versiones de Valkey y Redis OSS 3.2 y posteriores | 
| Motor actualizable | Sí, con algunos límites. Para obtener más información, consulte [Administración de versiones para ElastiCache](VersionManagement.md). | Sí, con algunos límites. Para obtener más información, consulte [Administración de versiones para ElastiCache](VersionManagement.md). | 
| Cifrado | Versiones 3.2.6 (programadas para EOL, consulte [Programa de fin de vida útil de las versiones de Redis OSS](engine-versions.md#deprecated-engine-versions)), 4.0.10 y posteriores. | Versiones 3.2.6 (programadas para EOL, consulte [Programa de fin de vida útil de las versiones de Redis OSS](engine-versions.md#deprecated-engine-versions)), 4.0.10 y posteriores. | 
| Cumplimiento de requisitos de HIPAA | Versiones 3.2.6 (programadas para EOL, consulte [Programa de fin de vida útil de las versiones de Redis OSS](engine-versions.md#deprecated-engine-versions)), 4.0.10 y posteriores. | Versiones 3.2.6 (programadas para EOL, consulte [Programa de fin de vida útil de las versiones de Redis OSS](engine-versions.md#deprecated-engine-versions)), 4.0.10 y posteriores. | 
| Compatible con PCI/DSS | Versiones 3.2.6 (programadas para EOL, consulte [Programa de fin de vida útil de las versiones de Redis OSS](engine-versions.md#deprecated-engine-versions)), 4.0.10 y posteriores. | Versiones 3.2.6 (programadas para EOL, consulte [Programa de fin de vida útil de las versiones de Redis OSS](engine-versions.md#deprecated-engine-versions)), 4.0.10 y posteriores. | 
| Cambios de los fragmentos online | N/A | Versión 3.2.10 (programada para EOL, consulte [Programa de fin de vida útil de las versiones de Redis OSS](engine-versions.md#deprecated-engine-versions)) y posteriores. | 

## ¿Cuál debería elegir?
<a name="Replication.Redis-RedisCluster.Choose"></a>

Al elegir entre Valkey o Redis OSS (modo de clúster deshabilitado) o Valkey o Redis OSS (modo de clúster habilitado), tenga en cuenta los siguientes factores:
+ **Escalado frente a partición**: las necesidades empresariales cambian. Debe aprovisionar los picos de demanda o escalar conforme cambie la demanda. Valkey o Redis OSS (modo de clúster deshabilitado) admite el escalado. Puede escalar la capacidad de lectura añadiendo o eliminando nodos de réplica, o bien puede escalar la capacidad ampliando a un tipo de nodo más grande. Ambas operaciones requieren tiempo. Para obtener más información, consulte [Escalado de nodos de réplica para Valkey o Redis OSS (modo de clúster deshabilitado)](Scaling.RedisReplGrps.md).

   

  Valkey o Redis OSS (modo de clúster habilitado) admite la partición de los datos en hasta 500 grupos de nodos. Puede cambiar el número de fragmentos de forma dinámica a medida que cambien sus necesidades de negocio. Una ventaja de la partición es que puede repartir la carga entre un mayor número de puntos de enlace, lo que reduce los cuellos de botella de acceso durante los picos de demanda. Además, puede alojar un mayor conjunto de datos, ya que los datos se pueden distribuir en varios servidores. Para obtener más información acerca del escalado de las particiones, consulte [Escalado de clústeres de Valkey o Redis OSS (modo de clúster habilitado)](scaling-redis-cluster-mode-enabled.md).

   
+ **Tamaño de nodo frente a número de nodos**: puesto que un clúster de Valkey o Redis OSS (modo de clúster deshabilitado) tiene una única partición, el tipo de nodo debe ser lo suficientemente grande como para alojar todos los datos del clúster, además de la capacidad adicional necesaria. Por otra parte, ya que puede particionar los datos entre varias particiones al utilizar un clúster de Valkey o Redis OSS (modo de clúster habilitado), los tipos de nodos pueden ser inferiores, aunque necesitará más cantidad. Para obtener más información, consulte [Elección del tamaño del nodo](CacheNodes.SelectSize.md).

   
+ **Lecturas frente a escrituras**: si la carga principal en el clúster son los datos de lectura de las aplicaciones, puede escalar un clúster de Valkey o Redis OSS (modo de clúster deshabilitado) añadiendo o eliminando réplicas de lectura. Sin embargo, hay un máximo de 5 réplicas de lectura. Si la carga de su clúster tiene un volumen de operaciones de escritura elevado, puede beneficiarse de los puntos de conexión de escritura adicionales de un clúster de Valkey o Redis OSS (modo de clúster habilitado) con varias particiones.

Independientemente del tipo de clúster que elija para implementar, debe asegurarse de elegir un tipo de nodo que se ajuste a sus necesidades actuales y futuras.

# Minimización del tiempo de inactividad en ElastiCache utilizando multi-AZ con Valkey y Redis OSS
<a name="AutoFailover"></a>

Existen varias instancias en las que ElastiCache para Valkey y Redis OSS podrían tener que reemplazar un nodo principal. Entre estas se incluyen determinados tipos de mantenimiento planificado y el caso poco probable de que se produzca un error en el nodo principal o en la zona de disponibilidad. 

Este reemplazo produce un tiempo de inactividad para el clúster, pero si Multi-AZ se encuentra habilitado, el tiempo de inactividad es mínimo. El rol del nodo primario tendrá una conmutación por error automática en una de las réplicas de lectura. No es necesario crear ni aprovisionar un nodo primario nuevo, ya que ElastiCache se encargará de esto de forma clara. Esta conmutación por error y promoción de réplica garantizan la posibilidad de reanudar la escritura en la réplica principal tan pronto como se complete la promoción. 

ElastiCache también propaga el nombre del servicio de nombres de dominio (DNS) de la réplica promocionada. Lo hace así porque, en ese caso, si su aplicación escribe en el punto de enlace principal, no se requiere ningún cambio de punto de conexión en su aplicación. Si lee desde puntos de conexión individuales, asegúrese de cambiar el punto de enlace de lectura de la réplica promovida a principal en el punto de enlace de la nueva réplica.

En caso de que se inicien reemplazos de nodos planificados debido a actualizaciones de mantenimiento o actualizaciones de autoservicio, tenga en cuenta lo siguiente:
+ En el caso de clústeres de Valkey y Redis OSS, los reemplazos de nodos planificados se realizan mientras el clúster atiende las solicitudes de escritura que se reciben. 
+ En los clústeres de Valkey y Redis OSS que tienen el modo de clúster deshabilitado con multi-AZ habilitado y que se ejecutan en un motor de la versión 5.0.6 o posteriores, los reemplazos de nodos planificados se realizan mientras el clúster atiende las solicitudes de escritura que se reciben. 
+ En los clústeres de Valkey y Redis OSS que tienen el modo de clúster deshabilitado con multi-AZ habilitado y que se ejecutan en un motor de la versión 4.0.10 o anterior, es posible que se produzca una breve interrupción de escritura asociada con las actualizaciones de DNS. Esta interrupción es posible que tarde unos segundos. Este proceso es mucho más rápido que el de volver a crear y aprovisionar una réplica principal nueva, que es el proceso que se realiza en caso de no habilitar Multi-AZ. 

Puede habilitar Multi-AZ mediante la consola de administración de ElastiCache, la AWS CLI o la API de ElastiCache.

Habilitar multi-AZ de ElastiCache en su clúster de Valkey o Redis OSS (grupo de replicación en la API o la CLI) mejora la tolerancia a errores. Esto es cierto especialmente en los casos en que el nodo principal de lectura/escritura del clúster deja de estar accesible o de funcionar por cualquier motivo. Multi-AZ solo se admite en clústeres de Valkey o Redis OSS que tienen más de un nodo en cada partición.

**Topics**
+ [Habilitación de Multi-AZ](#AutoFailover.Enable)
+ [Escenarios de error con respuestas de Multi-AZ](#AutoFailover.Scenarios)
+ [Prueba de la conmutación por error automática](#auto-failover-test)
+ [Limitaciones en multi-AZ](#AutoFailover.Limitations)

## Habilitación de Multi-AZ
<a name="AutoFailover.Enable"></a>

Puede habilitar Multi-AZ al crear o modificar un clúster (grupo de reproducción en la API o la CLI) mediante la consola de ElastiCache, la AWS CLI o la API de ElastiCache.

Solo puede habilitar multi-AZ en clústeres de Valkey o Redis OSS (modo de clúster deshabilitado) que tengan al menos una réplica de lectura disponible. Los clústeres sin réplicas de lectura no ofrecen alta disponibilidad ni tolerancia a errores. Para obtener información acerca de la creación de clústeres con reproducción, consulte [Creación de un grupo de replicación de Valkey o Redis OSS](Replication.CreatingRepGroup.md). Para obtener información acerca de la adición de réplicas de lectura a un clúster con reproducción, consulte [Adición de una réplica de lectura para Valkey o Redis OSS (modo de clúster deshabilitado)](Replication.AddReadReplica.md).

**Topics**
+ [Habilitación de Multi-AZ (consola)](#AutoFailover.Enable.Console)
+ [Habilitación de Multi-AZ (AWS CLI)](#AutoFailover.Enable.CLI)
+ [Habilitación de Multi-AZ (API de ElastiCache)](#AutoFailover.Enable.API)

### Habilitación de Multi-AZ (consola)
<a name="AutoFailover.Enable.Console"></a>

Puede habilitar multi-AZ mediante la consola de ElastiCache al crear un clúster de Valkey o Redis OSS nuevo o modificar un clúster existente con la replicación.

Multi-AZ se encuentra habilitado de forma predeterminada en los clústeres de Valkey o Redis OSS (modo de clúster habilitado).

**importante**  
ElastiCache habilitará de forma automática Multi-AZ solo si el clúster contiene al menos una réplica en una zona de disponibilidad diferente de la principal en todas las particiones.

#### Habilitación de Multi-AZ al crear un clúster mediante la consola de ElastiCache
<a name="AutoFailover.Enable.Console.NewCacheCluster"></a>

Para obtener más información acerca de este proceso, consulte [Creación de un clúster de Valkey (modo de clúster deshabilitado) (consola)](SubnetGroups.designing-cluster-pre.valkey.md#Clusters.Create.CON.valkey-gs). Asegúrese de tener una o más réplicas y habilitar Multi-AZ.

#### Habilitación de Multi-AZ en un clúster existente (consola)
<a name="AutoFailover.Enable.Console.ReplGrp"></a>

Para obtener más información sobre este proceso, consulte Modificación de un clúster [Uso de la Consola de administración de AWS de ElastiCache](Clusters.Modify.md#Clusters.Modify.CON).

### Habilitación de Multi-AZ (AWS CLI)
<a name="AutoFailover.Enable.CLI"></a>

En el ejemplo de código siguiente se utiliza la AWS CLI para habilitar Multi-AZ para el grupo de reproducción `redis12`.

**importante**  
El grupo de reproducción `redis12` debe existir y tener al menos una réplica de lectura disponible.

Para Linux, macOS o Unix:

```
aws elasticache modify-replication-group \
    --replication-group-id redis12 \
    --automatic-failover-enabled \
    --multi-az-enabled \
    --apply-immediately
```

Para Windows:

```
aws elasticache modify-replication-group ^
    --replication-group-id redis12 ^
    --automatic-failover-enabled ^
    --multi-az-enabled ^
    --apply-immediately
```

La salida JSON de este comando debería tener un aspecto similar al siguiente.

```
{
    "ReplicationGroup": {
        "Status": "modifying", 
        "Description": "One shard, two nodes", 
        "NodeGroups": [
            {
                "Status": "modifying", 
                "NodeGroupMembers": [
                    {
                        "CurrentRole": "primary", 
                        "PreferredAvailabilityZone": "us-west-2b", 
                        "CacheNodeId": "0001", 
                        "ReadEndpoint": {
                            "Port": 6379, 
                            "Address": "redis12-001.v5r9dc.0001.usw2.cache.amazonaws.com"
                        }, 
                        "CacheClusterId": "redis12-001"
                    }, 
                    {
                        "CurrentRole": "replica", 
                        "PreferredAvailabilityZone": "us-west-2a", 
                        "CacheNodeId": "0001", 
                        "ReadEndpoint": {
                            "Port": 6379, 
                            "Address": "redis12-002.v5r9dc.0001.usw2.cache.amazonaws.com"
                        }, 
                        "CacheClusterId": "redis12-002"
                    }
                ], 
                "NodeGroupId": "0001", 
                "PrimaryEndpoint": {
                    "Port": 6379, 
                    "Address": "redis12.v5r9dc.ng.0001.usw2.cache.amazonaws.com"
                }
            }
        ], 
        "ReplicationGroupId": "redis12", 
        "SnapshotRetentionLimit": 1, 
        "AutomaticFailover": "enabling", 
        "MultiAZ": "enabled", 
        "SnapshotWindow": "07:00-08:00", 
        "SnapshottingClusterId": "redis12-002", 
        "MemberClusters": [
            "redis12-001", 
            "redis12-002"
        ], 
        "PendingModifiedValues": {}
    }
}
```

Para obtener más información, consulte los temas siguientes en la *Referencia de los comandos de la AWS CLI*:
+ [create-cache-cluster](https://docs.aws.amazon.com/cli/latest/reference/elasticache/create-cache-cluster.html)
+ [create-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/create-replication-group.html)
+ [modify-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-replication-group.html) en la *Referencia de los comandos de la AWS CLI*.

### Habilitación de Multi-AZ (API de ElastiCache)
<a name="AutoFailover.Enable.API"></a>

En el siguiente ejemplo de código se utiliza la API de ElastiCache a fin de habilitar Multi-AZ para el grupo de reproducción `redis12`.

**nota**  
Para usar este ejemplo, el grupo de reproducción `redis12` debe existir y tener al menos una réplica de lectura disponible.

```
https://elasticache.us-west-2.amazonaws.com/
    ?Action=ModifyReplicationGroup
    &ApplyImmediately=true
    &AutoFailover=true
    &MultiAZEnabled=true
    &ReplicationGroupId=redis12
    &Version=2015-02-02
    &SignatureVersion=4
    &SignatureMethod=HmacSHA256
    &Timestamp=20140401T192317Z
    &X-Amz-Credential=<credential>
```

Para obtener más información, consulte los siguientes temas en la *Referencia de la API de ElastiCache*:
+ [CreateCacheCluster](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateCacheCluster.html)
+ [CreateReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateReplicationGroup.html)
+ [ModifyReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroup.html)

## Escenarios de error con respuestas de Multi-AZ
<a name="AutoFailover.Scenarios"></a>

Antes de la presentación de Multi-AZ, ElastiCache detectaba y sustituía los nodos con error de un clúster al recrear y reaprovisionar el nodo que producía error. Si habilita Multi-AZ, un nodo principal que produce error conmuta por error a la réplica con el menor retraso de reproducción. La réplica seleccionada se promocionará automáticamente a la principal, lo cual es mucho más rápido que crear y reaprovisionar un nuevo nodo principal. Este proceso suele tardar tan solo unos segundos hasta que se puede escribir de nuevo en el clúster.

Cuando Multi-AZ se encuentra habilitado, ElastiCache monitorea continuamente el estado del nodo primario. Si se produce un error en el nodo principal, se realiza una de las siguientes acciones en función del tipo de error.

**Topics**
+ [Escenarios de error cuando solo se produce un error en el nodo principal](#AutoFailover.Scenarios.PrimaryOnly)
+ [Escenarios de error cuando el nodo primario y algunas réplicas de lectura producen un error](#AutoFailover.Scenarios.PrimaryAndReplicas)
+ [Escenarios de error cuando se produce un error en todo el clúster](#AutoFailover.Scenarios.AllFail)

### Escenarios de error cuando solo se produce un error en el nodo principal
<a name="AutoFailover.Scenarios.PrimaryOnly"></a>

Si solo se produce un error en el nodo principal, la réplica de lectura con el menor retardo de reproducción se promociona al clúster principal. A continuación, se crea una réplica de lectura de reemplazo y se aprovisiona en la misma zona de disponibilidad que el principal ha producido un error.

Cuando solo se produce un error en el nodo primario, Multi-AZ de ElastiCache realiza lo siguiente:

1. El nodo principal con error se desconecta (sin conexión).

1. La réplica de lectura con el mínimo retardo de reproducción se promociona a nodo principal.

   Las operaciones de escritura se pueden reanudar tan pronto como se haya completado el proceso de promoción, por lo general, en tan solo unos segundos. Si la aplicación escribe en el punto de conexión principal, no es necesario cambiar el punto de enlace para escrituras o lecturas. ElastiCache propaga el nombre de DNS de la réplica promocionada.

1. Una réplica de lectura de reemplazo se lanza y aprovisiona.

   La réplica de lectura de reemplazo se lanza en la zona de disponibilidad en la que estaba el nodo principal con error, por lo que se mantiene la distribución de los nodos.

1. Las réplicas se sincronizan con el nuevo nodo principal.

Una vez que la nueva réplica esté disponible, tenga en cuenta estos efectos:
+ **Punto de enlace principal**: no debe realizar cambios en su aplicación, ya que el nombre de DNS del nodo primario nuevo se propagará al punto de conexión principal.
+ **Punto de enlace de lectura**: el punto de conexión del lector se actualiza de forma automática para apuntar a los nodos de réplica nuevos.

Para obtener información acerca de la búsqueda de los puntos de conexión de un clúster, consulte los temas siguientes:
+ [Búsqueda de puntos de conexión de un clúster de Valkey o Redis OSS (modo de clúster deshabilitado) (consola)](Endpoints.md#Endpoints.Find.Redis)
+ [Búsqueda de los puntos de conexión de los grupos de replicación de Valkey o Redis OSS (AWS CLI)](Endpoints.md#Endpoints.Find.CLI.ReplGroups)
+ [Búsqueda de puntos de conexión de grupos de replicación de Valkey o Redis OSS (API de ElastiCache)](Endpoints.md#Endpoints.Find.API.ReplGroups)

 

### Escenarios de error cuando el nodo primario y algunas réplicas de lectura producen un error
<a name="AutoFailover.Scenarios.PrimaryAndReplicas"></a>

Si se produce un error en el nodo principal y en al menos una réplica, la réplica disponible con el menor retardo de reproducción se promocionará al clúster principal. Las nuevas réplicas de lectura también se crean y se aprovisionan en las mismas zonas de disponibilidad que las de los nodos con error y que la réplica que se promocionó a nodo principal.

Cuando el nodo primario y algunas réplicas de lectura producen un error, Multi-AZ de ElastiCache realiza lo siguiente:

1. El nodo principal y las réplicas de lectura con error se desconectan.

1. La réplica disponible con el mínimo retardo de reproducción se promociona a nodo principal.

   Las operaciones de escritura se pueden reanudar tan pronto como se haya completado el proceso de promoción, por lo general, en tan solo unos segundos. Si la aplicación escribe en el punto de conexión principal, no es necesario cambiar el punto de enlace para escrituras. ElastiCache propaga el nombre de DNS de la réplica promocionada.

1. Las réplicas de reemplazo se crean y se aprovisionan.

   Las réplicas de reemplazo se crean en las zonas de disponibilidad de los nodos con error para, de este modo, conservar la distribución de los nodos.

1. Todos los clústeres se sincronizan con el nodo principal.

Debe realizar los siguientes cambios en su aplicación una vez que los nuevos nodos estén disponibles:
+ **Punto de conexión principal**: no realice cambios en su aplicación. El nombre de DNS del nuevo nodo principal se propaga al punto de conexión principal.
+ **Punto de conexión de lectura**: el punto de enlace de lectura se actualiza de forma automática para apuntar a los nodos de réplica nuevos.

Para obtener información acerca de la búsqueda de los puntos de enlace de un grupo de replicación, consulte los temas siguientes:
+ [Búsqueda de puntos de conexión de un clúster de Valkey o Redis OSS (modo de clúster deshabilitado) (consola)](Endpoints.md#Endpoints.Find.Redis)
+ [Búsqueda de los puntos de conexión de los grupos de replicación de Valkey o Redis OSS (AWS CLI)](Endpoints.md#Endpoints.Find.CLI.ReplGroups)
+ [Búsqueda de puntos de conexión de grupos de replicación de Valkey o Redis OSS (API de ElastiCache)](Endpoints.md#Endpoints.Find.API.ReplGroups)

 

### Escenarios de error cuando se produce un error en todo el clúster
<a name="AutoFailover.Scenarios.AllFail"></a>

Si el error es general, todos los nodos se volverán a crear y a aprovisionar en las mismas zonas de disponibilidad que las de los nodos originales. 

En esta situación, se perderán todos los datos del clúster debido al error de todos los nodos del clúster. Este tipo de error no suele producirse con frecuencia.

Cuando se produce un error en todo el clúster, Multi-AZ de ElastiCache realiza lo siguiente:

1. El nodo principal y las réplicas de lectura se desconectan.

1. Se crea y se aprovisiona un nodo principal de reemplazo.

1. Las réplicas de reemplazo se crean y se aprovisionan.

   Los reemplazos se crean en las zonas de disponibilidad de los nodos con error para, de este modo, conservar la distribución de los nodos.

   Puesto que el error ha afectado a la totalidad del clúster, los datos se perderán y los nuevos nodos se crean vacíos.

Puesto que cada uno de los nodos de reemplazo tendrán el mismo punto de conexión que el nodo al que reemplacen, no es necesario realizar ningún cambio de punto de conexión en su aplicación.

Para obtener información acerca de la búsqueda de los puntos de enlace de un grupo de replicación, consulte los temas siguientes:
+ [Búsqueda de puntos de conexión de un clúster de Valkey o Redis OSS (modo de clúster deshabilitado) (consola)](Endpoints.md#Endpoints.Find.Redis)
+ [Búsqueda de los puntos de conexión de los grupos de replicación de Valkey o Redis OSS (AWS CLI)](Endpoints.md#Endpoints.Find.CLI.ReplGroups)
+ [Búsqueda de puntos de conexión de grupos de replicación de Valkey o Redis OSS (API de ElastiCache)](Endpoints.md#Endpoints.Find.API.ReplGroups)

Recomendamos que cree el nodo principal y las réplicas de lectura en distintas zonas de disponibilidad para incrementar el nivel de tolerancia a errores.

## Prueba de la conmutación por error automática
<a name="auto-failover-test"></a>

Después de habilitar la conmutación por error automática, puede probarla mediante la consola de ElastiCache, la AWS CLI y la API de ElastiCache.

Cuando realice las pruebas, tenga en cuenta lo siguiente:
+ Esta operación se puede utilizar para probar la conmutación por error automática en un máximo de 15 particiones (denominadas grupos de nodos en la AWS CLI y la API de ElastiCache) en un periodo continuo de 24 horas.
+ Si realiza una llamada a esta operación en fragmentos de distintos clústeres (denominados grupos de reproducción en la API y la CLI), podrá realizar las llamadas de forma simultánea.
+ En algunos casos, es posible que llame a esta operación varias veces en particiones diferentes del mismo grupo de replicación de Valkey o Redis OSS (modo de clúster habilitado). En tales casos, la sustitución del primer nodo debe completarse antes de que se pueda realizar una llamada posterior.
+ Para determinar si la sustitución del nodo se ha completado, verifique los eventos mediante la consola de Amazon ElastiCache, la AWS CLI o la API de ElastiCache. Busque los eventos relacionados con la conmutación por error automática que se indican a continuación por orden de incidencia:

  1. Mensaje del grupo de replicación: `Test Failover API called for node group <node-group-id>`

  1. Mensaje del clúster de caché: `Failover from primary node <primary-node-id> to replica node <node-id> completed`

  1. Mensaje del grupo de replicación: `Failover from primary node <primary-node-id> to replica node <node-id> completed`

  1. Mensaje del clúster de caché: `Recovering cache nodes <node-id>`

  1. Mensaje del clúster de caché: `Finished recovery for cache nodes <node-id>`

  Para obtener más información, consulte los siguientes temas:
  + [Visualización de ElastiCache eventos](ECEvents.Viewing.md) en la *Guía del usuario de ElastiCache*
  + [DescribeEvents](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeEvents.html) en la *Referencia de la API de ElastiCache*
  + [describe-events](https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-events.html) en la *Referencia de los comandos de la AWS CLI*.
+ Esta API está diseñada para probar el comportamiento de la aplicación en caso de conmutación por error de ElastiCache. No está diseñado para ser una herramienta operativa para iniciar una conmutación por error para solucionar un problema con el clúster. Además, en determinadas condiciones, como los acontecimientos operacionales a gran escala, AWS puede bloquear esta API.

**Topics**
+ [Prueba de la conmutación por error automática mediante la Consola de administración de AWS](#auto-failover-test-con)
+ [Prueba de la conmutación por error automática mediante la AWS CLI](#auto-failover-test-cli)
+ [Prueba de la conmutación por error automática mediante la API de ElastiCache](#auto-failover-test-api)

### Prueba de la conmutación por error automática mediante la Consola de administración de AWS
<a name="auto-failover-test-con"></a>

Utilice el procedimiento siguiente para probar la conmutación por error automática con la consola.

**Para probar la conmutación por error automática**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de ElastiCache en [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. En el panel de navegación, elija **Valkey** o **Redis OSS**.

1. En la lista de clústeres, elija el cuadro situado a la izquierda del clúster que desea probar. El clúster debe tener al menos un nodo de réplica de lectura.

1. En el área **Details**, asegúrese de que este clúster tiene habilitadas Multi-AZ. Si el clúster no tiene habilitado Multi-AZ, elija un clúster distinto o modifique este clúster para habilitar Multi-AZ. Para obtener más información, consulte [Uso de la Consola de administración de AWS de ElastiCache](Clusters.Modify.md#Clusters.Modify.CON).  
![\[Imagen: área de detalles de un clúster con multi-AZ habilitado\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/images/ElastiCache-AutoFailover-MultiAZ-Enabled.png)

1. Para Valkey o Redis OSS (modo de clúster deshabilitado), elija el nombre del clúster.

   Para Valkey o Redis OSS (modo de clúster habilitado), realice lo siguiente:

   1. Elija el nombre del clúster. 

   1. En la página **Shards**, elija el nombre del fragmento (denominado grupo de nodos en la API y la CLI) en el que desea probar la conmutación por error. 

1. En la página Nodos, elija **Failover Primary**.

1. Elija **Continue** para realizar la conmutación por error al nodo principal, o bien **Cancel** para cancelar la operación y no realizar la conmutación por error al nodo principal.

   Durante el proceso de conmutación por error, la consola seguirá mostrando el estado del nodo como *disponible*. Para realizar un seguimiento del progreso de la prueba de la conmutación por error, elija **Events** en el panel de navegación de la consola. En la pestaña **Eventos**, consulte los eventos que indican que la conmutación por error se ha iniciado (`Test Failover API called`) y completado (`Recovery completed`).

 

### Prueba de la conmutación por error automática mediante la AWS CLI
<a name="auto-failover-test-cli"></a>

Puede probar la conmutación por error automática en cualquier clúster habilitado de Multi-AZ mediante la operación de la AWS CLI `test-failover`.

**Parámetros**
+ `--replication-group-id`: obligatorio. Grupo de reproducción (en la consola, clúster) que se va a comprobar.
+ `--node-group-id`: obligatorio. Nombre del grupo de nodos en el que desea probar la conmutación por error automática. Puede probar un máximo de 15 grupos de nodos en un periodo continuo de 24 horas.

El siguiente ejemplo utiliza la AWS CLI para probar la conmutación por error automática en el grupo de nodos `redis00-0003` del clúster de Valkey o Redis OSS (modo de clúster habilitado) `redis00`.

**Example Pruebe la conmutación por error automática**  
Para Linux, macOS o Unix:  

```
aws elasticache test-failover \
   --replication-group-id redis00 \
   --node-group-id redis00-0003
```
Para Windows:  

```
aws elasticache test-failover ^
   --replication-group-id redis00 ^
   --node-group-id redis00-0003
```

La salida del comando anterior es similar a la siguiente.

```
{
    "ReplicationGroup": {
        "Status": "available", 
        "Description": "1 shard, 3 nodes (1 + 2 replicas)", 
        "NodeGroups": [
            {
                "Status": "available", 
                "NodeGroupMembers": [
                    {
                        "CurrentRole": "primary", 
                        "PreferredAvailabilityZone": "us-west-2c", 
                        "CacheNodeId": "0001", 
                        "ReadEndpoint": {
                            "Port": 6379, 
                            "Address": "redis1x3-001.7ekv3t.0001.usw2.cache.amazonaws.com"
                        }, 
                        "CacheClusterId": "redis1x3-001"
                    }, 
                    {
                        "CurrentRole": "replica", 
                        "PreferredAvailabilityZone": "us-west-2a", 
                        "CacheNodeId": "0001", 
                        "ReadEndpoint": {
                            "Port": 6379, 
                            "Address": "redis1x3-002.7ekv3t.0001.usw2.cache.amazonaws.com"
                        }, 
                        "CacheClusterId": "redis1x3-002"
                    }, 
                    {
                        "CurrentRole": "replica", 
                        "PreferredAvailabilityZone": "us-west-2b", 
                        "CacheNodeId": "0001", 
                        "ReadEndpoint": {
                            "Port": 6379, 
                            "Address": "redis1x3-003.7ekv3t.0001.usw2.cache.amazonaws.com"
                        }, 
                        "CacheClusterId": "redis1x3-003"
                    }
                ], 
                "NodeGroupId": "0001", 
                "PrimaryEndpoint": {
                    "Port": 6379, 
                    "Address": "redis1x3.7ekv3t.ng.0001.usw2.cache.amazonaws.com"
                }
            }
        ], 
        "ClusterEnabled": false, 
        "ReplicationGroupId": "redis1x3", 
        "SnapshotRetentionLimit": 1, 
        "AutomaticFailover": "enabled", 
        "MultiAZ": "enabled",
        "SnapshotWindow": "11:30-12:30", 
        "SnapshottingClusterId": "redis1x3-002", 
        "MemberClusters": [
            "redis1x3-001", 
            "redis1x3-002", 
            "redis1x3-003"
        ], 
        "CacheNodeType": "cache.m3.medium", 
        "DataTiering": "disabled",
        "PendingModifiedValues": {}
    }
}
```

Para realizar un seguimiento del progreso de la conmutación por error, use la operación de la AWS CLI `describe-events`.

Para obtener más información, consulte los siguientes temas:
+ [test-failover](https://docs.aws.amazon.com/cli/latest/reference/elasticache/test-failover.html) en la *Referencia de los comandos de la AWS CLI*.
+ [describe-events](https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-events.html) en la *Referencia de los comandos de la AWS CLI*.

 

### Prueba de la conmutación por error automática mediante la API de ElastiCache
<a name="auto-failover-test-api"></a>

Puede probar la conmutación por error automática en cualquier clúster habilitado con Multi-AZ mediante la operación de la API de ElastiCache `TestFailover`.

**Parámetros**
+ `ReplicationGroupId`: obligatorio. El grupo de reproducción (en la consola, clúster) que se va a comprobar.
+ `NodeGroupId`: obligatorio. Nombre del grupo de nodos en el que desea probar la conmutación por error automática. Puede probar un máximo de 15 grupos de nodos en un periodo continuo de 24 horas.

El ejemplo siguiente comprueba la conmutación por error automática en el grupo de nodos `redis00-0003` del grupo de reproducción (clúster, en la consola) `redis00`.

**Example Prueba de la conmutación por error automática**  

```
https://elasticache.us-west-2.amazonaws.com/
    ?Action=TestFailover
    &NodeGroupId=redis00-0003
    &ReplicationGroupId=redis00
    &Version=2015-02-02
    &SignatureVersion=4
    &SignatureMethod=HmacSHA256
    &Timestamp=20140401T192317Z
    &X-Amz-Credential=<credential>
```

Para realizar un seguimiento del progreso de la conmutación por error, utilice la operación de la API de ElastiCache `DescribeEvents`.

Para obtener más información, consulte los siguientes temas:
+ [TestFailover](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_TestFailover.html) en la *Referencia de la API de ElastiCache * 
+ [DescribeEvents](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeEvents.html) en la *Referencia de la API de ElastiCache * 

 

## Limitaciones en multi-AZ
<a name="AutoFailover.Limitations"></a>

Tenga en cuenta las siguientes limitaciones para multi-AZ:
+ Multi-AZ se admite en Valkey y en Redis OSS versión 2.8.6 y posteriores.
+ Multi-AZ no se admite en los tipos de nodos T1.
+ La replicación de Valkey y Redis OSS es asíncrona. Por lo tanto, cuando un nodo principal realiza una conmutación por error a una réplica, se puede perder una pequeña cantidad de datos debido al retraso de reproducción.

  Cuando elige que la réplica se promueva a principal, ElastiCache selecciona la réplica con el menor retardo de replicación. En otras palabras, elija la réplica más actual. Esto ayuda a minimizar la cantidad de datos perdidos. La réplica que tiene el menor retardo de reproducción puede estar en la misma zona de disponibilidad que el nodo principal con error o en otra.
+ Si promueve manualmente réplicas de lectura a principal en clústeres de Valkey o Redis OSS con el modo de clúster deshabilitado, solo podrá hacerlo cuando multi-AZ y la conmutación por error automática estén deshabilitadas. Para promocionar una réplica de lectura a principal, siga estos pasos:

  1. Deshabilite Multi-AZ en el clúster.

  1. Deshabilite la conmutación por error automática en el clúster. Puede hacerlo a través de la consola. Para ello, desactive la casilla de verificación **Conmutación por error automática** del grupo de replicación. También puede hacerlo utilizando la AWS CLI y estableciendo la propiedad `AutomaticFailoverEnabled` en `false` al llamar a la operación `ModifyReplicationGroup`.

  1. Promocione la réplica de lectura a principal.

  1. Vuelva a habilitar Multi-AZ.
+ Multi-AZ de ElastiCache para Redis OSS y archivos de solo adición (AOF) son mutuamente excluyentes. Si habilita una opción, no puede habilitar la otra.
+ El error de un nodo puede ser provocado por el improbable caso de que deje de funcionar una zona de disponibilidad completa. En este caso, la réplica que sustituye a la principal con error se creará únicamente si hay una copia de seguridad de la zona de disponibilidad. Por ejemplo, considere la posibilidad de un grupo de reproducción con el principal en AZ-a y las réplicas en AZ-b y AZ-c. Si el principal falla, la réplica con el menor retardo de reproducción se promociona al clúster principal. A continuación, ElastiCache crea una réplica nueva en la AZ-a (en la que se encontró la réplica principal con el error) solo si se ha realizado una copia de seguridad de AZ-a y se encuentra disponible.
+ Un reinicio iniciado por un cliente de un principal no desencadena la conmutación por error automática. Otros reinicios y errores sí activan la conmutación por error automática.
+ Cuando se reinicia el principal, sus datos se borran cuando vuelve a estar en línea. Cuando las réplicas de lectura ven el clúster principal borrado, borran sus copias de los datos, lo que provoca una pérdida de datos.
+ Después de la promoción de una réplica de lectura, las otras réplicas se sincronizan con el nuevo principal. Después de la sincronización inicial, el contenido de las réplicas se elimina y sincronizan los datos del nuevo principal. Este proceso de sincronización provoca una breve interrupción, durante la cual no se puede acceder a las réplicas. El proceso de sincronización también provoca un aumento de carga temporal en el principal mientras se sincroniza con las réplicas. Este comportamiento es nativo de Valkey y Redis OSS y no es exclusivo para multi-AZ de ElastiCache. Para obtener más información sobre este comportamiento, consulte [Replication](http://valkey.io/topics/replication) en el sitio web de Valkey.

**importante**  
En Valkey 7.2.6 y versiones posteriores o Redis OSS versión 2.8.22 y versiones posteriores, no se pueden crear réplicas externas.  
Para las versiones de Redis OSS anteriores a la 2.8.22, se recomienda que no conecte una réplica externa a un clúster de ElastiCache habilitado para multi-AZ. Se trata de una configuración no admitida que puede crear problemas que impiden a ElastiCache realizar la conmutación por error y la recuperación correctamente. Para conectar una réplica externa a un clúster de ElastiCache, asegúrese de que multi-AZ no se encuentre habilitado antes de realizar la conexión.

# Cómo se implementan la sincronización y la copia de seguridad
<a name="Replication.Redis.Versions"></a>

Todas las versiones compatibles de Valkey o Redis OSS admiten la copia de seguridad y la sincronización entre el nodo principal y el nodo de réplica. Sin embargo, la forma en la que se implementan la copia de seguridad y la sincronización varía en función de la versión.

## Versión 2.8.22 de Redis OSS y posteriores
<a name="Replication.Redis.Version2-8-22"></a>

En las versiones 2.8.22 y posteriores, la replicación de Redis OSS se realiza con uno de dos métodos. Para obtener más información, consulte [Versiones de Redis OSS anteriores a la 2.8.22](#Replication.Redis.Earlier2-8-22) y [Instantánea y restauración](backups.md).

Durante el proceso sin ramificaciones, si la carga de escritura es elevada, las operaciones de escritura en el clúster se retrasan para garantizar que no se acumulan demasiados cambios que impidan el éxito del proceso de instantánea. 

## Versiones de Redis OSS anteriores a la 2.8.22
<a name="Replication.Redis.Earlier2-8-22"></a>

La copia de seguridad y la sincronización de Redis OSS en versiones anteriores a la 2.8.22 es un proceso que consta de tres pasos.

1. Las ramificaciones y en el proceso en segundo plano, serializan los datos del clúster en disco. Esto crea una instantánea puntual.

1. En primer plano, se acumula un log de cambios en el *búfer de salida del cliente*.
**importante**  
Si el log de cambios supera el tamaño del *búfer de salida del cliente*, la copia de seguridad o la sincronización fallarán. Para obtener más información, consulte [Forma de garantizar que dispone de memoria suficiente para crear una instantánea de Valkey o Redis OSS](BestPractices.BGSAVE.md).

1. Por último, transmita los datos de caché y, a continuación, el log de cambios al nodo de réplica.

# Creación de un grupo de replicación de Valkey o Redis OSS
<a name="Replication.CreatingRepGroup"></a>

Dispone de las siguientes opciones para crear un clúster con nodos de réplica. Uno se aplica cuando ya tiene un clúster de Valkey o Redis OSS (modo de clúster deshabilitado) disponible no asociado con un clúster que tiene réplicas que se van a utilizar como nodo principal. El otro se aplica cuando necesita crear un nodo principal con el clúster y réplicas de lectura. Actualmente, se debe crear un clúster de Valkey o Redis OSS (modo de clúster habilitado) desde cero.

**Opción 1: [Creación de un grupo de reproducción mediante un clúster existente](Replication.CreatingReplGroup.ExistingCluster.md)**  
Utilice esta opción para utilizar un clúster de Valkey o Redis OSS (modo de clúster deshabilitado) de un solo nodo. Podrá especificar este nodo existente como el nodo primario en el clúster nuevo y, a continuación, agregar individualmente de 1 a 5 réplicas de lectura al clúster. Si el clúster existente está activo, las réplicas de lectura se sincronizan con él conforme se creen. Consulte [Creación de un grupo de reproducción mediante un clúster existente](Replication.CreatingReplGroup.ExistingCluster.md).  
No puede crear un clúster de Valkey o Redis OSS (modo de clúster habilitado) con un clúster existente. Para crear un clúster de Valkey o Redis OSS (modo de clúster habilitado) (API/CLI: grupo de replicación) mediante la consola de ElastiCache, consulte [Creación de un clúster de Valkey o Redis OSS (modo de clúster habilitado) (consola)](Clusters.Create.md#Clusters.Create.CON.RedisCluster).

**Opción 2: [Creación de un grupo de replicación de Valkey o Redis OSS desde cero](Replication.CreatingReplGroup.NoExistingCluster.md)**  
Utilice esta opción si aún no dispone de un clúster de Valkey o Redis OSS (modo de clúster deshabilitado) para utilizar como nodo principal, o si desea crear un clúster de Valkey o Redis OSS (modo de clúster habilitado). Consulte [Creación de un grupo de replicación de Valkey o Redis OSS desde cero](Replication.CreatingReplGroup.NoExistingCluster.md).

# Creación de un grupo de reproducción mediante un clúster existente
<a name="Replication.CreatingReplGroup.ExistingCluster"></a>

El siguiente procedimiento añade un grupo de replicación a su clúster de un solo nodo de Valkey o Redis OSS (modo de clúster deshabilitado), que es necesario para actualizar el clúster a la última versión de Valkey. Se trata de un procedimiento in situ que no implica ningún tiempo de inactividad ni pérdida de datos. Al crear un grupo de replicación para un clúster de un solo nodo, el nodo del clúster se convierte en el nodo principal del nuevo clúster. Si no tiene un clúster de Valkey o Redis OSS (modo de clúster deshabilitado) que pueda utilizar como el nuevo principal del clúster; consulte [Creación de un grupo de replicación de Valkey o Redis OSS desde cero](Replication.CreatingReplGroup.NoExistingCluster.md).

Un clúster disponible es un clúster de Valkey o Redis OSS de un solo nodo existente. Actualmente, Valkey o Redis OSS (modo de clúster habilitado) no admiten la creación de un clúster con réplicas mediante un clúster de un solo nodo disponible. Si desea crear un clúster de Valkey o Redis OSS (modo de clúster habilitado), consulte [Creación de un clúster de Valkey o Redis OSS (modo de clúster habilitado) (consola)](Replication.CreatingReplGroup.NoExistingCluster.Cluster.md#Replication.CreatingReplGroup.NoExistingCluster.Cluster.CON).

## Creación de un grupo de replicación mediante un clúster existente (consola)
<a name="Replication.CreatingReplGroup.ExistingCluster.CON"></a>

Consulte el tema [Usando el ElastiCache Consola de administración de AWS](Clusters.AddNode.md#Clusters.AddNode.CON).

## Creación de un grupo de replicación mediante un clúster de Valkey o Redis OSS disponible (AWS CLI)
<a name="Replication.CreatingReplGroup.ExistingCluster.CLI"></a>

Hay dos pasos para crear un grupo de replicación con réplicas de lectura al utilizar un clúster de caché de Valkey o Redis OSS disponible para el nodo principal cuando se utiliza la AWS CLI.

Al AWS CLI utilizar el, se crea un grupo de replicación que especifica el nodo independiente disponible como nodo principal del clúster `--primary-cluster-id` y la cantidad de nodos que desea en el clúster mediante el comando CLI,`create-replication-group`. Incluya los siguientes parámetros.

**--replication-group-id**  
El nombre del grupo de replicación que va a crear. El valor de este parámetro se usa como la base de los nombres de los nodos añadidos con un número de tres dígitos secuencial añadido al final de `--replication-group-id`. Por ejemplo, `sample-repl-group-001`.  
Las restricciones de nomenclatura de los grupos de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) son las siguientes:  
+ Deben contener entre 1 y 40 caracteres alfanuméricos o guiones.
+ Deben comenzar por una letra.
+ No pueden contener dos guiones consecutivos.
+ No pueden terminar con un guion.

**--replication-group-description**  
Descripción del grupo de replicación.

**--num-node-groups**  
El número de nodos que desea en este clúster. Este valor incluye el nodo principal. Este parámetro tiene un valor máximo de seis.

**--primary-cluster-id**  
El nombre del nodo del clúster de Valkey o Redis OSS (modo de clúster deshabilitado) disponible que desea que sea el nodo principal en este grupo de replicación.

El siguiente comando crea el grupo de replicación `sample-repl-group` mediante el clúster de Valkey o Redis OSS (modo de clúster deshabilitado) disponible `redis01` como el nodo principal del grupo de replicación. Crea dos nuevos nodos que son réplicas de lectura. La configuración de `redis01` (es decir, grupo de parámetros, grupo de seguridad, tipo de nodo, versión del motor, etc.) se aplicará a todos los nodos del grupo de reproducción.

Para Linux, macOS o Unix:

```
aws elasticache create-replication-group \
   --replication-group-id sample-repl-group \
   --replication-group-description "demo cluster with replicas" \
   --num-cache-clusters 3 \
   --primary-cluster-id redis01
```

Para Windows:

```
aws elasticache create-replication-group ^
   --replication-group-id sample-repl-group ^
   --replication-group-description "demo cluster with replicas" ^
   --num-cache-clusters 3 ^
   --primary-cluster-id redis01
```

Para obtener información y parámetros adicionales que desee utilizar, consulte el AWS CLI tema[create-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/create-replication-group.html).

**A continuación, añada réplicas de lectura al grupo de replicación.**  
Después de haber creado el grupo de reproducción, agregue de una a cinco réplicas de lectura con el comando `create-cache-cluster`, asegurándose de incluir los siguientes parámetros. 

**--cache-cluster-id**  
El nombre del clúster que va a añadir al grupo de replicación.  
Las restricciones para la asignación de nombres de clúster son las siguientes:  
+ Deben contener entre 1 y 40 caracteres alfanuméricos o guiones.
+ Deben comenzar por una letra.
+ No pueden contener dos guiones consecutivos.
+ No pueden terminar con un guion.


**--replication-group-id**  
Es el nombre del grupo de replicación al que va a añadir este clúster.

Repita este comando para cada réplica de lectura que desee agregar al grupo de reproducción, cambiando únicamente el valor del parámetro `--cache-cluster-id`.

**nota**  
Recuerde que un grupo de reproducción no puede tener más de cinco réplicas de lectura. Si intenta agregar una réplica de lectura a un grupo de reproducción que ya tenga cinco réplicas de lectura hará que la operación falle.

El siguiente código añade la réplica de lectura `my-replica01` al grupo de replicación `sample-repl-group`. La configuración del clúster principal (grupo de parámetros, grupo de seguridad, tipo de nodo, etc.) se aplicará a los nodos que se agreguen al grupo de reproducción.

Para Linux, macOS o Unix:

```
aws elasticache create-cache-cluster \
   --cache-cluster-id my-replica01 \
   --replication-group-id sample-repl-group
```

Para Windows:

```
aws elasticache create-cache-cluster ^
   --cache-cluster-id my-replica01 ^
   --replication-group-id sample-repl-group
```

El resultado de este comando será algo similar a lo que se muestra a continuación.

```
{
    "ReplicationGroup": {
        "Status": "creating",
        "Description": "demo cluster with replicas",
        "ClusterEnabled": false,
        "ReplicationGroupId": "sample-repl-group",
        "SnapshotRetentionLimit": 1,
        "AutomaticFailover": "disabled",
        "SnapshotWindow": "00:00-01:00",
        "SnapshottingClusterId": "redis01",
        "MemberClusters": [
            "sample-repl-group-001",
            "sample-repl-group-002",
            "redis01"
        ],
        "CacheNodeType": "cache.m4.large",
        "DataTiering": "disabled",
        "PendingModifiedValues": {}
    }
}
```

Para obtener información adicional, consulte los AWS CLI temas:
+ [create-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/create-replication-group.html)
+ [modify-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-replication-group.html)

## Añadir réplicas a un clúster (API) independiente de Valkey o Redis OSS (modo de clúster desactivado) ElastiCache
<a name="Replication.CreatingReplGroup.ExistingCluster.API"></a>

Al utilizar la ElastiCache API, se crea un grupo de replicación que especifica el nodo independiente disponible como nodo principal del clúster `PrimaryClusterId` y la cantidad de nodos que desea que haya en el clúster mediante el comando CLI,`CreateReplicationGroup`. Incluya los siguientes parámetros.

**ReplicationGroupId**  
El nombre del grupo de replicación que va a crear. El valor de este parámetro se usa como la base de los nombres de los nodos añadidos con un número de tres dígitos secuencial añadido al final de `ReplicationGroupId`. Por ejemplo, `sample-repl-group-001`.  
Las restricciones de nomenclatura de los grupos de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) son las siguientes:  
+ Deben contener entre 1 y 40 caracteres alfanuméricos o guiones.
+ Deben comenzar por una letra.
+ No pueden contener dos guiones consecutivos.
+ No pueden terminar con un guion.

**ReplicationGroupDescription**  
Descripción del clúster con réplicas.

**NumCacheClusters**  
El número de nodos que desea en este clúster. Este valor incluye el nodo principal. Este parámetro tiene un valor máximo de seis.

**PrimaryClusterId**  
El nombre del clúster de Valkey o Redis OSS (modo de clúster deshabilitado) disponible que desea que sea el nodo principal en este clúster.

El siguiente comando crea el clúster con réplicas `sample-repl-group` mediante el clúster de Valkey o Redis OSS (modo de clúster deshabilitado) `redis01` disponible como el nodo principal del grupo de replicación. Crea dos nuevos nodos que son réplicas de lectura. La configuración de `redis01` (es decir, grupo de parámetros, grupo de seguridad, tipo de nodo, versión del motor, etc.) se aplicará a todos los nodos del grupo de reproducción.

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=CreateReplicationGroup 
   &Engine=redis
   &EngineVersion=6.0
   &ReplicationGroupDescription=Demo%20cluster%20with%20replicas
   &ReplicationGroupId=sample-repl-group
   &PrimaryClusterId=redis01
   &Version=2015-02-02
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20150202T192317Z
   &X-Amz-Credential=<credential>
```

Para obtener información adicional, consulte los temas de ElastiCache APL:
+ [CreateReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateReplicationGroup.html)
+ [ModifyReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroup.html)

**A continuación, añada réplicas de lectura al grupo de replicación.**  
Después de haber creado el grupo de reproducción, agregue de una a cinco réplicas de lectura con la operación `CreateCacheCluster`, asegurándose de incluir los siguientes parámetros. 

**CacheClusterId**  
El nombre del clúster que va a añadir al grupo de replicación.  
Las restricciones para la asignación de nombres de clúster son las siguientes:  
+ Deben contener entre 1 y 40 caracteres alfanuméricos o guiones.
+ Deben comenzar por una letra.
+ No pueden contener dos guiones consecutivos.
+ No pueden terminar con un guion.


**ReplicationGroupId**  
Es el nombre del grupo de replicación al que va a añadir este clúster.

Repita esta operación para cada réplica de lectura que desee agregar al grupo de reproducción, cambiando únicamente el valor del parámetro `CacheClusterId`.

El siguiente código agrega la réplica de lectura `myReplica01` al grupo de reproducción `myReplGroup`. La configuración del clúster principal (grupo de parámetros, grupo de seguridad, tipo de nodo, etc.) se aplicará a los nodos que se agreguen al grupo de reproducción.

```
https://elasticache.us-west-2.amazonaws.com/
	?Action=CreateCacheCluster
	&CacheClusterId=myReplica01
	&ReplicationGroupId=myReplGroup
	&SignatureMethod=HmacSHA256
	&SignatureVersion=4
	&Version=2015-02-02
	&X-Amz-Algorithm=&AWS;4-HMAC-SHA256
	&X-Amz-Credential=[your-access-key-id]/20150202/us-west-2/elasticache/aws4_request
	&X-Amz-Date=20150202T170651Z
	&X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date
	&X-Amz-Signature=[signature-value]
```

Para obtener información y parámetros adicionales que quizás quieras usar, consulta el tema sobre la ElastiCache API[CreateCacheCluster](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateCacheCluster.html).

# Creación de un grupo de replicación de Valkey o Redis OSS desde cero
<a name="Replication.CreatingReplGroup.NoExistingCluster"></a>

A continuación, explicaremos cómo crear un grupo de replicación de Valkey o Redis OSS sin utilizar un clúster de Valkey o Redis OSS existente como principal. Puede crear un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) o Valkey o Redis OSS (modo de clúster habilitado) desde cero mediante la consola de ElastiCache, la AWS CLI o la API de ElastiCache.

Antes de continuar, decida si desea crear un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) o Valkey o Redis OSS (modo de clúster habilitado). Si desea obtener orientación para tomar su decisión, consulte [Replicación: Valkey y Redis OSS en modo de clúster deshabilitado o habilitado](Replication.Redis-RedisCluster.md).

**Topics**
+ [Creación de un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) desde cero](Replication.CreatingReplGroup.NoExistingCluster.Classic.md)
+ [Creación de un grupo de replicación en Valkey o Redis OSS (modo de clúster habilitado) desde cero](Replication.CreatingReplGroup.NoExistingCluster.Cluster.md)

# Creación de un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) desde cero
<a name="Replication.CreatingReplGroup.NoExistingCluster.Classic"></a>

Puede crear un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) desde cero mediante la consola de ElastiCache, la AWS CLI o la API de ElastiCache. Un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) siempre tiene un grupo de nodos, un clúster principal y hasta cinco réplicas de lectura. Los grupos de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) no admiten la partición de los datos.

**nota**  
El límite de nodos o de particiones puede aumentarse hasta un máximo de 500 por clúster. Para solicitar un aumento del límite, consulte [AWS Service Limits](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) e incluya el tipo de instancias en la solicitud.

Para crear un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) desde cero, siga uno de estos métodos:

## Creación de un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) desde cero (AWS CLI)
<a name="Replication.CreatingReplGroup.NoExistingCluster.Classic.CLI"></a>

El siguiente procedimiento crea un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) mediante la AWS CLI.

Al crear un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) desde cero, debe crear el grupo de replicación y todos sus nodos con una sola llamada al comando `create-replication-group` de la AWS CLI. Incluya los siguientes parámetros.

**--replication-group-id**  
El nombre del grupo de replicación que va a crear.  
Las restricciones de nomenclatura de los grupos de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) son las siguientes:  
+ Deben contener entre 1 y 40 caracteres alfanuméricos o guiones.
+ Deben comenzar por una letra.
+ No pueden contener dos guiones consecutivos.
+ No pueden terminar con un guion.

**--replication-group-description**  
Descripción del grupo de replicación.

**--num-cache-clusters**  
El número de nodos que desea crear con este grupo de reproducción, combinando el principal y las réplicas de lectura.  
Si habilita las Multi-AZ (`--automatic-failover-enabled`), el valor de `--num-cache-clusters` debe ser de al menos 2.

**--cache-node-type**  
El tipo de nodo para cada nodo en el grupo de replicación.  
ElastiCache admite los siguientes tipos de nodos. En general, los tipos de la generación actual ofrecen más capacidad de memoria y potencia de computación a menor costo comparados con sus equivalentes de generaciones previas.  
Para obtener más información sobre los detalles del rendimiento de cada tipo de nodo, consulte [Tipos de instancia de Amazon EC2](https://aws.amazon.com/ec2/instance-types/).

**--habilitado para organización de datos en niveles**  
Establezca este parámetro si está utilizando un tipo de nodo r6gd. Si no quiere la organización de datos en niveles, defina `--no-data-tiering-enabled`. Para obtener más información, consulte [Organización de datos en niveles en ElastiCache](data-tiering.md).

**--cache-parameter-group**  
Especifique un grupo de parámetros que corresponda a su versión de motor. Si va a ejecutar Redis OSS 3.2.4 o una versión posterior, especifique el grupo de parámetros `default.redis3.2` o un grupo de parámetros derivado de `default.redis3.2` para crear un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado). Para obtener más información, consulte [Parámetros de Valkey y Redis OSS](ParameterGroups.Engine.md#ParameterGroups.Redis).

**--network-type**  
`ipv4`, `ipv6` o `dual-stack`. Si elige la doble pila, debe establecer el parámetro `--IpDiscovery` en `ipv4` o `ipv6`.

**--engine**  
redis

**--engine-version**  
Para conseguir el conjunto de características más completo, elija la última versión de motor.

Los nombres de los nodos se derivarán del nombre del grupo de reproducción anexando `-00`*\$1* al nombre del grupo de reproducción. Por ejemplo, al utilizar el nombre de grupo de reproducción `myReplGroup`, el nombre del principal será `myReplGroup-001`, y el de las réplicas de lectura, de `myReplGroup-002` a `myReplGroup-006`.

Si desea habilitar el cifrado en tránsito o en reposo en este grupo de replicación, agregue uno o estos dos parámetros, `--transit-encryption-enabled` y `--at-rest-encryption-enabled`, y ajústese a las siguientes condiciones.
+ El grupo de replicación debe ejecutar la versión de Redis OSS 3.2.6 o 4.0.10.
+ El grupo de reproducción debe crearse en una Amazon VPC.
+ Debe incluirse también el parámetro `--cache-subnet-group`.
+ Debe incluirse el parámetro `--auth-token` con el valor de cadena especificado por el cliente para el token AUTH (contraseña) que es necesario para realizar las operaciones en este grupo de replicación.

La siguiente operación crea un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) `sample-repl-group` con tres nodos, un nodo principal y dos réplicas.

Para Linux, macOS o Unix:

```
aws elasticache create-replication-group \
   --replication-group-id sample-repl-group \
   --replication-group-description "Demo cluster with replicas" \
   --num-cache-clusters 3 \
   --cache-node-type cache.m4.large \ 
   --engine redis
```

Para Windows:

```
aws elasticache create-replication-group ^
   --replication-group-id sample-repl-group ^
   --replication-group-description "Demo cluster with replicas" ^
   --num-cache-clusters 3 ^
   --cache-node-type cache.m4.large ^  
   --engine redis
```

La salida de este comando es similar a la siguiente.

```
{
    "ReplicationGroup": {
        "Status": "creating",
        "Description": "Demo cluster with replicas",
        "ClusterEnabled": false,
        "ReplicationGroupId": "sample-repl-group",
        "SnapshotRetentionLimit": 0,
        "AutomaticFailover": "disabled",
        "SnapshotWindow": "01:30-02:30",
        "MemberClusters": [
            "sample-repl-group-001",
            "sample-repl-group-002",
            "sample-repl-group-003"
        ],
        "CacheNodeType": "cache.m4.large",
        "DataTiering": "disabled",
        "PendingModifiedValues": {}
    }
}
```

Para obtener información adicional y parámetros que puede querer utilizar, consulte el tema de la AWS CLI [create-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/create-replication-group.html).

## Creación de un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) desde cero (API de ElastiCache)
<a name="Replication.CreatingReplGroup.NoExistingCluster.Classic.API"></a>

El siguiente procedimiento sirve para crear un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) mediante la API de ElastiCache.

Al crear un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) desde cero, debe crear el grupo de replicación y todos sus nodos con una sola llamada a la operación de la API de ElastiCache `CreateReplicationGroup`. Incluya los siguientes parámetros.

**ReplicationGroupId**  
El nombre del grupo de replicación que va a crear.  
Estas son las restricciones de nomenclatura de los grupos de replicación de Valkey o Redis OSS (modo de clúster habilitado):  
+ Deben contener entre 1 y 40 caracteres alfanuméricos o guiones.
+ Deben comenzar por una letra.
+ No pueden contener dos guiones consecutivos.
+ No pueden terminar con un guion.

**ReplicationGroupDescription**  
Su descripción del grupo de reproducción.

**NumCacheClusters**  
El número total de nodos que desea crear con este grupo de reproducción, combinando el principal y las réplicas de lectura.  
Si habilita las Multi-AZ (`AutomaticFailoverEnabled=true`), el valor de `NumCacheClusters` debe ser de al menos 2.

**CacheNodeType**  
El tipo de nodo para cada nodo en el grupo de replicación.  
ElastiCache admite los siguientes tipos de nodos. En general, los tipos de la generación actual ofrecen más capacidad de memoria y potencia de computación a menor costo comparados con sus equivalentes de generaciones previas.  
Para obtener más información sobre los detalles del rendimiento de cada tipo de nodo, consulte [Tipos de instancia de Amazon EC2](https://aws.amazon.com/ec2/instance-types/).

**--habilitado para organización de datos en niveles**  
Establezca este parámetro si está utilizando un tipo de nodo r6gd. Si no quiere la organización de datos en niveles, defina `--no-data-tiering-enabled`. Para obtener más información, consulte [Organización de datos en niveles en ElastiCache](data-tiering.md).

**CacheParameterGroup**  
Especifique un grupo de parámetros que corresponda a su versión de motor. Si va a ejecutar Redis OSS 3.2.4 o una versión posterior, especifique el grupo de parámetros `default.redis3.2` o un grupo de parámetros derivado de `default.redis3.2` para crear un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado). Para obtener más información, consulte [Parámetros de Valkey y Redis OSS](ParameterGroups.Engine.md#ParameterGroups.Redis).

**--network-type**  
`ipv4`, `ipv` o `dual-stack`. Si elige la doble pila, debe establecer el parámetro `--IpDiscovery` en `ipv4` o `ipv6`.

**Motor**  
redis

**EngineVersion**  
6.0

Los nombres de los nodos se derivarán del nombre del grupo de reproducción anexando `-00`*\$1* al nombre del grupo de reproducción. Por ejemplo, al utilizar el nombre de grupo de reproducción `myReplGroup`, el nombre del principal será `myReplGroup-001`, y el de las réplicas de lectura, de `myReplGroup-002` a `myReplGroup-006`.

Si desea habilitar el cifrado en tránsito o en reposo en este grupo de replicación, agregue uno o estos dos parámetros, `TransitEncryptionEnabled=true` y `AtRestEncryptionEnabled=true`, y ajústese a las siguientes condiciones.
+ El grupo de replicación debe ejecutar la versión de Redis OSS 3.2.6 o 4.0.10.
+ El grupo de reproducción debe crearse en una Amazon VPC.
+ Debe incluirse también el parámetro `CacheSubnetGroup`.
+ Debe incluirse el parámetro `AuthToken` con el valor de cadena especificado por el cliente para el token AUTH (contraseña) que es necesario para realizar las operaciones en este grupo de replicación.

La siguiente operación crea el grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) `myReplGroup` con tres nodos, un nodo principal y dos réplicas.

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=CreateReplicationGroup 
   &CacheNodeType=cache.m4.large
   &CacheParameterGroup=default.redis6.x
   &Engine=redis
   &EngineVersion=6.0
   &NumCacheClusters=3
   &ReplicationGroupDescription=test%20group
   &ReplicationGroupId=myReplGroup
   &Version=2015-02-02
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20150202T192317Z
   &X-Amz-Credential=<credential>
```

Para obtener información adicional y parámetros que puede querer utilizar, consulte el tema de la API de ElastiCache [CreateReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateReplicationGroup.html).

# Creación de un grupo de replicación en Valkey o Redis OSS (modo de clúster habilitado) desde cero
<a name="Replication.CreatingReplGroup.NoExistingCluster.Cluster"></a>

Puede crear un clúster de Valkey o Redis OSS (modo de clúster habilitado) (API/CLI: *grupo de replicación*) con la consola de ElastiCache, la AWS CLI o la API de ElastiCache. Un grupo de replicación de Valkey o Redis OSS (modo de clúster habilitado) tiene de 1 a 500 particiones (API/CLI: grupos de nodos), un nodo principal en cada partición y hasta 5 réplicas de lectura en cada partición. Puede crear un clúster con un mayor número de particiones y un menor número de réplicas con un total de hasta 90 nodos por clúster. Esta configuración de clúster puede variar desde 90 particiones y 0 réplicas hasta 15 particiones y 5 réplicas, que es el número máximo de réplicas permitido.

El límite de nodos o particiones se puede aumentar a un máximo de 500 por clúster si la versión del motor de Valkey o Redis OSS es 5.0.6 o posteriores. Por ejemplo, puede elegir configurar un clúster de 500 nodos que oscila entre 83 particiones (uno primario y 5 réplicas por partición) y 500 particiones (único primario y sin réplicas). Asegúrese de que hay suficientes direcciones IP disponibles para acomodar el aumento. Algunos problemas comunes incluyen que las subredes del grupo de subredes tienen un rango CIDR demasiado pequeño o que otros clústeres comparten y utilizan considerablemente las subredes. Para obtener más información, consulte [Creación de un grupo de subredes](SubnetGroups.Creating.md).

 Para las versiones inferiores a 5.0.6, el límite es de 250 por clúster.

Para solicitar un aumento del límite, consulte [AWS Service Limits](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) y elija el tipo de límite **Nodes per cluster per instance type** (Nodos por clúster por tipo de instancias). 

**Topics**
+ [Uso de la consola de ElastiCache](#Replication.CreatingReplGroup.NoExistingCluster.Cluster.CON)
+ [Creación de un grupo de replicación de Valkey o Redis OSS (modo de clúster habilitado) desde cero (AWS CLI)](#Replication.CreatingReplGroup.NoExistingCluster.Cluster.CLI)
+ [Creación de un grupo de replicación en Valkey o Redis OSS (modo de clúster habilitado) desde cero (API de ElastiCache)](#Replication.CreatingReplGroup.NoExistingCluster.Cluster.API)

## Creación de un clúster de Valkey o Redis OSS (modo de clúster habilitado) (consola)
<a name="Replication.CreatingReplGroup.NoExistingCluster.Cluster.CON"></a>

Para crear un clúster de Valkey o Redis OSS (modo de clúster habilitado), consulte [Creación de un clúster de Valkey o Redis OSS (modo de clúster habilitado) (consola)](Clusters.Create.md#Clusters.Create.CON.RedisCluster). Asegúrese de habilitar el modo de clúster, **Cluster Mode enabled (Scale Out)** y especifique al menos dos particiones y un nodo de réplica en cada uno.

## Creación de un grupo de replicación de Valkey o Redis OSS (modo de clúster habilitado) desde cero (AWS CLI)
<a name="Replication.CreatingReplGroup.NoExistingCluster.Cluster.CLI"></a>

El siguiente procedimiento crea un grupo de replicación de Valkey o Redis OSS (modo de clúster habilitado) mediante la AWS CLI.

Al crear un grupo de replicación de Valkey o Redis OSS (modo de clúster habilitado) desde cero, debe crear el grupo de replicación y todos sus nodos con una sola llamada al comando `create-replication-group` de la AWS CLI. Incluya los siguientes parámetros.

**--replication-group-id**  
El nombre del grupo de replicación que va a crear.  
Estas son las restricciones de nomenclatura de los grupos de replicación de Valkey o Redis OSS (modo de clúster habilitado):  
+ Deben contener entre 1 y 40 caracteres alfanuméricos o guiones.
+ Deben comenzar por una letra.
+ No pueden contener dos guiones consecutivos.
+ No pueden terminar con un guion.

**--replication-group-description**  
Descripción del grupo de replicación.

**--cache-node-type**  
El tipo de nodo para cada nodo en el grupo de replicación.  
ElastiCache admite los siguientes tipos de nodos. En general, los tipos de la generación actual ofrecen más capacidad de memoria y potencia de computación a menor costo comparados con sus equivalentes de generaciones previas.  
Para obtener más información sobre los detalles del rendimiento de cada tipo de nodo, consulte [Tipos de instancia de Amazon EC2](https://aws.amazon.com/ec2/instance-types/).

**--habilitado para organización de datos en niveles**  
Establezca este parámetro si está utilizando un tipo de nodo r6gd. Si no quiere la organización de datos en niveles, defina `--no-data-tiering-enabled`. Para obtener más información, consulte [Organización de datos en niveles en ElastiCache](data-tiering.md).

**--cache-parameter-group**  
Especifique el grupo de parámetros `default.redis6.x.cluster.on` o un grupo de parámetros derivado de `default.redis6.x.cluster.on` para crear un grupo de replicación de Valkey o Redis OSS (modo de clúster habilitado). Para obtener más información, consulte [Cambios de parámetros de Redis OSS 6.x](ParameterGroups.Engine.md#ParameterGroups.Redis.6-x).

**--engine**  
redis

**--engine-version**  
3.2.4

**--num-node-groups**  
El número de grupos de nodo de este grupo de reproducción. Los valores válidos son de 1 a 500.  
El límite de nodos o de particiones puede aumentarse hasta un máximo de 500 por clúster. Para solicitar un aumento del límite, consulte [AWS Service Limits](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) y seleccione el tipo de límite “Nodes per cluster per instance type” (Nodos por clúster por tipo de instancias). 

**--replicas-per-node-group**  
El número de nodos de réplica de cada grupo de nodos. Los valores válidos son de 0 a 5.

**--network-type**  
`ipv4`, `ipv` o `dual-stack`. Si elige la doble pila, debe establecer el parámetro `--IpDiscovery` en `ipv4` o `ipv6`.

Si desea habilitar el cifrado en tránsito o en reposo en este grupo de replicación, agregue uno o estos dos parámetros, `--transit-encryption-enabled` y `--at-rest-encryption-enabled`, y ajústese a las siguientes condiciones.
+ El grupo de replicación debe ejecutar la versión de Redis OSS 3.2.6 o 4.0.10.
+ El grupo de reproducción debe crearse en una Amazon VPC.
+ Debe incluirse también el parámetro `--cache-subnet-group`.
+ Debe incluirse el parámetro `--auth-token` con el valor de cadena especificado por el cliente para el token AUTH (contraseña) que es necesario para realizar las operaciones en este grupo de replicación.

La siguiente operación crea el grupo de replicación `sample-repl-group` de Valkey o Redis OSS (modo de clúster habilitado) con tres grupos de nodos/particiones (--num-node-groups), cada uno de ellos con tres nodos, uno principal y dos réplicas de lectura (--replicas-per-node-group).

Para Linux, macOS o Unix:

```
aws elasticache create-replication-group \
   --replication-group-id sample-repl-group \
   --replication-group-description "Demo cluster with replicas" \
   --num-node-groups 3 \
   --replicas-per-node-group 2 \
   --cache-node-type cache.m4.large \ 
   --engine redis \   
   --security-group-ids SECURITY_GROUP_ID \    
   --cache-subnet-group-name SUBNET_GROUP_NAME>
```

Para Windows:

```
aws elasticache create-replication-group ^
   --replication-group-id sample-repl-group ^
   --replication-group-description "Demo cluster with replicas" ^
   --num-node-groups 3 ^
   --replicas-per-node-group 2 ^
   --cache-node-type cache.m4.large ^ 
   --engine redis ^   
   --security-group-ids SECURITY_GROUP_ID ^      
   --cache-subnet-group-name SUBNET_GROUP_NAME>
```

El comando anterior genera la siguiente salida.

```
{
    "ReplicationGroup": {
        "Status": "creating", 
        "Description": "Demo cluster with replicas", 
        "ReplicationGroupId": "sample-repl-group", 
        "SnapshotRetentionLimit": 0, 
        "AutomaticFailover": "enabled", 
        "SnapshotWindow": "05:30-06:30", 
        "MemberClusters": [
            "sample-repl-group-0001-001", 
            "sample-repl-group-0001-002", 
            "sample-repl-group-0001-003", 
            "sample-repl-group-0002-001", 
            "sample-repl-group-0002-002", 
            "sample-repl-group-0002-003", 
            "sample-repl-group-0003-001", 
            "sample-repl-group-0003-002", 
            "sample-repl-group-0003-003"
        ], 
        "PendingModifiedValues": {}
    }
}
```

Al crear un grupo de replicación de Valkey o Redis OSS (modo de clúster habilitado) desde cero, puede configurar cada partición en el clúster con el parámetro `--node-group-configuration`, tal y como se muestra en el siguiente ejemplo, que configura dos grupos de nodos (consola: particiones). La primera partición tiene dos nodos, un principal y una réplica de lectura. La segunda partición tiene tres nodos, un principal y dos réplicas de lectura.

**--node-group-configuration**  
La configuración para cada grupo de nodos. El parámetro `--node-group-configuration` consta de los siguientes campos.  
+ `PrimaryAvailabilityZone`: la zona de disponibilidad en la que se encuentra el nodo primario de este grupo de nodos. Si se omite este parámetro, ElastiCache elige la zona de disponibilidad del nodo primario.

  **Por ejemplo:** us-west-2a.
+ `ReplicaAvailabilityZones`: una lista separada por comas de las zonas de disponibilidad en las que se encuentran las réplicas de lectura. El número de zonas de disponibilidad de esta lista debe coincidir con el valor de `ReplicaCount`. Si se omite este parámetro, ElastiCache elige las zonas de disponibilidad de los nodos de réplica.

  **Ejemplo:** "us-west-2a,us-west-2b,us-west-2c"
+ `ReplicaCount`: el número de nodos de réplica de este grupo de nodos.
+ `Slots`: una cadena que especifica el espacio de claves para el grupo de nodos. La cadena está en formato `startKey-endKey`. Si se omite este parámetro, ElastiCache asigna claves igualmente entre los grupos de nodos.

  **Ejemplo:** "0-4999"

   

La siguiente operación crea el grupo de replicación `new-group` de Valkey o Redis OSS (modo de clúster habilitado) con dos grupos de nodos/particiones (`--num-node-groups`). A diferencia del ejemplo anterior, cada grupo de nodos se configura de forma distinta a los demás grupos de nodos (`--node-group-configuration`).

Para Linux, macOS o Unix:

```
aws elasticache create-replication-group \
  --replication-group-id new-group \
  --replication-group-description "Sharded replication group" \
  --engine redis \    
  --snapshot-retention-limit 8 \
  --cache-node-type cache.m4.medium \
  --num-node-groups 2 \
  --node-group-configuration \
      "ReplicaCount=1,Slots=0-8999,PrimaryAvailabilityZone='us-east-1c',ReplicaAvailabilityZones='us-east-1b'" \
      "ReplicaCount=2,Slots=9000-16383,PrimaryAvailabilityZone='us-east-1a',ReplicaAvailabilityZones='us-east-1a','us-east-1c'"
```

Para Windows:

```
aws elasticache create-replication-group ^
  --replication-group-id new-group ^
  --replication-group-description "Sharded replication group" ^
  --engine redis ^    
  --snapshot-retention-limit 8 ^
  --cache-node-type cache.m4.medium ^
  --num-node-groups 2 ^
  --node-group-configuration \
      "ReplicaCount=1,Slots=0-8999,PrimaryAvailabilityZone='us-east-1c',ReplicaAvailabilityZones='us-east-1b'" \
      "ReplicaCount=2,Slots=9000-16383,PrimaryAvailabilityZone='us-east-1a',ReplicaAvailabilityZones='us-east-1a','us-east-1c'"
```

La operación anterior genera la siguiente salida.

```
{
    "ReplicationGroup": {
        "Status": "creating", 
        "Description": "Sharded replication group", 
        "ReplicationGroupId": "rc-rg", 
        "SnapshotRetentionLimit": 8, 
        "AutomaticFailover": "enabled", 
        "SnapshotWindow": "10:00-11:00", 
        "MemberClusters": [
            "rc-rg-0001-001", 
            "rc-rg-0001-002", 
            "rc-rg-0002-001", 
            "rc-rg-0002-002", 
            "rc-rg-0002-003"
        ], 
        "PendingModifiedValues": {}
    }
}
```

Para obtener información adicional y parámetros que puede querer utilizar, consulte el tema AWS CLI de la [create-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/create-replication-group.html).

## Creación de un grupo de replicación en Valkey o Redis OSS (modo de clúster habilitado) desde cero (API de ElastiCache)
<a name="Replication.CreatingReplGroup.NoExistingCluster.Cluster.API"></a>

El siguiente procedimiento crea un grupo de replicación de Valkey o Redis OSS (modo de clúster habilitado) mediante la API de ElastiCache.

Al crear un grupo de replicación de Valkey o Redis OSS (modo de clúster habilitado) desde cero, debe crear el grupo de replicación y todos sus nodos con una sola llamada a la operación de la API de ElastiCache `CreateReplicationGroup`. Incluya los siguientes parámetros.

**ReplicationGroupId**  
El nombre del grupo de replicación que va a crear.  
Estas son las restricciones de nomenclatura de los grupos de replicación de Valkey o Redis OSS (modo de clúster habilitado):  
+ Deben contener entre 1 y 40 caracteres alfanuméricos o guiones.
+ Deben comenzar por una letra.
+ No pueden contener dos guiones consecutivos.
+ No pueden terminar con un guion.

**ReplicationGroupDescription**  
Descripción del grupo de replicación.

**NumNodeGroups**  
El número de grupos de nodo que desea crear con este grupo de reproducción. Los valores válidos son de 1 a 500.

**ReplicasPerNodeGroup**  
El número de nodos de réplica de cada grupo de nodos. Los valores válidos son de 1 a 5.

**NodeGroupConfiguration**  
La configuración para cada grupo de nodos. El parámetro `NodeGroupConfiguration` consta de los siguientes campos.  
+ `PrimaryAvailabilityZone`: la zona de disponibilidad en la que se encuentra el nodo primario de este grupo de nodos. Si se omite este parámetro, ElastiCache elige la zona de disponibilidad del nodo primario.

  **Por ejemplo:** us-west-2a.
+ `ReplicaAvailabilityZones`: una lista de las zonas de disponibilidad en las que se encuentran las réplicas de lectura. El número de zonas de disponibilidad de esta lista debe coincidir con el valor de `ReplicaCount`. Si se omite este parámetro, ElastiCache elige las zonas de disponibilidad de los nodos de réplica.
+ `ReplicaCount`: el número de nodos de réplica de este grupo de nodos.
+ `Slots`: una cadena que especifica el espacio de claves para el grupo de nodos. La cadena está en formato `startKey-endKey`. Si se omite este parámetro, ElastiCache asigna claves igualmente entre los grupos de nodos.

  **Ejemplo:** "0-4999"

   

**CacheNodeType**  
El tipo de nodo para cada nodo en el grupo de replicación.  
ElastiCache admite los siguientes tipos de nodos. En general, los tipos de la generación actual ofrecen más capacidad de memoria y potencia de computación a menor costo comparados con sus equivalentes de generaciones previas.  
Para obtener más información sobre los detalles del rendimiento de cada tipo de nodo, consulte [Tipos de instancia de Amazon EC2](https://aws.amazon.com/ec2/instance-types/).

**--habilitado para organización de datos en niveles**  
Establezca este parámetro si está utilizando un tipo de nodo r6gd. Si no quiere la organización de datos en niveles, defina `--no-data-tiering-enabled`. Para obtener más información, consulte [Organización de datos en niveles en ElastiCache](data-tiering.md).

**CacheParameterGroup**  
Especifique el grupo de parámetros `default.redis6.x.cluster.on` o un grupo de parámetros derivado de `default.redis6.x.cluster.on` para crear un grupo de replicación de Valkey o Redis OSS (modo de clúster habilitado). Para obtener más información, consulte [Cambios de parámetros de Redis OSS 6.x](ParameterGroups.Engine.md#ParameterGroups.Redis.6-x).

**--network-type**  
`ipv4`, `ipv` o `dual-stack`. Si elige la doble pila, debe establecer el parámetro `--IpDiscovery` en `ipv4` o `ipv6`.

**Motor**  
redis

**EngineVersion**  
6.0

Si desea habilitar el cifrado en tránsito o en reposo en este grupo de replicación, agregue uno o estos dos parámetros, `TransitEncryptionEnabled=true` y `AtRestEncryptionEnabled=true`, y ajústese a las siguientes condiciones.
+ El grupo de replicación debe ejecutar la versión de Redis OSS 3.2.6 o 4.0.10.
+ El grupo de reproducción debe crearse en una Amazon VPC.
+ Debe incluirse también el parámetro `CacheSubnetGroup`.
+ Debe incluirse el parámetro `AuthToken` con el valor de cadena especificado por el cliente para el token AUTH (contraseña) que es necesario para realizar las operaciones en este grupo de replicación.

Se agregan saltos de línea para facilitar la lectura.

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=CreateReplicationGroup 
   &CacheNodeType=cache.m4.large
   &CacheParemeterGroup=default.redis6.xcluster.on
   &Engine=redis
   &EngineVersion=6.0
   &NumNodeGroups=3
   &ReplicasPerNodeGroup=2
   &ReplicationGroupDescription=test%20group
   &ReplicationGroupId=myReplGroup
   &Version=2015-02-02
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20150202T192317Z
   &X-Amz-Credential=<credential>
```

Para obtener información adicional y parámetros que puede querer utilizar, consulte el tema de la API de ElastiCache [CreateReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateReplicationGroup.html).

# Visualización de detalles de un grupo de reproducción
<a name="Replication.ViewDetails"></a>

Puede que a veces desee ver los detalles de un grupo de reproducción. Puede utilizar la consola de ElastiCache, la AWS CLI para ElastiCache o la API de ElastiCache. El proceso con la consola es diferente para Valkey o Redis OSS (modo de clúster deshabilitado) que para Valkey o Redis OSS (modo de clúster habilitado).

**Contents**
+ [Visualización de un clúster de Valkey o Redis OSS (modo de clúster deshabilitado) con réplicas](Replication.ViewDetails.Redis.md)
  + [Uso de la consola de ElastiCache](Replication.ViewDetails.Redis.md#Replication.ViewDetails.Redis.CON)
  + [Uso de AWS CLI](Replication.ViewDetails.Redis.md#Replication.ViewDetails.Redis.CLI)
  + [Uso de la API de ElastiCache](Replication.ViewDetails.Redis.md#Replication.ViewDetails.Redis.API)
+ [Visualización de un grupo de replicación: Valkey o Redis OSS (modo de clúster deshabilitado)](Replication.ViewDetails.RedisCluster.md)
  + [Uso de la consola de ElastiCache](Replication.ViewDetails.RedisCluster.md#Replication.ViewDetails.RedisCluster.CON)
  + [Uso de AWS CLI](Replication.ViewDetails.RedisCluster.md#Replication.ViewDetails.RedisCluster.CLI)
  + [Uso de la API de ElastiCache](Replication.ViewDetails.RedisCluster.md#Replication.ViewDetails.RedisCluster.API)
+ [Visualización de detalles de un grupo de reproducción (AWS CLI)](Replication.ViewDetails.CLI.md)
+ [Visualización de detalles de un grupo de reproducción (API de ElastiCache)](Replication.ViewDetails.API.md)

# Visualización de un clúster de Valkey o Redis OSS (modo de clúster deshabilitado) con réplicas
<a name="Replication.ViewDetails.Redis"></a>

Puede ver los detalles de un clúster de Valkey o Redis OSS (modo de clúster deshabilitado) con réplicas (API/CLI: *grupo de replicación*) con la consola de ElastiCache, la AWS CLI para ElastiCache o la API de ElastiCache.

**Contents**
+ [Uso de la consola de ElastiCache](#Replication.ViewDetails.Redis.CON)
+ [Uso de AWS CLI](#Replication.ViewDetails.Redis.CLI)
+ [Uso de la API de ElastiCache](#Replication.ViewDetails.Redis.API)

## Visualización de los detalles de un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) (consola)
<a name="Replication.ViewDetails.Redis.CON"></a>

Para ver los detalles de un clúster de Valkey o Redis OSS (modo de clúster deshabilitado) con réplicas mediante la consola de ElastiCache, consulte el tema [Visualización de los detalles de un clúster de Valkey o Redis OSS (modo de clúster deshabilitado) (consola)](Clusters.ViewDetails.md#Clusters.ViewDetails.CON.Redis).

## Visualización de los detalles de un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) (AWS CLI)
<a name="Replication.ViewDetails.Redis.CLI"></a>

Para obtener un ejemplo de la AWS CLI que muestre detalles de un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado), consulte [Visualización de detalles de un grupo de reproducción (AWS CLI)](Replication.ViewDetails.CLI.md).

## Visualización de los detalles de un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) (API de ElastiCache)
<a name="Replication.ViewDetails.Redis.API"></a>

Para obtener un ejemplo de la API de ElastiCache que muestre detalles de un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado), consulte [Visualización de detalles de un grupo de reproducción (API de ElastiCache)](Replication.ViewDetails.API.md).

# Visualización de un grupo de replicación: Valkey o Redis OSS (modo de clúster deshabilitado)
<a name="Replication.ViewDetails.RedisCluster"></a>

## Visualización de un clúster de Valkey o Redis OSS (modo de clúster habilitado) (consola)
<a name="Replication.ViewDetails.RedisCluster.CON"></a>

Para ver los detalles de un clúster de Valkey o Redis OSS (modo de clúster habilitado) mediante la consola de ElastiCache, consulte [Visualización de los detalles de un clúster de Valkey o Redis OSS (modo de clúster habilitado) (consola)](Clusters.ViewDetails.md#Clusters.ViewDetails.CON.RedisCluster).

## Visualización de un clúster de Valkey o Redis OSS (modo de clúster habilitado) (AWS CLI)
<a name="Replication.ViewDetails.RedisCluster.CLI"></a>

Para obtener un ejemplo de la CLI de ElastiCache que muestre detalles de un grupo de replicación de Valkey o Redis OSS (modo de clúster habilitado), consulte [Visualización de detalles de un grupo de reproducción (AWS CLI)](Replication.ViewDetails.CLI.md).

## Visualización de un clúster de Valkey o Redis OSS (modo de clúster habilitado) (API de ElastiCache)
<a name="Replication.ViewDetails.RedisCluster.API"></a>

Para obtener un ejemplo de la API de ElastiCache que muestre detalles de un grupo de replicación de Valkey o Redis OSS (modo de clúster habilitado), consulte [Visualización de detalles de un grupo de reproducción (API de ElastiCache)](Replication.ViewDetails.API.md).

# Visualización de detalles de un grupo de reproducción (AWS CLI)
<a name="Replication.ViewDetails.CLI"></a>

Puede ver los detalles de un grupo de reproducción utilizando el comando AWS CLI de la `describe-replication-groups`. Utilice los siguientes parámetros opcionales para perfeccionar las listas. La omisión de los parámetros devuelve detalles de hasta 100 grupos de reproducción.

**Parámetros opcionales**
+ `--replication-group-id`: utilice este parámetro para enumerar los detalles de un grupo de reproducción específico. En caso de que el grupo de reproducción especificado tenga más de un grupo de nodos, los resultados se devuelven agrupados por grupo de nodos.
+ `--max-items`: utilice este parámetro para limitar el número de grupos de reproducción mostrado. El valor de `--max-items` no puede ser inferior a 20 ni superior a 100.

**Example**  
El siguiente código enumera los detalles de hasta 100 grupos de reproducción.  

```
aws elasticache describe-replication-groups
```
El siguiente código enumera los detalles de `sample-repl-group`.  

```
aws elasticache describe-replication-groups --replication-group-id sample-repl-group
```
El siguiente código enumera los detalles de `sample-repl-group`.  

```
aws elasticache describe-replication-groups --replication-group-id sample-repl-group
```
El siguiente código enumera los detalles de hasta 25 grupos de reproducción.  

```
aws elasticache describe-replication-groups --max-items 25
```
La salida de esta operación anterior tendrá un aspecto similar al siguiente (formato JSON).  

```
{
   "ReplicationGroups": [
     {
       "Status": "available", 
       "Description": "test", 
       "NodeGroups": [
         {
            "Status": "available", 
               "NodeGroupMembers": [
                  {
                     "CurrentRole": "primary", 
                     "PreferredAvailabilityZone": "us-west-2a", 
                     "CacheNodeId": "0001", 
                     "ReadEndpoint": {
                        "Port": 6379, 
                        "Address": "rg-name-001.1abc4d.0001.usw2.cache.amazonaws.com"
                     }, 
                     "CacheClusterId": "rg-name-001"
                  }, 
                  {
                     "CurrentRole": "replica", 
                     "PreferredAvailabilityZone": "us-west-2b", 
                     "CacheNodeId": "0001", 
                     "ReadEndpoint": {
                        "Port": 6379, 
                        "Address": "rg-name-002.1abc4d.0001.usw2.cache.amazonaws.com"
                     }, 
                     "CacheClusterId": "rg-name-002"
                  }, 
                  {
                     "CurrentRole": "replica", 
                     "PreferredAvailabilityZone": "us-west-2c", 
                     "CacheNodeId": "0001", 
                     "ReadEndpoint": {
                        "Port": 6379, 
                        "Address": "rg-name-003.1abc4d.0001.usw2.cache.amazonaws.com"
                     }, 
                     "CacheClusterId": "rg-name-003"
                  }
               ], 
               "NodeGroupId": "0001", 
               "PrimaryEndpoint": {
                  "Port": 6379, 
                  "Address": "rg-name.1abc4d.ng.0001.usw2.cache.amazonaws.com"
               }
            }
         ], 
         "ReplicationGroupId": "rg-name", 
         "AutomaticFailover": "enabled", 
         "SnapshottingClusterId": "rg-name-002", 
         "MemberClusters": [
            "rg-name-001", 
            "rg-name-002", 
            "rg-name-003"
         ], 
         "PendingModifiedValues": {}
      }, 
      {
      ... some output omitted for brevity
      }
   ]
}
```

Para obtener más información, consulte la AWS CLI para el tema de ElastiCache [describe-replication-groups](https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-replication-groups.html).

# Visualización de detalles de un grupo de reproducción (API de ElastiCache)
<a name="Replication.ViewDetails.API"></a>

Puede ver los detalles de una reproducción utilizando la operación AWS CLI de la `DescribeReplicationGroups`. Utilice los siguientes parámetros opcionales para perfeccionar las listas. La omisión de los parámetros devuelve detalles de hasta 100 grupos de reproducción.

**Parámetros opcionales**
+ `ReplicationGroupId`: utilice este parámetro para enumerar los detalles de un grupo de reproducción específico. En caso de que el grupo de reproducción especificado tenga más de un grupo de nodos, los resultados se devuelven agrupados por grupo de nodos.
+ `MaxRecords`: utilice este parámetro para limitar el número de grupos de reproducción mostrado. El valor de `MaxRecords` no puede ser inferior a 20 ni superior a 100. El valor predeterminado es 100.

**Example**  
El siguiente código enumera los detalles de hasta 100 grupos de reproducción.  

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=DescribeReplicationGroups
   &Version=2015-02-02
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20150202T192317Z
   &X-Amz-Credential=<credential>
```
El siguiente código enumera los detalles de `myReplGroup`.  

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=DescribeReplicationGroups
   &ReplicationGroupId=myReplGroup
   &Version=2015-02-02
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20150202T192317Z
   &X-Amz-Credential=<credential>
```
El siguiente código enumera los detalles de hasta 25 clústeres.  

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=DescribeReplicationGroups
   &MaxRecords=25
   &Version=2015-02-02
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20150202T192317Z
   &X-Amz-Credential=<credential>
```

Para obtener más información, consulte el tema de referencia de la API de ElastiCache [DescribeReplicationGroups](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeReplicationGroups.html).

# Búsqueda de puntos de enlace del grupo de reproducción
<a name="Replication.Endpoints"></a>

Una aplicación puede conectarse a cualquier nodo en un grupo de reproducción, siempre que tenga el punto de conexión de DNS y el número de puerto de ese nodo. En función de si ejecuta un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) o de Valkey o Redis OSS (modo de clúster habilitado), le interesarán distintos puntos de conexión.

**Valkey o Redis OSS (modo de clúster deshabilitado)**  
Los clústeres de Valkey o Redis OSS (modo de clúster deshabilitado) con réplicas tienen tres tipos de puntos de conexión: el *punto de conexión principal*, el *punto de conexión del lector* y los *puntos de conexión de nodos*. El punto de conexión principal es un nombre de DNS que siempre se resuelve en el nodo principal del clúster. El punto de conexión principal es inmune a los cambios en el clúster, como la promoción de una réplica de lectura a la función principal. Para una actividad de escritura, recomendamos que sus aplicaciones se conecten al punto de conexión principal.

Un punto de conexión del lector dividirá de manera uniforme las conexiones entrantes al punto de conexión entre todas las réplicas de lectura de un clúster de ElastiCache. Factores adicionales como cuando la aplicación crea las conexiones o cómo la aplicación (re)utiliza las conexiones determinará la distribución del tráfico. Los puntos de enlace de lector se mantienen actualizados con los cambios del clúster en tiempo real cuando se añaden o eliminan réplicas. Puede colocar las diferentes réplicas de lectura del clúster de ElastiCache para Redis OSS en distintas zonas de disponibilidad (AZ) de AWS para garantizar la alta disponibilidad de los puntos de conexión del lector. 

**nota**  
Un punto de conexión del lector no es un equilibrador de carga. Se trata de un registro de DNS que se resolverá en una dirección IP de uno de los nodos de réplica en forma de turno rotativo.

Para la actividad de lectura, las aplicaciones pueden conectarse también a cualquier nodo del clúster. A diferencia del punto de conexión principal, los puntos de conexión de nodo se resuelven en puntos de enlace específicos. Si realiza un cambio en su clúster, como añadir o eliminar una réplica, debe actualizar los puntos de enlace del nodo en su aplicación.

**Valkey o Redis OSS (modo de clúster habilitado)**  
Los clústeres de Valkey o Redis OSS (modo de clúster habilitado) con réplicas, debido a que cuentan con varias particiones (API/CLI: grupos de nodos), lo que significa que también tienen varios nodos principales, cuentan con una estructura de puntos de conexión distinta a la de los clústeres de Valkey o Redis OSS (modo de clúster deshabilitado). Valkey o Redis OSS (modo de clúster habilitado) tienen un *punto de conexión de configuración* que conoce todos los puntos de conexión principales y de nodo del clúster. La aplicación se conecta al punto de conexión de configuración. Cuando su aplicación escribe o lee en el punto de conexión de configuración del clúster, Valkey o Redis OSS determinan, en segundo plano, a qué partición pertenece la clave y qué punto de conexión de dicha partición se debe utilizar. Todo es bastante transparente para su aplicación.

Puede buscar los puntos de enlace de un clúster mediante la consola de ElastiCache, la AWS CLI o la API de ElastiCache.

**Búsqueda de puntos de enlace del grupo de reproducción**

Para encontrar los puntos de enlace de su grupo de reproducción, consulte uno de los siguientes temas:
+ [Búsqueda de puntos de conexión de un clúster de Valkey o Redis OSS (modo de clúster deshabilitado) (consola)](Endpoints.md#Endpoints.Find.Redis)
+ [Búsqueda de puntos de conexión para un clúster de Valkey o Redis OSS (modo de clúster habilitado) (consola)](Endpoints.md#Endpoints.Find.RedisCluster)
+ [Búsqueda de los puntos de conexión de los grupos de replicación de Valkey o Redis OSS (AWS CLI)](Endpoints.md#Endpoints.Find.CLI.ReplGroups)
+ [Búsqueda de puntos de conexión de grupos de replicación de Valkey o Redis OSS (API de ElastiCache)](Endpoints.md#Endpoints.Find.API.ReplGroups)

# Modificación de un grupo de reproducción
<a name="Replication.Modify"></a>

**Restricciones importantes**  
Actualmente, ElastiCache admite modificaciones limitadas de un grupo de replicación de Valkey o Redis OSS (modo de clúster habilitado), por ejemplo, cambiar la versión del motor mediante la operación API (`ModifyReplicationGroup`CLI:`modify-replication-group`). Puede modificar el número de particiones (grupos de nodos) en un clúster de Valkey o Redis OSS (modo de clúster habilitado) con la operación [https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroupShardConfiguration.html](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroupShardConfiguration.html) de la API (CLI: [https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-replication-group-shard-configuration.html](https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-replication-group-shard-configuration.html)). Para obtener más información, consulte [Escalado de clústeres de Valkey o Redis OSS (modo de clúster habilitado)](scaling-redis-cluster-mode-enabled.md).  
Otras modificaciones en un clúster de Valkey o Redis OSS (modo de clúster habilitado) requieren que cree un clúster con el clúster nuevo y los cambios incorporados.
Puede actualizar clústeres y grupos de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) y Valkey o Redis OSS (modo de clúster habilitado) a versiones del motor más recientes. Sin embargo, no se puede volver a versiones del motor anteriores, salvo si se elimina el clúster o el motor de reproducción existente y se vuelve a crear. Para obtener más información, consulte [Administración de versiones para ElastiCache](VersionManagement.md).
Puede actualizar un clúster OSS existente ElastiCache para Valkey o Redis que utilice el modo de clúster desactivado para que utilice el modo de clúster activado, mediante la consola, la [ModifyReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroup.html)API o el comando [modify-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-replication-group.html)CLI, como se muestra en el siguiente ejemplo. También puede seguir los pasos que se indican en [Modificación del modo de clúster](modify-cluster-mode.md).

Puede modificar la configuración de un clúster OSS (modo de clúster desactivado) de Valkey o Redis mediante la ElastiCache consola, la API o la API AWS CLI. ElastiCache Actualmente, ElastiCache admite un número limitado de modificaciones en un grupo de replicación de Valkey o Redis OSS (modo de clúster habilitado). Otras modificaciones requieren crear una copia de seguridad del grupo de replicación actual y, a continuación, utilizar dicha copia para inicializar un grupo de replicación nuevo de Valkey o Redis OSS (modo de clúster habilitado).

**Topics**
+ [Utilización del Consola de administración de AWS](#Replication.Modify.CON)
+ [Usando el AWS CLI](#Replication.Modify.CLI)
+ [Uso de la API ElastiCache](#Replication.Modify.API)

## Utilización del Consola de administración de AWS
<a name="Replication.Modify.CON"></a>

Para modificar un clúster de Valkey o Redis OSS (modo de clúster deshabilitado), consulte [Modificación de un clúster de ElastiCache](Clusters.Modify.md).

## Usando el AWS CLI
<a name="Replication.Modify.CLI"></a>

A continuación se AWS CLI muestran algunos ejemplos del `modify-replication-group` comando. Puede utilizar el mismo comando para realizar otras modificaciones en un grupo de reproducción.

**Habilitación de multi-AZ en un grupo de replicación de Valkey o Redis OSS existente:**

Para Linux, macOS o Unix:

```
aws elasticache modify-replication-group \
   --replication-group-id myReplGroup \
   --multi-az-enabled = true
```

Para Windows:

```
aws elasticache modify-replication-group ^
   --replication-group-id myReplGroup ^
   --multi-az-enabled
```

**Modifique el modo de clúster de desactivado a habilitado:**

Para modificar el modo de clúster de *desactivado* a *habilitado*, primero debe establecer el modo de clúster en *compatible*. El modo compatible permite que los clientes de Valkey o Redis OSS se conecten mediante el modo clúster habilitado y el modo clúster desactivado. Después de migrar todos los clientes de Valkey o Redis OSS para usar el modo de clúster habilitado, puede completar la configuración del modo de clúster y establecer el modo de clúster en *Habilitado*.

Para Linux, macOS o Unix:

Establezca el modo de clúster en *compatible*.

```
aws elasticache modify-replication-group \
   --replication-group-id myReplGroup \
   --cache-parameter-group-name myParameterGroupName \
   --cluster-mode compatible
```

Establezca el modo de clúster en *habilitado*.

```
aws elasticache modify-replication-group \
   --replication-group-id myReplGroup \
   --cluster-mode enabled
```

Para Windows:

Establezca el modo de clúster en *compatible*.

```
aws elasticache modify-replication-group ^
   --replication-group-id myReplGroup ^
   --cache-parameter-group-name myParameterGroupName ^
   --cluster-mode compatible
```

Establezca el modo de clúster en *habilitado*.

```
aws elasticache modify-replication-group ^
   --replication-group-id myReplGroup ^
   --cluster-mode enabled
```

Para obtener más información sobre el AWS CLI `modify-replication-group` comando, consulte [modify-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-replication-group.html) o [Modificación del modo de clúster]() en la *ElastiCache Guía del usuario de Redis OSS*.

## Uso de la API ElastiCache
<a name="Replication.Modify.API"></a>

La siguiente operación de ElastiCache API habilita la opción Multi-AZ en un grupo de replicación de OSS de Valkey o Redis existente. Puede utilizar la misma operación para realizar otras modificaciones en un grupo de reproducción.

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=ModifyReplicationGroup
   &AutomaticFailoverEnabled=true  
   &Mutli-AZEnabled=true  
   &ReplicationGroupId=myReplGroup
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20141201T220302Z
   &Version=2014-12-01
   &X-Amz-Algorithm=&AWS;4-HMAC-SHA256
   &X-Amz-Date=20141201T220302Z
   &X-Amz-SignedHeaders=Host
   &X-Amz-Expires=20141201T220302Z
   &X-Amz-Credential=<credential>
   &X-Amz-Signature=<signature>
```

Para obtener más información sobre el `ModifyReplicationGroup` funcionamiento de la ElastiCache API, consulte. [ModifyReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroup.html)

# Eliminación de un grupo de reproducción
<a name="Replication.DeletingRepGroup"></a>

Si ya no necesita uno de los clústeres con réplicas (denominados *grupos de reproducción* en la API/CLI), puede eliminarlo. Al eliminar un grupo de reproducción, ElastiCache elimina todos los nodos de ese grupo.

Una vez que haya iniciado esta operación, no se puede interrumpir ni cancelar.

**aviso**  
Cuando se elimina un clúster de ElastiCache para Redis OSS, se retienen las instantáneas manuales. También tendrá la opción de crear una instantánea final antes de la eliminación del clúster. Por el contrario, las instantáneas de caché automáticas no se conservan.
El permiso `CreateSnapshot` es necesario para crear una instantánea final. Sin este permiso, la llamada a la API fallará con una excepción `Access Denied`.

## Eliminación de un grupo de reproducción (consola)
<a name="Replication.DeletingRepGroup.CON"></a>

Para eliminar un clúster que tiene réplicas, consulte [Eliminar un clúster en ElastiCache](Clusters.Delete.md).

## Eliminación de un grupo de reproducción de (AWS CLI)
<a name="Replication.DeletingRepGroup.CLI"></a>

Use el comando [delete-replication-group](https://docs.aws.amazon.com/AmazonElastiCache/latest/CommandLineReference/CLIReference-cmd-DeleteReplicationGroup.html) para eliminar un grupo de reproducción.

```
aws elasticache delete-replication-group --replication-group-id my-repgroup 
```

Aparecerá una pregunta que pedirá que confirme su decisión. Escriba *y* (sí) para iniciar la operación de forma inmediata. Después de que comience el proceso, este será irreversible.

```
						
   After you begin deleting this replication group, all of its nodes will be deleted as well.
   Are you sure you want to delete this replication group? [Ny]y

REPLICATIONGROUP  my-repgroup  My replication group  deleting
```

## Eliminación de un grupo de reproducción (API de ElastiCache)
<a name="Replication.DeletingRepGroup.API"></a>

Llame a [DeleteReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DeleteReplicationGroup.html) con el parámetro `ReplicationGroup`. 

**Example**  

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=DeleteReplicationGroup
   &ReplicationGroupId=my-repgroup
   &Version=2014-12-01
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20141201T220302Z
   &X-Amz-Algorithm=&AWS;4-HMAC-SHA256
   &X-Amz-Date=20141201T220302Z
   &X-Amz-SignedHeaders=Host
   &X-Amz-Expires=20141201T220302Z
   &X-Amz-Credential=<credential>
   &X-Amz-Signature=<signature>
```

**nota**  
Si establece el parámetro `RetainPrimaryCluster` en `true`, todas las réplicas de lectura se eliminarán, pero el clúster principal se conservará.

# Cambio del número de réplicas
<a name="increase-decrease-replica-count"></a>

Puede aumentar o disminuir de forma dinámica el número de réplicas de lectura del grupo de replicación de Valkey o Redis OSS mediante la Consola de administración de AWS, la AWS CLI o la API de ElastiCache. Si el grupo de replicación es un grupo de replicación de Valkey o Redis OSS (modo de clúster habilitado), puede elegir en qué particiones (grupos de nodos) va a aumentar o disminuir el número de réplicas.

Para cambiar dinámicamente el número de réplicas del grupo de replicación, elija en la tabla siguiente la operación que mejor se ajuste a sus necesidades.


| Para hacer esto | Para Valkey o Redis OSS (modo de clúster habilitado) | Para Valkey o Redis OSS (modo de clúster deshabilitado) | 
| --- | --- | --- | 
|  Añadir réplicas  |  [Aumento del número de réplicas de una partición](increase-replica-count.md)  |  [Aumento del número de réplicas de una partición](increase-replica-count.md) [Adición de una réplica de lectura para Valkey o Redis OSS (modo de clúster deshabilitado)](Replication.AddReadReplica.md)  | 
|  Eliminar réplicas  |  [Reducción del número de réplicas de una partición](decrease-replica-count.md)  |  [Reducción del número de réplicas de una partición](decrease-replica-count.md) [Eliminación de una réplica de lectura para Valkey o Redis OSS (modo de clúster deshabilitado)](Replication.RemoveReadReplica.md)  | 

# Aumento del número de réplicas de una partición
<a name="increase-replica-count"></a>

Puede aumentar el número de réplicas en una partición de Valkey o Redis OSS (modo de clúster habilitado) o en un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) hasta un máximo de cinco. Para ello, utilice la Consola de administración de AWS, la AWS CLI o la API de ElastiCache.

**Topics**
+ [Uso de Consola de administración de AWS](#increase-replica-count-con)
+ [Uso de AWS CLI](#increase-replica-count-cli)
+ [Uso de la API de ElastiCache](#increase-replica-count-api)

## Uso de Consola de administración de AWS
<a name="increase-replica-count-con"></a>

El siguiente procedimiento utiliza la consola para aumentar el número de réplicas de un grupo de replicación de Valkey o Redis OSS (modo de clúster habilitado).

**Aumento del número de réplicas en las particiones**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de ElastiCache en [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. En el panel de navegación, elija **Valkey** o **Redis OSS** y, a continuación, elija el nombre del grupo de replicación al que desea añadir las réplicas.

1. Elija el cuadro correspondiente a cada fragmento al que desea agregar réplicas.

1. Elija **Add replicas (Agregar réplicas)**.

1. Complete la página **Add Replicas to Shards** (Agregar réplicas a las particiones):
   + En **New number of replicas/shard (Nuevo número de réplicas por partición)**, introduzca el número de réplicas que desea que tengan todos los fragmentos seleccionados. Este valor debe ser mayor o igual que **Current Number of Replicas per shard (Número actual de réplicas por fragmento)** y menor o igual que cinco. Recomendamos dos réplicas como mínimo.
   + En **Availability Zones** (Zonas de disponibilidad), elija **No preference** (Sin preferencia) a fin de que ElastiCache elija una zona de disponibilidad para cada réplica nueva, o **Specify Availability Zones** (Especificar las zonas de disponibilidad) si desea elegir una zona de disponibilidad para cada réplica nueva.

     Si elige **Specify Availability Zones (Especificar las zonas de disponibilidad)**, utilice la lista para especificar una zona de disponibilidad para cada réplica nueva.

1. Elija **Add** (Agregar) para agregar las réplicas o **Cancel** (Cancelar) para cancelar la operación.

## Uso de AWS CLI
<a name="increase-replica-count-cli"></a>

Para aumentar el número de réplicas de una partición de Valkey o Redis OSS, utilice el comando `increase-replica-count` con los parámetros siguientes:
+ `--replication-group-id`: obligatorio. Identifica el grupo de replicación en el que desea aumentar el número de réplicas.
+ `--apply-immediately` o `--no-apply-immediately`: obligatorios. Especifica si se debe aumentar el número de réplicas inmediatamente (`--apply-immediately`) o en el periodo de mantenimiento siguiente (`--no-apply-immediately`). Actualmente, no se admite `--no-apply-immediately`.
+ `--new-replica-count`: opcional. Especifica el número de nodos de réplica que se desea al terminar, hasta un máximo de cinco. Utilice este parámetro en los grupos de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) en los que solo haya un grupo de nodos o un grupo de Valkey o Redis OSS (modo de clúster habilitado), o en aquellos en los que desee que todos los grupos de nodos tengan el mismo número de réplicas. Si este valor no es superior al número actual de réplicas del grupo de nodos, la llamada produce una excepción.
+ `--replica-configuration`: opcional. Le permite establecer el número de réplicas y de zonas de disponibilidad para cada grupo de nodos de forma independiente. Utilice este parámetro en los grupos de Valkey o Redis OSS (modo de clúster habilitado) en los que desee configurar cada grupo de nodos por separado. 

  `--replica-configuration` tiene tres miembros opcionales:
  + `NodeGroupId`: el ID de cuatro dígitos del grupo de nodos que está configurando. El ID de partición de los grupos de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) es siempre `0001`. Para buscar un ID de un grupo de nodos (particiones) de Valkey o Redis OSS (modo de clúster habilitado), consulte [Búsqueda del ID de una partición](Shards.md#shard-find-id).
  + `NewReplicaCount`: el número de réplicas que desea incluir en este grupo de nodos al final de la operación. El valor debe ser superior al número actual de réplicas, hasta un máximo de cinco. Si este valor no es superior al número actual de réplicas del grupo de nodos, la llamada produce una excepción.
  + `PreferredAvailabilityZones`: una lista de cadenas `PreferredAvailabilityZone` que especifica en qué zonas de disponibilidad se encuentran los nodos del grupo de reproducción. El número de valores `PreferredAvailabilityZone` debe ser igual al valor de `NewReplicaCount` más 1 para incluir el nodo principal. Si se omite este miembro de `--replica-configuration`, ElastiCache para Redis OSS elegirá la zona de disponibilidad para cada una de las réplicas nuevas.

**importante**  
En la llamada, debe incluir el parámetro `--new-replica-count` o `--replica-configuration`, pero no ambos.

**Example**  
En el siguiente ejemplo, se aumenta el número de réplicas del grupo de reproducción `sample-repl-group` a tres. Al finalizar el ejemplo, existirán tres réplicas en cada grupo de nodos. Este número se aplica tanto si este es un grupo de Valkey o Redis OSS (modo de clúster deshabilitado) con un único grupo de nodos, como si es un grupo de Valkey o Redis OSS (modo de clúster habilitado) con varios grupos de nodos.  
Para Linux, macOS o Unix:  

```
aws elasticache increase-replica-count \
    --replication-group-id sample-repl-group \
    --new-replica-count 3 \
    --apply-immediately
```
Para Windows:  

```
aws elasticache increase-replica-count ^
    --replication-group-id sample-repl-group ^
    --new-replica-count 3 ^
    --apply-immediately
```
En el siguiente ejemplo, se aumenta el número de réplicas del grupo de replicación `sample-repl-group` al valor indicado para los dos grupos de nodos especificados. Dado que hay varios grupos de nodos, este es un grupo de replicación de Valkey o Redis OSS (modo de clúster habilitado). Al especificar el valor opcional `PreferredAvailabilityZones`, el número de zonas de disponibilidad indicadas debe ser igual al valor de `NewReplicaCount` más 1. Este enfoque incluye el nodo principal del grupo identificado por `NodeGroupId`.  
Para Linux, macOS o Unix:  

```
aws elasticache increase-replica-count \
    --replication-group-id sample-repl-group \
    --replica-configuration \
        NodeGroupId=0001,NewReplicaCount=2,PreferredAvailabilityZones=us-east-1a,us-east-1c,us-east-1b \
        NodeGroupId=0003,NewReplicaCount=3,PreferredAvailabilityZones=us-east-1a,us-east-1b,us-east-1c,us-east-1c \
    --apply-immediately
```
Para Windows:  

```
aws elasticache increase-replica-count ^
    --replication-group-id sample-repl-group ^
    --replica-configuration ^
        NodeGroupId=0001,NewReplicaCount=2,PreferredAvailabilityZones=us-east-1a,us-east-1c,us-east-1b ^
        NodeGroupId=0003,NewReplicaCount=3,PreferredAvailabilityZones=us-east-1a,us-east-1b,us-east-1c,us-east-1c \
    --apply-immediately
```

Para obtener más información sobre cómo aumentar el número de réplicas mediante la CLI, consulte [increase-replica-count](https://docs.aws.amazon.com/cli/latest/reference/elasticache/increase-replica-count.html) en la *Referencia de línea de comandos de Amazon ElastiCache.*

## Uso de la API de ElastiCache
<a name="increase-replica-count-api"></a>

Para aumentar el número de réplicas de una partición de Valkey o Redis OSS, utilice la acción `IncreaseReplicaCount` con los parámetros siguientes:
+ `ReplicationGroupId`: obligatorio. Identifica el grupo de replicación en el que desea aumentar el número de réplicas.
+ `ApplyImmediately`: obligatorio. Especifica si se debe aumentar el número de réplicas inmediatamente (`ApplyImmediately=True`) o en el periodo de mantenimiento siguiente (`ApplyImmediately=False`). Actualmente, no se admite `ApplyImmediately=False`.
+ `NewReplicaCount`: opcional. Especifica el número de nodos de réplica que se desea al terminar, hasta un máximo de cinco. Utilice este parámetro en los grupos de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) en los que solo haya un grupo de nodos, o bien grupos de Valkey o Redis OSS (modo de clúster habilitado) en los que desee que todos los grupos de nodos tengan el mismo número de réplicas. Si este valor no es superior al número actual de réplicas del grupo de nodos, la llamada produce una excepción.
+ `ReplicaConfiguration`: opcional. Le permite establecer el número de réplicas y de zonas de disponibilidad para cada grupo de nodos de forma independiente. Utilice este parámetro en los grupos de Valkey o Redis OSS (modo de clúster habilitado) en los que desee configurar cada grupo de nodos por separado. 

  `ReplicaConfiguraion` tiene tres miembros opcionales:
  + `NodeGroupId`: el ID de cuatro dígitos del grupo de nodos que está configurando. Para grupos de replicación de Valkey o Redis OSS (modo de clúster deshabilitado), el ID del grupo de nodos (partición) siempre es `0001`. Para buscar un ID de un grupo de nodos (particiones) de Valkey o Redis OSS (modo de clúster habilitado), consulte [Búsqueda del ID de una partición](Shards.md#shard-find-id).
  + `NewReplicaCount`: el número de réplicas que desea incluir en este grupo de nodos al final de la operación. El valor debe ser superior al número actual de réplicas, hasta un máximo de cinco. Si este valor no es superior al número actual de réplicas del grupo de nodos, la llamada produce una excepción.
  + `PreferredAvailabilityZones`: una lista de cadenas `PreferredAvailabilityZone` que especifica en qué zonas de disponibilidad se encuentran los nodos del grupo de reproducción. El número de valores `PreferredAvailabilityZone` debe ser igual al valor de `NewReplicaCount` más 1 para incluir el nodo principal. Si se omite este miembro de `ReplicaConfiguration`, ElastiCache para Redis OSS elegirá la zona de disponibilidad para cada una de las réplicas nuevas.

**importante**  
En la llamada, debe incluir el parámetro `NewReplicaCount` o `ReplicaConfiguration`, pero no ambos.

**Example**  
En el siguiente ejemplo, se aumenta el número de réplicas del grupo de reproducción `sample-repl-group` a tres. Al finalizar el ejemplo, existirán tres réplicas en cada grupo de nodos. Este número se aplica tanto si este es un grupo de Valkey o Redis OSS (modo de clúster deshabilitado) con un único grupo de nodos, como si es un grupo de Valkey o Redis OSS (modo de clúster habilitado) con varios grupos de nodos.  

```
https://elasticache.us-west-2.amazonaws.com/
      ?Action=IncreaseReplicaCount
      &ApplyImmediately=True
      &NewReplicaCount=3
      &ReplicationGroupId=sample-repl-group
      &Version=2015-02-02
      &SignatureVersion=4
      &SignatureMethod=HmacSHA256
      &Timestamp=20150202T192317Z
      &X-Amz-Credential=<credential>
```
En el siguiente ejemplo, se aumenta el número de réplicas del grupo de replicación `sample-repl-group` al valor indicado para los dos grupos de nodos especificados. Dado que hay varios grupos de nodos, este es un grupo de replicación de Valkey o Redis OSS (modo de clúster habilitado). Al especificar el valor opcional `PreferredAvailabilityZones`, el número de zonas de disponibilidad indicadas debe ser igual al valor de `NewReplicaCount` más 1. Este enfoque incluye el nodo principal del grupo identificado por `NodeGroupId`.  

```
https://elasticache.us-west-2.amazonaws.com/
      ?Action=IncreaseReplicaCount
      &ApplyImmediately=True
      &ReplicaConfiguration.ConfigureShard.1.NodeGroupId=0001
      &ReplicaConfiguration.ConfigureShard.1.NewReplicaCount=2
      &ReplicaConfiguration.ConfigureShard.1.PreferredAvailabilityZones.PreferredAvailabilityZone.1=us-east-1a
      &ReplicaConfiguration.ConfigureShard.1.PreferredAvailabilityZones.PreferredAvailabilityZone.2=us-east-1c
      &ReplicaConfiguration.ConfigureShard.1.PreferredAvailabilityZones.PreferredAvailabilityZone.3=us-east-1b
      &ReplicaConfiguration.ConfigureShard.2.NodeGroupId=0003
      &ReplicaConfiguration.ConfigureShard.2.NewReplicaCount=3
      &ReplicaConfiguration.ConfigureShard.2.PreferredAvailabilityZones.PreferredAvailabilityZone.1=us-east-1a
      &ReplicaConfiguration.ConfigureShard.2.PreferredAvailabilityZones.PreferredAvailabilityZone.2=us-east-1b
      &ReplicaConfiguration.ConfigureShard.2.PreferredAvailabilityZones.PreferredAvailabilityZone.3=us-east-1c
      &ReplicaConfiguration.ConfigureShard.2.PreferredAvailabilityZones.PreferredAvailabilityZone.4=us-east-1c
      &ReplicationGroupId=sample-repl-group
      &Version=2015-02-02
      &SignatureVersion=4
      &SignatureMethod=HmacSHA256
      &Timestamp=20150202T192317Z
      &X-Amz-Credential=<credential>
```

Para obtener más información sobre cómo aumentar el número de réplicas mediante la API, consulte [IncreaseReplicaCount](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_IncreaseReplicaCount.html) en la *Referencia de la API de Amazon ElastiCache.*

# Reducción del número de réplicas de una partición
<a name="decrease-replica-count"></a>

Puede reducir el número de réplicas de una partición de Valkey o Redis OSS (modo de clúster habilitado) o en un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado):
+ En Valkey o Redis OSS (modo de clúster deshabilitado), puede reducir el número de réplicas a una si multi-AZ se encuentra habilitado, y a cero, si multi-AZ no se encuentra habilitado.
+ En Valkey o Redis OSS (modo de clúster habilitado), puede reducir el número de réplicas a cero. Sin embargo, no es posible realizar la conmutación por error a una réplica si se produce un error en el nodo principal.

Puede utilizar la Consola de administración de AWS, la AWS CLI o la API de ElastiCache para reducir el número de réplicas de un grupo de nodos (partición) o un grupo de reproducción.

**Topics**
+ [Uso de Consola de administración de AWS](#decrease-replica-count-con)
+ [Uso de AWS CLI](#decrease-replica-count-cli)
+ [Uso de la API de ElastiCache](#decrease-replica-count-api)

## Uso de Consola de administración de AWS
<a name="decrease-replica-count-con"></a>

El siguiente procedimiento utiliza la consola para reducir el número de réplicas de un grupo de replicación de Valkey o Redis OSS (modo de clúster habilitado).

**Reducción del número de réplicas en una partición de Valkey o Redis OSS**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de ElastiCache en [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. En el panel de navegación, elija **Valkey** o **Redis OSS** y, a continuación, elija el nombre del grupo de replicación del que desea eliminar las réplicas.

1. Elija el cuadro correspondiente a cada fragmento del que desea eliminar un nodo de réplica.

1. Elija **Delete replicas (Eliminar réplicas)**.

1. Complete la página **Delete Replicas from Shards (Eliminar réplicas de particiones)**:

   1. En **New number of replicas/shard (Nuevo número de réplicas por partición)**, introduzca el número de réplicas que desea que tengan los fragmentos seleccionados. Este número debe ser mayor o igual que 1. Recomendamos dos réplicas por fragmento como mínimo.

   1. Elija **Delete (Eliminar)** para eliminar las réplicas o **Cancel (Cancelar)** para cancelar la operación.

**importante**  
Si no especifica los nodos de réplica que se deben eliminar, ElastiCache para Redis OSS los seleccionará de forma automática para eliminarlos. Al hacerlo, ElastiCache para Redis OSS intenta retener la arquitectura de Multi-AZ para el grupo de replicación y mantener las réplicas con un mínimo retraso de replicación con el nodo principal.
No puede eliminar los nodos primarios o el nodo primario de un grupo de reproducción. Si especifica la eliminación del nodo principal, la operación producirá un error con un evento que indica que el nodo principal se ha seleccionado para su eliminación. 

## Uso de AWS CLI
<a name="decrease-replica-count-cli"></a>

Para reducir el número de réplicas de una partición de Valkey o Redis OSS, utilice el comando `decrease-replica-count` con los parámetros siguientes:
+ `--replication-group-id`: obligatorio. Identifica el grupo de replicación en el que se desea reducir el número de réplicas.
+ `--apply-immediately` o `--no-apply-immediately`: obligatorios. Especifica si se debe reducir el número de réplicas inmediatamente (`--apply-immediately`) o en el periodo de mantenimiento siguiente (`--no-apply-immediately`). Actualmente, no se admite `--no-apply-immediately`.
+ `--new-replica-count`: opcional. Especifica el número de nodos de réplica que se desean. El valor de `--new-replica-count` debe ser un valor válido inferior al número actual de réplicas de los grupos de nodos. Para conocer los valores mínimos permitidos, consulte [Reducción del número de réplicas de una partición](#decrease-replica-count). Si el valor de `--new-replica-count` no cumple este requisito, la llamada produce un error.
+ `--replicas-to-remove`: opcional. Contiene una lista de los ID de nodo que especifican los nodos de réplica que se van a eliminar.
+ `--replica-configuration`: opcional. Le permite establecer el número de réplicas y de zonas de disponibilidad para cada grupo de nodos de forma independiente. Utilice este parámetro en los grupos de Valkey o Redis OSS (modo de clúster habilitado) en los que desee configurar cada grupo de nodos por separado. 

  `--replica-configuration` tiene tres miembros opcionales:
  + `NodeGroupId`: el ID de cuatro dígitos del grupo de nodos que está configurando. El ID de partición de los grupos de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) es siempre `0001`. Para buscar un ID de un grupo de nodos (particiones) de Valkey o Redis OSS (modo de clúster habilitado), consulte [Búsqueda del ID de una partición](Shards.md#shard-find-id).
  + `NewReplicaCount`: un parámetro opcional que especifica el número de nodos de réplica que desea. El valor de `NewReplicaCount` debe ser un valor válido inferior al número actual de réplicas de los grupos de nodos. Para conocer los valores mínimos permitidos, consulte [Reducción del número de réplicas de una partición](#decrease-replica-count). Si el valor de `NewReplicaCount` no cumple este requisito, la llamada produce un error.
  + `PreferredAvailabilityZones`: una lista de cadenas `PreferredAvailabilityZone` que especifica en qué zonas de disponibilidad se encuentran los nodos del grupo de reproducción. El número de valores `PreferredAvailabilityZone` debe ser igual al valor de `NewReplicaCount` más 1 para incluir el nodo principal. Si se omite este miembro de `--replica-configuration`, ElastiCache para Redis OSS elegirá la zona de disponibilidad para cada una de las réplicas nuevas.

**importante**  
Debe incluir únicamente uno de los parámetros `--new-replica-count`, `--replicas-to-remove` o `--replica-configuration`.

**Example**  
En el siguiente ejemplo, se utiliza `--new-replica-count` para reducir el número de réplicas del grupo de reproducción `sample-repl-group` a una. Al finalizar el ejemplo, existirá una réplica en cada grupo de nodos. Este número se aplica tanto si este es un grupo de Valkey o Redis OSS (modo de clúster deshabilitado) con un único grupo de nodos, como si es un grupo de Valkey o Redis OSS (modo de clúster habilitado) con varios grupos de nodos.  
Para Linux, macOS o Unix:  

```
aws elasticache decrease-replica-count
    --replication-group-id sample-repl-group \
    --new-replica-count 1 \
    --apply-immediately
```
Para Windows:  

```
aws elasticache decrease-replica-count ^
    --replication-group-id sample-repl-group ^
    --new-replica-count 1 ^
    --apply-immediately
```
En el siguiente ejemplo, se reduce el número de réplicas del grupo de reproducción `sample-repl-group` eliminando dos réplicas especificadas (`0001` y `0003`) del grupo de nodos.  
Para Linux, macOS o Unix:  

```
aws elasticache decrease-replica-count \
    --replication-group-id sample-repl-group \
    --replicas-to-remove 0001,0003 \
    --apply-immediately
```
Para Windows:  

```
aws elasticache decrease-replica-count ^
    --replication-group-id sample-repl-group ^
    --replicas-to-remove 0001,0003 \
    --apply-immediately
```
En el siguiente ejemplo, se utiliza `--replica-configuration` para reducir el número de réplicas del grupo de reproducción `sample-repl-group` al valor indicado para los dos grupos de nodos especificados. Dado que hay varios grupos de nodos, este es un grupo de replicación de Valkey o Redis OSS (modo de clúster habilitado). Al especificar el valor opcional `PreferredAvailabilityZones`, el número de zonas de disponibilidad indicadas debe ser igual al valor de `NewReplicaCount` más 1. Este enfoque incluye el nodo principal del grupo identificado por `NodeGroupId`.  
Para Linux, macOS o Unix:  

```
aws elasticache decrease-replica-count \
    --replication-group-id sample-repl-group \
    --replica-configuration \
        NodeGroupId=0001,NewReplicaCount=1,PreferredAvailabilityZones=us-east-1a,us-east-1c \
        NodeGroupId=0003,NewReplicaCount=2,PreferredAvailabilityZones=us-east-1a,us-east-1b,us-east-1c \
    --apply-immediately
```
Para Windows:  

```
aws elasticache decrease-replica-count ^
    --replication-group-id sample-repl-group ^
    --replica-configuration ^
        NodeGroupId=0001,NewReplicaCount=2,PreferredAvailabilityZones=us-east-1a,us-east-1c ^
        NodeGroupId=0003,NewReplicaCount=3,PreferredAvailabilityZones=us-east-1a,us-east-1b,us-east-1c \
    --apply-immediately
```

Para obtener más información sobre cómo reducir el número de réplicas mediante la CLI, consulte [decrease-replica-count](https://docs.aws.amazon.com/cli/latest/reference/elasticache/decrease-replica-count.html) en la *Referencia de línea de comandos de Amazon ElastiCache.*

## Uso de la API de ElastiCache
<a name="decrease-replica-count-api"></a>

Para reducir el número de réplicas de una partición de Valkey o Redis OSS, utilice la acción `DecreaseReplicaCount` con los parámetros siguientes:
+ `ReplicationGroupId`: obligatorio. Identifica el grupo de replicación en el que se desea reducir el número de réplicas.
+ `ApplyImmediately`: obligatorio. Especifica si se debe reducir el número de réplicas inmediatamente (`ApplyImmediately=True`) o en el periodo de mantenimiento siguiente (`ApplyImmediately=False`). Actualmente, no se admite `ApplyImmediately=False`.
+ `NewReplicaCount`: opcional. Especifica el número de nodos de réplica que se desean. El valor de `NewReplicaCount` debe ser un valor válido inferior al número actual de réplicas de los grupos de nodos. Para conocer los valores mínimos permitidos, consulte [Reducción del número de réplicas de una partición](#decrease-replica-count). Si el valor de `--new-replica-count` no cumple este requisito, la llamada produce un error.
+ `ReplicasToRemove`: opcional. Contiene una lista de los ID de nodo que especifican los nodos de réplica que se van a eliminar.
+ `ReplicaConfiguration`: opcional. Contiene una lista de grupos de nodos que permite establecer el número de réplicas y de zonas de disponibilidad para cada grupo de nodos de forma independiente. Utilice este parámetro en los grupos de Valkey o Redis OSS (modo de clúster habilitado) en los que desee configurar cada grupo de nodos por separado. 

  `ReplicaConfiguraion` tiene tres miembros opcionales:
  + `NodeGroupId`: el ID de cuatro dígitos del grupo de nodos que está configurando. Para grupos de replicación de Valkey o Redis OSS (modo de clúster deshabilitado), el ID del grupo de nodos siempre es `0001`. Para buscar un ID de un grupo de nodos (particiones) de Valkey o Redis OSS (modo de clúster habilitado), consulte [Búsqueda del ID de una partición](Shards.md#shard-find-id).
  + `NewReplicaCount`: el número de réplicas que desea incluir en este grupo de nodos al final de la operación. El valor debe ser inferior al número actual de réplicas hasta un mínimo de 1 si se ha habilitado Multi-AZ o de 0 si Multi-AZ con conmutación por error automática no está habilitado. Si este valor no es menor que el número actual de réplicas del grupo de nodos, la llamada produce una excepción.
  + `PreferredAvailabilityZones`: una lista de cadenas `PreferredAvailabilityZone` que especifica en qué zonas de disponibilidad se encuentran los nodos del grupo de reproducción. El número de valores `PreferredAvailabilityZone` debe ser igual al valor de `NewReplicaCount` más 1 para incluir el nodo principal. Si se omite este miembro de `ReplicaConfiguration`, ElastiCache para Redis OSS elegirá la zona de disponibilidad para cada una de las réplicas nuevas.

**importante**  
Debe incluir únicamente uno de los parámetros `NewReplicaCount`, `ReplicasToRemove` o `ReplicaConfiguration`.

**Example**  
En el siguiente ejemplo, se utiliza `NewReplicaCount` para reducir el número de réplicas del grupo de reproducción `sample-repl-group` a una. Al finalizar el ejemplo, existirá una réplica en cada grupo de nodos. Este número se aplica tanto si este es un grupo de Valkey o Redis OSS (modo de clúster deshabilitado) con un único grupo de nodos, como si es un grupo de Valkey o Redis OSS (modo de clúster habilitado) con varios grupos de nodos.  

```
https://elasticache.us-west-2.amazonaws.com/
      ?Action=DecreaseReplicaCount
      &ApplyImmediately=True
      &NewReplicaCount=1
      &ReplicationGroupId=sample-repl-group
      &Version=2015-02-02
      &SignatureVersion=4
      &SignatureMethod=HmacSHA256
      &Timestamp=20150202T192317Z
      &X-Amz-Credential=<credential>
```
En el siguiente ejemplo, se reduce el número de réplicas del grupo de reproducción `sample-repl-group` eliminando dos réplicas especificadas (`0001` y `0003`) del grupo de nodos.  

```
https://elasticache.us-west-2.amazonaws.com/
      ?Action=DecreaseReplicaCount
      &ApplyImmediately=True
      &ReplicasToRemove.ReplicaToRemove.1=0001
      &ReplicasToRemove.ReplicaToRemove.2=0003
      &ReplicationGroupId=sample-repl-group
      &Version=2015-02-02
      &SignatureVersion=4
      &SignatureMethod=HmacSHA256
      &Timestamp=20150202T192317Z
      &X-Amz-Credential=<credential>
```
En el siguiente ejemplo, se utiliza `ReplicaConfiguration` para reducir el número de réplicas del grupo de reproducción `sample-repl-group` al valor indicado para los dos grupos de nodos especificados. Dado que hay varios grupos de nodos, este es un grupo de replicación de Valkey o Redis OSS (modo de clúster habilitado). Al especificar el valor opcional `PreferredAvailabilityZones`, el número de zonas de disponibilidad indicadas debe ser igual al valor de `NewReplicaCount` más 1. Este enfoque incluye el nodo principal del grupo identificado por `NodeGroupId`.  

```
https://elasticache.us-west-2.amazonaws.com/
      ?Action=DecreaseReplicaCount
      &ApplyImmediately=True
      &ReplicaConfiguration.ConfigureShard.1.NodeGroupId=0001
      &ReplicaConfiguration.ConfigureShard.1.NewReplicaCount=1
      &ReplicaConfiguration.ConfigureShard.1.PreferredAvailabilityZones.PreferredAvailabilityZone.1=us-east-1a
      &ReplicaConfiguration.ConfigureShard.1.PreferredAvailabilityZones.PreferredAvailabilityZone.2=us-east-1c
      &ReplicaConfiguration.ConfigureShard.2.NodeGroupId=0003
      &ReplicaConfiguration.ConfigureShard.2.NewReplicaCount=2
      &ReplicaConfiguration.ConfigureShard.2.PreferredAvailabilityZones.PreferredAvailabilityZone.1=us-east-1a
      &ReplicaConfiguration.ConfigureShard.2.PreferredAvailabilityZones.PreferredAvailabilityZone.2=us-east-1b
      &ReplicaConfiguration.ConfigureShard.2.PreferredAvailabilityZones.PreferredAvailabilityZone.4=us-east-1c
      &ReplicationGroupId=sample-repl-group
      &Version=2015-02-02
      &SignatureVersion=4
      &SignatureMethod=HmacSHA256
      &Timestamp=20150202T192317Z
      &X-Amz-Credential=<credential>
```

Para obtener más información sobre cómo reducir el número de réplicas mediante la API, consulte [DecreaseReplicaCount](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DecreaseReplicaCount.html) en la Referencia de la API de Amazon ElastiCache*.*

# Adición de una réplica de lectura para Valkey o Redis OSS (modo de clúster deshabilitado)
<a name="Replication.AddReadReplica"></a>

La información del siguiente tema solo se aplica a los grupos de replicación de Valkey o Redis OSS (modo de clúster deshabilitado).

A medida que aumentan las operaciones de lectura, es recomendable que las distribuya entre más nodos para reducir así la presión de lectura en estos. En este tema, aprenderá a añadir una réplica de lectura a un clúster de Valkey o Redis OSS (modo de clúster deshabilitado). 

Un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) puede tener un máximo de cinco réplicas de lectura. Si intenta agregar una réplica de lectura a un grupo de reproducción que ya tenga cinco réplicas de lectura, la operación produce un error.

Para obtener más información sobre la adición de réplicas a un grupo de replicación de Valkey o Redis OSS (modo de clúster habilitado), consulte los siguientes temas:
+ [Escalado de clústeres de Valkey o Redis OSS (modo de clúster habilitado)](scaling-redis-cluster-mode-enabled.md)
+ [Aumento del número de réplicas de una partición](increase-replica-count.md)

Puede añadir una réplica de lectura a un clúster de Valkey o Redis OSS (modo de clúster deshabilitado) mediante la consola de ElastiCache, la AWS CLI o la API de ElastiCache.

**Temas relacionados**
+ [Añadir nodos a un ElastiCache clúster](Clusters.AddNode.md)
+ [Adición de una réplica de lectura a un grupo de reproducción (AWS CLI)](#Replication.AddReadReplica.CLI)
+ [Adición de una réplica de lectura a un grupo de reproducción mediante la API](#Replication.AddReadReplica.API)

## Adición de una réplica de lectura a un grupo de reproducción (AWS CLI)
<a name="Replication.AddReadReplica.CLI"></a>

Para añadir una réplica de lectura a un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado), utilice el comando `create-cache-cluster` de la AWS CLI, con el parámetro `--replication-group-id` para especificar a qué grupo de replicación añadir el clúster (nodo).

El siguiente ejemplo crea el clúster `my-read replica` y lo añade al grupo de replicación `my-replication-group`. Los tipos de nodos, grupos de parámetros, grupos de seguridad, periodos de mantenimiento y otros ajustes de la réplica de lectura serán los mismos que los de los demás nodos de `my-replication-group`. 

Para Linux, macOS o Unix:

```
aws elasticache create-cache-cluster \
      --cache-cluster-id my-read-replica \
      --replication-group-id my-replication-group
```

Para Windows:

```
aws elasticache create-cache-cluster ^
      --cache-cluster-id my-read-replica ^
      --replication-group-id my-replication-group
```

Para obtener más información sobre cómo agregar una réplica de lectura mediante la CLI, consulte [create-cache-cluster](https://docs.aws.amazon.com/cli/latest/reference/elasticache/create-cache-cluster.html) en la *Referencia de línea de comandos de Amazon ElastiCache.*

## Adición de una réplica de lectura a un grupo de reproducción mediante la API
<a name="Replication.AddReadReplica.API"></a>

Para añadir una réplica de lectura a un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado), utilice la operación `CreateCacheCluster` de ElastiCache, con el parámetro `ReplicationGroupId` para especificar a qué grupo de replicación añadir el clúster (nodo).

El siguiente ejemplo crea el clúster `myReadReplica` y lo añade al grupo de replicación `myReplicationGroup`. Los tipos de nodos, grupos de parámetros, grupos de seguridad, periodos de mantenimiento y otros ajustes de la réplica de lectura serán los mismos que los de los demás nodos de `myReplicationGroup`.

```
https://elasticache.us-west-2.amazonaws.com/
      ?Action=CreateCacheCluster
      &CacheClusterId=myReadReplica
      &ReplicationGroupId=myReplicationGroup
      &Version=2015-02-02
      &SignatureVersion=4
      &SignatureMethod=HmacSHA256
      &Timestamp=20150202T192317Z
      &X-Amz-Credential=<credential>
```

Para obtener más información sobre cómo agregar una réplica de lectura mediante la API, consulte [CreateCacheCluster](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateCacheCluster.html) en la *Referencia de la API de Amazon ElastiCache.*

# Eliminación de una réplica de lectura para Valkey o Redis OSS (modo de clúster deshabilitado)
<a name="Replication.RemoveReadReplica"></a>

La información del siguiente tema solo se aplica a los grupos de replicación de Valkey o Redis OSS (modo de clúster deshabilitado).

A medida que el tráfico del grupo de replicación de Valkey o Redis OSS cambie, puede que desee añadir o eliminar réplicas de lectura. Eliminar un nodo de un grupo de replicación de es igual que eliminar un clúster, aunque existen algunas restricciones:
+ No puede eliminar el nodo principal de un grupo de reproducción. Si desea eliminar el nodo principal, haga lo siguiente:

  1. Promocione una réplica de lectura a principal. Para obtener más información acerca de cómo promocionar una réplica de lectura a principal, consulte [Promoción de una réplica de lectura a principal para grupos de replicación de Valkey o Redis OSS (modo de clúster deshabilitado)](Replication.PromoteReplica.md).

  1. Elimine el principal anterior. Consulte el siguiente punto para conocer una restricción de este método.
+ Si se ha habilitado Multi-AZ en un grupo de reproducción, no se puede eliminar la última réplica de lectura del grupo de reproducción. En este caso, haga lo siguiente:

  1. Modifique el grupo de reproducción deshabilitando las Multi-AZ. Para obtener más información, consulte [Modificación de un grupo de reproducción](Replication.Modify.md).

  1. Elimine la réplica de lectura.

Puede eliminar una réplica de lectura de un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) mediante la consola de ElastiCache, la AWS CLI para ElastiCache o la API de ElastiCache.

Para obtener más información sobre cómo eliminar un clúster de un grupo de replicación de Valkey o Redis OSS, consulte los temas siguientes:
+ [Usando el Consola de administración de AWS](Clusters.Delete.md#Clusters.Delete.CON)
+ [Utilización de AWS CLI para eliminar un ElastiCache clúster](Clusters.Delete.md#Clusters.Delete.CLI)
+ [Uso de la ElastiCache API](Clusters.Delete.md#Clusters.Delete.API)
+ [Escalado de clústeres de Valkey o Redis OSS (modo de clúster habilitado)](scaling-redis-cluster-mode-enabled.md)
+ [Reducción del número de réplicas de una partición](decrease-replica-count.md)

# Promoción de una réplica de lectura a principal para grupos de replicación de Valkey o Redis OSS (modo de clúster deshabilitado)
<a name="Replication.PromoteReplica"></a>

La información del siguiente tema solo se aplica solo a los grupos de replicación de Valkey o Redis OSS (modo de clúster deshabilitado).

Puede promover una réplica de lectura de Valkey o Redis OSS (modo de clúster deshabilitado) a un nodo principal mediante la Consola de administración de AWS, la AWS CLI o la API de ElastiCache. No se puede promocionar una réplica de lectura a principal mientras estén habilitadas múltiples zonas de disponibilidad con conmutación por error automática en el grupo de replicación de . Para promocionar una réplica de Valkey o Redis OSS (modo de clúster deshabilitado) a nodo principal en un grupo de replicación con multi-AZ habilitado, realice lo siguiente:

1. Modifique el grupo de reproducción para deshabilitar las Multi-AZ (esto no requiere que todos los clústeres estén en la misma zona de disponibilidad). Para obtener más información, consulte [Modificación de un grupo de reproducción](Replication.Modify.md).

1. Promocione la réplica de lectura a principal.

1. Modifique el grupo de reproducción para volver a habilitar Multi-AZ.

Multi-AZ no está disponible en grupos de replicación que ejecutan Redis OSS 2.6.13 o versiones anteriores.

## Uso de Consola de administración de AWS
<a name="Replication.PromoteReplica.CON"></a>

El siguiente procedimiento utiliza la consola para promocionar un nodo de réplica a principal. 

**Para promocionar una réplica de lectura a nodo primario (consola)**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de ElastiCache en [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. Si la réplica que desea promocionar es miembro de un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) con multi-AZ habilitado, debe modificar dicho grupo para deshabilitar multi-AZ antes de continuar. Para obtener más información, consulte [Modificación de un grupo de reproducción](Replication.Modify.md).

1. Elija **Valkey** o **Redis OSS** y, a continuación, en la lista de clústeres, elija el grupo de replicación que desea modificar. Este grupo de reproducción debe ejecutar el motor "Redis", no el motor "Redis en clúster", y debe tener al menos dos nodos.

1. En la lista de nodos, elija el nodo de réplica que desea promocionar a principal y, a continuación, en **Actions (Acciones)**, elija **Promote (Promocionar)**.

1. En el cuadro de diálogo **Promote Read Replica (Promocionar réplica de lectura)**, haga lo siguiente:

   1. En **Apply Immediately (Aplicar inmediatamente)**, elija **Yes (Sí)** para promocionar la réplica de lectura inmediatamente, o **No** para promocionarla en el próximo periodo de mantenimiento del clúster.

   1. Elija **Promote** para promocionar la réplica de lectura o **Cancel** para cancelar la operación.

1. Si el clúster tenía Multi-AZ habilitadas antes de comenzar el proceso de promoción, espere hasta que el estado del grupo de reproducción sea **available (disponible)** y, a continuación, modifique el clúster para volver a habilitar las Multi-AZ. Para obtener más información, consulte [Modificación de un grupo de reproducción](Replication.Modify.md).

## Mediante AWS CLI
<a name="Replication.PromoteReplica.CLI"></a>

No puede promocionar una réplica de lectura a principal si el grupo de reproducción tiene Multi-AZ habilitadas. En algunos casos, la réplica que se desea promocionar puede ser miembro de un grupo de reproducción con Multi-AZ habilitadas. En estos casos, debe modificar el grupo de reproducción para deshabilitar la característica Multi-AZ antes de continuar. Esto no requiere que todos los clústeres estén en la misma zona de disponibilidad. Para obtener más información acerca de cómo modificar un grupo de reproducción, consulte [Modificación de un grupo de reproducción](Replication.Modify.md).

El siguiente comando de la AWS CLI modifica el grupo de reproducción `sample-repl-group`, lo que hace que la réplica `my-replica-1` sea la principal en el grupo de reproducción.

Para Linux, macOS o Unix:

```
aws elasticache modify-replication-group \
   --replication-group-id sample-repl-group \
   --primary-cluster-id my-replica-1
```

Para Windows:

```
aws elasticache modify-replication-group ^
   --replication-group-id sample-repl-group ^
   --primary-cluster-id my-replica-1
```

Para obtener más información sobre la modificación de un grupo de reproducción, consulte [modify-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-replication-group.html) en la *Referencia de línea de comandos de Amazon ElastiCache.*

## Uso de la API de ElastiCache
<a name="Replication.PromoteReplica.API"></a>

No puede promocionar una réplica de lectura a principal si el grupo de reproducción tiene Multi-AZ habilitadas. En algunos casos, la réplica que se desea promocionar puede ser miembro de un grupo de reproducción con Multi-AZ habilitadas. En estos casos, debe modificar el grupo de reproducción para deshabilitar la característica Multi-AZ antes de continuar. Esto no requiere que todos los clústeres estén en la misma zona de disponibilidad. Para obtener más información acerca de cómo modificar un grupo de reproducción, consulte [Modificación de un grupo de reproducción](Replication.Modify.md).

La siguiente acción de la API de ElastiCache modifica el grupo de reproducción `myReplGroup`, lo que hace que la réplica de lectura `myReplica-1` sea el primario en el grupo de reproducción.

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=ModifyReplicationGroup
   &ReplicationGroupId=myReplGroup
   &PrimaryClusterId=myReplica-1  
   &Version=2014-12-01
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20141201T220302Z
   &X-Amz-Algorithm=&AWS;4-HMAC-SHA256
   &X-Amz-Date=20141201T220302Z
   &X-Amz-SignedHeaders=Host
   &X-Amz-Expires=20141201T220302Z
   &X-Amz-Credential=<credential>
   &X-Amz-Signature=<signature>
```

Para obtener más información sobre la modificación de un grupo de reproducción, consulte [ModifyReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroup.html) en la *Referencia de la API de Amazon ElastiCache.*

# Administración del mantenimiento de clústeres de ElastiCache
<a name="maintenance-window"></a>

Cada clúster tiene un periodo de mantenimiento semanal durante el que se aplican los cambios del sistema. Con Valkey y Redis OSS, los grupos de replicación tienen el mismo período de mantenimiento semanal. Si no especifica un periodo de mantenimiento preferido al crear o modificar un clúster o grupo de reproducción, ElastiCache asigna un periodo de mantenimiento de 60 minutos en el periodo de mantenimiento de su región en un día de la semana elegido al azar.

El periodo de mantenimiento de 60 minutos se elige al azar de un bloque de 8 horas por cada región. En la siguiente tabla, se muestran los bloques de tiempo de cada región desde los que se asignan los periodos predeterminados de mantenimiento. Puede elegir un periodo de mantenimiento preferido fuera del bloque del periodo de mantenimiento de la región.


| Código de región | Nombre de la región | Periodo de mantenimiento de la región | 
| --- | --- | --- | 
| ap-northeast-1 | Región Asia-Pacífico (Tokio) | 13:00-21:00 UTC | 
| ap-northeast-2 | Región Asia-Pacífico (Seúl) | 12:00-20:00 UTC | 
| ap-northeast-3 | Región Asia-Pacífico (Osaka) | 12:00-20:00 UTC | 
| ap-southeast-3 | Región Asia-Pacífico (Yakarta) | 14:00-22:00 UTC | 
| ap-south-1 | Región Asia-Pacífico (Mumbai) | 17:30-01:30 UTC | 
| ap-southeast-1 | Región Asia-Pacífico (Singapur) | 14:00-22:00 UTC | 
| cn-north-1 | Región China (Pekín) | 14:00-22:00 UTC | 
| cn-northwest-1 | Región China (Ningxia) | 14:00-22:00 UTC | 
| ap-east-1 | Región de Asia-Pacífico (Hong Kong) | 13:00-21:00 UTC | 
| ap-southeast-2 | Región Asia-Pacífico (Sídney) | 12:00-20:00 UTC | 
| eu-west-3 | Región EU (París) | 23:59-07:29 UTC | 
| af-south-1 | Región África (Ciudad del Cabo) | 13:00-21:00 UTC | 
| eu-central-1 | Región de Europa (Fráncfort) | 23:00-07:00 UTC | 
| eu-west-1 | Región de Europa (Irlanda) | 22:00-06:00 UTC | 
| eu-west-2 | Región de Europa (Londres) | 23:00-07:00 UTC | 
| me-south-1 | Región Medio Oriente (Baréin) | 13:00-21:00 UTC | 
| me-central-1 | Región de Oriente Medio (EAU) | 13:00-21:00 UTC | 
| eu-south-1 | Región Europa (Milán) | 21:00 — 05:00 UTC | 
| sa-east-1 | Región de América del Sur (São Paulo) | 01:00-09:00 UTC | 
| us-east-1 | Región Este de EE. UU. (Norte de Virginia) | 03:00-11:00 UTC | 
| us-east-2 | Región del este de EE. UU. (Ohio) | 04:00 a 12:00 h UTC | 
| us-gov-west-1 | AWS GovCloud (US) región | 06:00-14:00 UTC | 
| us-west-1 | Región Oeste de EE. UU. (Norte de California) | 06:00-14:00 UTC | 
| us-west-2 | Región del Oeste de EE. UU (Oregón) | 06:00-14:00 UTC | 

**Cambio del periodo de mantenimiento del clúster o grupo de replicación**  
El periodo de mantenimiento debe corresponder al momento de mínimo uso y, por tanto, podría ser preciso modificarlo cada cierto tiempo. Puede modificar el clúster o grupo de reproducción de modo que especifique un intervalo de tiempo de hasta 24 horas durante las cuales deban llevarse a cabo todas las actividades de mantenimiento que solicite. Las modificaciones de clúster pendientes o aplazadas que ha solicitado tendrán lugar en este periodo. 

**nota**  
Si desea aplicar modificaciones del tipo de nodo o actualizaciones de motor de forma inmediata con la Consola de administración de AWS seleccione el cuadro **Aplicar ahora**. De lo contrario, estas modificaciones se aplicarán durante el siguiente periodo de mantenimiento programado. Para utilizar la API, consulte [modify-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-replication-group.html) o [modify-cache-cluster](https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-cache-cluster.html).

**Más información**  
Para obtener más información sobre el periodo de mantenimiento y de la sustitución de nodos, consulte lo siguiente:
+ [Mantenimiento de ElastiCache](https://aws.amazon.com/elasticache/elasticache-maintenance/): preguntas frecuentes sobre el mantenimiento y la sustitución de nodos
+ [Reemplazo de nodos (Memcached)](CacheNodes.NodeReplacement-mc.md): administración del reemplazo de nodos para Memcached
+ [Modificación de un clúster de ElastiCache](Clusters.Modify.md): cambio del periodo de mantenimiento del clúster
+ [Reemplazo de nodos (Valkey y Redis OSS)](CacheNodes.NodeReplacement.md): administración de la sustitución de nodos
+ [Modificación de un grupo de reproducción](Replication.Modify.md): cambio del periodo de mantenimiento de un grupo de reproducción

# Configuración de los parámetros de motor mediante grupos de parámetros de ElastiCache
<a name="ParameterGroups"></a>

Amazon ElastiCache utiliza parámetros para controlar las propiedades de tiempo de ejecución de sus nodos y clústeres. Por lo general, las versiones de motor más reciente incluyen parámetros adicionales para ofrecer compatibilidad con la funcionalidad más reciente. Para ver tablas de parámetros de Memcached, consulte [Parámetros específicos de Memcached](ParameterGroups.Engine.md#ParameterGroups.Memcached). Para ver tablas de parámetros de Valkey y Redis OSS, consulte [Parámetros de Valkey y Redis OSS](ParameterGroups.Engine.md#ParameterGroups.Redis). 

Como cabe esperar, determinados valores de parámetros, como `maxmemory`, dependen del tipo de nodo y de motor. Para ver una tabla de valores de estos parámetros de Memcached por tipo de nodo, consulte [Parámetros específicos de tipo de nodo de Memcached](ParameterGroups.Engine.md#ParameterGroups.Memcached.NodeSpecific). Para ver una tabla de valores de estos parámetros de Valkey y Redis OSS por tipo de nodo, consulte [Parámetros específicos de tipos de nodos de Redis OSS](ParameterGroups.Engine.md#ParameterGroups.Redis.NodeSpecific).

**nota**  
Para obtener una lista de parámetros específicos de Memcached, consulte [Parámetros específicos de Memcached](ParameterGroups.Engine.md#ParameterGroups.Memcached).

**Topics**
+ [Administración de parámetros en ElastiCache](ParameterGroups.Management.md)
+ [Niveles de grupo de parámetros de caché en ElastiCache](ParameterGroups.Tiers.md)
+ [Creación de un grupo de parámetros de ElastiCache](ParameterGroups.Creating.md)
+ [Enumeración de grupos de parámetros de ElastiCache por nombre](ParameterGroups.ListingGroups.md)
+ [Enumeración de valores de un grupo de parámetros de ElastiCache](ParameterGroups.ListingValues.md)
+ [Modificación de un grupo de parámetros de ElastiCache](ParameterGroups.Modifying.md)
+ [Eliminación de un grupo de parámetros de ElastiCache](ParameterGroups.Deleting.md)
+ [Parámetros específicos del motor](ParameterGroups.Engine.md)

# Administración de parámetros en ElastiCache
<a name="ParameterGroups.Management"></a>

Los parámetros de ElastiCache se agrupan en grupos de parámetros con nombre para facilitar su administración. Un grupo de parámetros representa una combinación de valores específicos de parámetros que se pasan al software del motor durante el startup. Estos valores determinan cómo se comportan los procesos del motor en cada nodo durante el tiempo de ejecución. Los valores de parámetros de un grupo de parámetros determinado se aplican a todos los nodos asociados al grupo, independientemente del clúster al que pertenezcan.

Para refinar el rendimiento del clúster, puede modificar los valores de algunos parámetros o cambiar el grupo de parámetros del clúster.
+ No puede modificar ni eliminar los grupos de parámetros predeterminados. Si necesita valores de parámetros personalizados, debe crear un grupo de parámetros personalizado.
+ Para Memcached, la familia del grupo parámetros y el clúster que va a asignar deben ser compatibles. Por ejemplo, si el clúster está ejecutando Memcached versión 1.4.8, solo se pueden utilizar los grupos de parámetros, predeterminados o personalizados, de la familia Memcached 1.4.

  Para Redis OSS, la familia del grupo parámetros y el clúster que va a asignar deben ser compatibles. Por ejemplo, si el clúster está ejecutando Redis OSS versión 3.2.10, solo se pueden utilizar los grupos de parámetros, ya sean predeterminados o personalizados, de la familia de Redis OSS 3.2.
+ Si cambia el grupo de parámetros de un clúster, los valores de los parámetros modificables condicionalmente deben ser los mismos tanto en los grupos de parámetros actuales como en los nuevos.
+ Para Memcached, cuando cambia los parámetros de un clúster, el cambio se aplica al clúster inmediatamente. Esto es cierto tanto si se modifica el propio grupo de parámetros del clúster como si se modifica el valor de un parámetro del grupo. Para determinar cuándo se aplica un cambio de parámetros determinado, consulte la columna **Aplicación de los cambios** en las tablas de [Parámetros específicos de Memcached](ParameterGroups.Engine.md#ParameterGroups.Memcached). Para obtener información sobre cómo reiniciar los nodos de un clúster, consulte [Rebooting clusters](Clusters.html#Rebooting).
+ Para Redis OSS, cuando se modifican los parámetros de un clúster, el cambio se aplica al clúster de inmediato o, con las excepciones indicadas a continuación, después de que se reinicien los nodos del clúster. Esto es cierto tanto si se modifica el propio grupo de parámetros del clúster como si se modifica el valor de un parámetro del grupo. Para determinar cuándo se aplica un cambio de parámetros determinado, consulte la columna **Aplicación de los cambios** en las tablas de [Parámetros de Valkey y Redis OSS](ParameterGroups.Engine.md#ParameterGroups.Redis). 

  Para obtener más información sobre cómo reiniciar nodos de Valkey o Redis OSS, consulte [Reinicio de nodos](nodes.rebooting.md).
**Cambios de parámetros de Valkey o Redis OSS (modo de clúster habilitado)**  
Si realiza cambios en los siguientes parámetros en un clúster de Valkey o Redis OSS (modo de clúster habilitado), realice los siguientes pasos.  
activerehashing
bases de datos
Cree una copia de seguridad manual de su clúster. Consulte [Copias de seguridad manuales](backups-manual.md).
Eliminar el clúster. Consulte [Deleting clusters](Clusters.html#Delete).
almacenar el clúster con la copia de seguridad y el grupo de parámetros modificados para propagar los datos en el nuevo clúster. Consulte [Restauración desde una copia de seguridad a una nueva caché](backups-restoring.md).
Los cambios en otros parámetros no requieren esta acción.
+ Puede asociar grupos de parámetros con almacenes de datos globales de Valkey o Redis OSS. Los *almacenes de datos globales* son una recopilación de uno o varios clústeres que abarcan regiones de AWS. En este caso, el grupo de parámetros lo comparten todos los clústeres que conforman el almacén de datos global. Cualquier modificación del grupo de parámetros del clúster principal se replica en todos los clústeres restantes del almacén de datos global. Para obtener más información, consulte [Replicación entre AWS regiones mediante almacenes de datos globales](Redis-Global-Datastore.md).

  Puede comprobar si un grupo de parámetros forma parte de un almacén de datos global buscando en estas ubicaciones:
  + En la consola de ElastiCache en la página de **Parameter Groups** (Grupos de parámetros), el atributo sí/no **Global**. 
  + La propiedad sí/no `IsGlobal` de la operación de la API [CacheParameterGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CacheParameterGroup.html)

# Niveles de grupo de parámetros de caché en ElastiCache
<a name="ParameterGroups.Tiers"></a>

Amazon ElastiCache tiene tres niveles de grupos de parámetros de caché como se muestra a continuación.

![\[Imagen: niveles de grupo de parámetros de Amazon ElastiCache\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/images/ElastiCache-ParameterGroups-Tiers.png)


*Niveles de grupo de parámetros de Amazon ElastiCache*

**Predeterminado global**

Este es el grupo de parámetros raíz de nivel superior para todos los clientes de Amazon ElastiCache de la región.

Características del grupo de parámetros de caché Predeterminado global:
+ Se encuentra reservado para ElastiCache y no se encuentra disponible para el cliente.

**Predeterminado del cliente**

Se trata de una copia del grupo de parámetros de cache Predeterminado global que se crea para el uso del cliente.

Características del grupo de parámetros de caché Predeterminado del cliente:
+ Lo crea ElastiCache y es de su propiedad.
+ Está disponible para el cliente para el uso como grupo de parámetros de caché para cualquier clúster que ejecute una versión de motor compatible con este grupo de parámetros de caché.
+ No admite modificación del cliente.

**Propiedad del cliente**

Se trata de una copia del grupo de parámetros de caché predeterminado del cliente. El grupo de parámetros de caché Propiedad del cliente se crea cuando el cliente crea un grupo de parámetros de caché.

Características del grupo de parámetros de caché Propiedad del cliente:
+ Lo crea el cliente y es de su propiedad.
+ Puede asignarse a cualquiera de los clústeres compatibles del cliente.
+ Lo puede modificar el cliente para crear un nuevo grupo de parámetros de caché personalizado.

   No todos los valores de parámetros se pueden modificar. Para obtener más información, sobre los valores de Memcached, consulte [Parámetros específicos de Memcached](ParameterGroups.Engine.md#ParameterGroups.Memcached). Para obtener más información sobre los valores de Valkey y Redis OSS, consulte [Parámetros de Valkey y Redis OSS](ParameterGroups.Engine.md#ParameterGroups.Redis).

# Creación de un grupo de parámetros de ElastiCache
<a name="ParameterGroups.Creating"></a>

Debe crear un nuevo grupo de parámetros si existe uno o varios parámetros que desee cambiar con respecto a los valores predeterminados. Puede crear un grupo de parámetros con la consola de ElastiCache, la AWS CLI o la API de ElastiCache.

## Creación de un grupo de parámetros de ElastiCache (consola)
<a name="ParameterGroups.Creating.CON"></a>

En el siguiente procedimiento se muestra cómo crear un grupo de parámetros mediante la consola de ElastiCache.

**Para crear un grupo de parámetros con la consola de ElastiCache**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de ElastiCache en [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. Para ver una lista de todos los grupos de parámetros disponibles, en el panel de navegación izquierdo, elija **Parameter Groups**.

1. Para crear un grupo de parámetros, elija **Create Parameter Group**.

   Aparece la ventana de **Create Parameter Group** (Crear grupo de parámetros).

1. En la lista **Family**, elija la familia del grupo de parámetros que será la plantilla de su grupo de parámetros.

   La familia de grupos de parámetros, como *memcached1.4* o *redis3.2*, define los parámetros reales del grupo de parámetros, así como sus valores iniciales. La familia del grupo de parámetros debe coincidir con la versión y el motor del clúster.

1. En el cuadro **Name**, escriba un nombre único para este grupo de parámetros.

   Al crear un clúster o modificar un grupo de parámetros de clúster, podrá elegir el grupo de parámetros por su nombre. Por lo tanto, se recomienda que el nombre sea informativo y que identifique de algún modo la familia del grupo de parámetros.

   Las restricciones de nomenclatura de los grupos de parámetros son las siguientes:
   + Deben comenzar por una letra ASCII.
   + Solo puede contener letras ASCII, dígitos y guiones.
   + Debe tener de 1 a 255 caracteres.
   + No pueden contener dos guiones consecutivos.
   + No pueden terminar con un guion.

1. En el cuadro **Description**, escriba una descripción para el grupo de parámetros.

1. Para crear el grupo de parámetros, elija **Create**.

   Para finalizar el proceso sin crear el grupo de parámetros, seleccione **Cancel**.

1. Cuando se cree el grupo de parámetros, tendrá los valores predeterminados de la familia. Para cambiar los valores predeterminados, debe modificar el grupo de parámetros. Para obtener más información, consulte [Modificación de un grupo de parámetros de ElastiCache](ParameterGroups.Modifying.md).

## Creación de un grupo de parámetros de ElastiCache (AWS CLI)
<a name="ParameterGroups.Creating.CLI"></a>

Para crear un grupo de parámetros con la AWS CLI, use el comando `create-cache-parameter-group` con los parámetros que se indican a continuación.
+ `--cache-parameter-group-name`: el nombre del grupo de parámetros.

  Las restricciones de nomenclatura de los grupos de parámetros son las siguientes:
  + Deben comenzar por una letra ASCII.
  + Solo puede contener letras ASCII, dígitos y guiones.
  + Debe tener de 1 a 255 caracteres.
  + No pueden contener dos guiones consecutivos.
  + No pueden terminar con un guion.
+ `--cache-parameter-group-family`: la familia de versión y motor del grupo de parámetros.
+ `--description`: una descripción del usuario para el grupo de parámetros.

**Example**  
En el ejemplo siguiente, se crea un grupo de parámetros denominado *myMem14* que usa la familia memcached1.4 como plantilla.   
Para Linux, macOS o Unix:  

```
aws elasticache create-cache-parameter-group \
    --cache-parameter-group-name myMem14  \
    --cache-parameter-group-family memcached1.4 \
    --description "My first parameter group"
```
Para Windows:  

```
aws elasticache create-cache-parameter-group ^
    --cache-parameter-group-name myMem14  ^
    --cache-parameter-group-family memcached1.4 ^
    --description "My first parameter group"
```
La salida de este comando será similar a lo que se muestra a continuación.  

```
{
    "CacheParameterGroup": {
        "CacheParameterGroupName": "myMem14", 
        "CacheParameterGroupFamily": "memcached1.4", 
        "Description": "My first  parameter group"
    }
}
```

**Example**  
En el ejemplo siguiente, se crea un grupo de parámetros denominado *myRed28* que usa la familia redis2.8 como plantilla.   
Para Linux, macOS o Unix:  

```
aws elasticache create-cache-parameter-group \
    --cache-parameter-group-name myRed28  \
    --cache-parameter-group-family redis2.8 \
    --description "My first parameter group"
```
Para Windows:  

```
aws elasticache create-cache-parameter-group ^
    --cache-parameter-group-name myRed28  ^
    --cache-parameter-group-family redis2.8 ^
    --description "My first parameter group"
```
La salida de este comando será similar a lo que se muestra a continuación.  

```
{
    "CacheParameterGroup": {
        "CacheParameterGroupName": "myRed28", 
        "CacheParameterGroupFamily": "redis2.8", 
        "Description": "My first parameter group"
    }
}
```

Cuando se cree el grupo de parámetros, tendrá los valores predeterminados de la familia. Para cambiar los valores predeterminados, debe modificar el grupo de parámetros. Para obtener más información, consulte [Modificación de un grupo de parámetros de ElastiCache](ParameterGroups.Modifying.md).

Para obtener más información, consulte [https://docs.aws.amazon.com/cli/latest/reference/elasticache/create-cache-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/elasticache/create-cache-parameter-group.html).

## Creación de un grupo de parámetros de ElastiCache (API de ElastiCache)
<a name="ParameterGroups.Creating.API"></a>

Para crear un grupo de parámetros con la API de ElastiCache, utilice la acción `CreateCacheParameterGroup` con los parámetros que se indican a continuación.
+ `ParameterGroupName`: el nombre del grupo de parámetros.

  Las restricciones de nomenclatura de los grupos de parámetros son las siguientes:
  + Deben comenzar por una letra ASCII.
  + Solo puede contener letras ASCII, dígitos y guiones.
  + Debe tener de 1 a 255 caracteres.
  + No pueden contener dos guiones consecutivos.
  + No pueden terminar con un guion.
+ `CacheParameterGroupFamily`: la familia de versión y motor del grupo de parámetros. Por ejemplo, `memcached1.4`.
+ `CacheParameterGroupFamily`: la familia de versión y motor del grupo de parámetros. Por ejemplo, `redis2.8`.
+ `Description`: una descripción del usuario para el grupo de parámetros.

**Example**  
En el ejemplo siguiente, se crea un grupo de parámetros denominado *myMem14* que usa la familia memcached1.4 como plantilla.   

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=CreateCacheParameterGroup
   &CacheParameterGroupFamily=memcached1.4
   &CacheParameterGroupName=myMem14
   &Description=My%20first%20parameter%20group
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20150202T192317Z
   &Version=2015-02-02
   &X-Amz-Credential=<credential>
```
La respuesta a esta acción será similar a lo que se muestra a continuación.  

```
<CreateCacheParameterGroupResponse xmlns="http://elasticache.amazonaws.com/doc/2013-06-15/">
  <CreateCacheParameterGroupResult>
    <CacheParameterGroup>
      <CacheParameterGroupName>myMem14</CacheParameterGroupName>
      <CacheParameterGroupFamily>memcached1.4</CacheParameterGroupFamily>
      <Description>My first  parameter group</Description>
    </CacheParameterGroup>
  </CreateCacheParameterGroupResult>
  <ResponseMetadata>
    <RequestId>d8465952-af48-11e0-8d36-859edca6f4b8</RequestId>
  </ResponseMetadata>
</CreateCacheParameterGroupResponse>
```

**Example**  
En el ejemplo siguiente, se crea un grupo de parámetros denominado *myRed28* que usa la familia redis2.8 como plantilla.   

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=CreateCacheParameterGroup
   &CacheParameterGroupFamily=redis2.8
   &CacheParameterGroupName=myRed28
   &Description=My%20first%20parameter%20group
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20150202T192317Z
   &Version=2015-02-02
   &X-Amz-Credential=<credential>
```
La respuesta a esta acción será similar a lo que se muestra a continuación.  

```
<CreateCacheParameterGroupResponse xmlns="http://elasticache.amazonaws.com/doc/2013-06-15/">
  <CreateCacheParameterGroupResult>
    <CacheParameterGroup>
      <CacheParameterGroupName>myRed28</CacheParameterGroupName>
      <CacheParameterGroupFamily>redis2.8</CacheParameterGroupFamily>
      <Description>My first parameter group</Description>
    </CacheParameterGroup>
  </CreateCacheParameterGroupResult>
  <ResponseMetadata>
    <RequestId>d8465952-af48-11e0-8d36-859edca6f4b8</RequestId>
  </ResponseMetadata>
</CreateCacheParameterGroupResponse>
```

Cuando se cree el grupo de parámetros, tendrá los valores predeterminados de la familia. Para cambiar los valores predeterminados, debe modificar el grupo de parámetros. Para obtener más información, consulte [Modificación de un grupo de parámetros de ElastiCache](ParameterGroups.Modifying.md).

Para obtener más información, consulte [https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateCacheParameterGroup.html](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateCacheParameterGroup.html).

# Enumeración de grupos de parámetros de ElastiCache por nombre
<a name="ParameterGroups.ListingGroups"></a>

Puede enumerar los grupos de parámetros con la consola de ElastiCache, la AWS CLI o la API de ElastiCache.

## Enumeración de grupos de parámetros por nombre (consola)
<a name="ParameterGroups.ListingGroups.CON"></a>

En el siguiente procedimiento se muestra cómo ver una lista de grupos de parámetros mediante la consola de ElastiCache.

**Para obtener una lista de grupos de parámetros mediante la consola de ElastiCache**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de ElastiCache en [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. Para ver una lista de todos los grupos de parámetros disponibles, en el panel de navegación izquierdo, elija **Parameter Groups**.

## Enumeración de grupos de parámetros de ElastiCache por nombre (AWS CLI)
<a name="ParameterGroups.ListingGroups.CLI"></a>

Para generar una lista de grupos de parámetros mediante la AWS CLI, use el comando `describe-cache-parameter-groups`. Si proporciona un nombre de grupo de parámetros, solo se mostrará el grupo de parámetros de dicho nombre. Si no proporciona ningún nombre de grupo de parámetros, se mostrarán hasta `--max-records` grupos de parámetros. En cualquier caso, se mostrarán el nombre, la familia y la descripción del grupo de parámetros.

**Example**  
El siguiente código de ejemplo muestra el grupo de parámetros *myMem14*.  
Para Linux, macOS o Unix:  

```
aws elasticache describe-cache-parameter-groups \
    --cache-parameter-group-name myMem14
```
Para Windows:  

```
aws elasticache describe-cache-parameter-groups ^
    --cache-parameter-group-name myMem14
```
La salida de este comando tendrá un aspecto similar al siguiente y mostrará el nombre, la familia y la descripción del grupo de parámetros.  

```
{
    "CacheParameterGroups": [
	    {
	        "CacheParameterGroupName": "myMem14", 
	        "CacheParameterGroupFamily": "memcached1.4", 
	        "Description": "My first parameter group"
	    }
    ]
}
```

**Example**  
El siguiente código de ejemplo muestra el grupo de parámetros *myRed28*.  
Para Linux, macOS o Unix:  

```
aws elasticache describe-cache-parameter-groups \
    --cache-parameter-group-name myRed28
```
Para Windows:  

```
aws elasticache describe-cache-parameter-groups ^
    --cache-parameter-group-name myRed28
```
La salida de este comando tendrá un aspecto similar al siguiente y mostrará el nombre, la familia y la descripción del grupo de parámetros.  

```
{
    "CacheParameterGroups": [
	    {
	        "CacheParameterGroupName": "myRed28", 
	        "CacheParameterGroupFamily": "redis2.8", 
	        "Description": "My first parameter group"
	    }
    ]
}
```

**Example**  
El siguiente código de ejemplo indica el grupo de parámetros *myRed56* para grupos de parámetros que se ejecutan en la versión 5.0.6 en adelante del motor de Redis OSS. Si el grupo de parámetros forma parte de un [Replicación entre AWS regiones mediante almacenes de datos globales](Redis-Global-Datastore.md), el valor de propiedad `IsGlobal` devuelto en la salida será `Yes`.  
Para Linux, macOS o Unix:  

```
aws elasticache describe-cache-parameter-groups \
    --cache-parameter-group-name myRed56
```
Para Windows:  

```
aws elasticache describe-cache-parameter-groups ^
    --cache-parameter-group-name myRed56
```
La salida de este comando tendrá un aspecto similar al siguiente y mostrará el nombre, la familia, isGlobal y la descripción del grupo de parámetros.  

```
{
    "CacheParameterGroups": [
	    {
	        "CacheParameterGroupName": "myRed56", 
	        "CacheParameterGroupFamily": "redis5.0", 	        
	        "Description": "My first parameter group",
	        "IsGlobal": "yes"	        
	    }
    ]
}
```

**Example**  
El siguiente código de ejemplo muestra hasta 10 grupos de parámetros.  

```
aws elasticache describe-cache-parameter-groups --max-records 10
```
La salida JSON de este comando tendrá un aspecto similar al siguiente y mostrará el nombre, la familia, la descripción y, en el caso de redis5.6, si el grupo de parámetros forma parte de un almacén de datos global (isGlobal), para cada grupo de parámetros.  

```
{
    "CacheParameterGroups": [
        {
            "CacheParameterGroupName": "custom-redis32", 
            "CacheParameterGroupFamily": "redis3.2", 
            "Description": "custom parameter group with reserved-memory > 0"
        }, 
        {
            "CacheParameterGroupName": "default.memcached1.4", 
            "CacheParameterGroupFamily": "memcached1.4", 
            "Description": "Default parameter group for memcached1.4"
        }, 
        {
            "CacheParameterGroupName": "default.redis2.6", 
            "CacheParameterGroupFamily": "redis2.6", 
            "Description": "Default parameter group for redis2.6"
        }, 
        {
            "CacheParameterGroupName": "default.redis2.8", 
            "CacheParameterGroupFamily": "redis2.8", 
            "Description": "Default parameter group for redis2.8"
        }, 
        {
            "CacheParameterGroupName": "default.redis3.2", 
            "CacheParameterGroupFamily": "redis3.2", 
            "Description": "Default parameter group for redis3.2"
        }, 
        {
            "CacheParameterGroupName": "default.redis3.2.cluster.on", 
            "CacheParameterGroupFamily": "redis3.2", 
            "Description": "Customized default parameter group for redis3.2 with cluster mode on"
        },
        {
            "CacheParameterGroupName": "default.redis5.6.cluster.on", 
            "CacheParameterGroupFamily": "redis5.0", 
            "Description": "Customized default parameter group for redis5.6 with cluster mode on",
            "isGlobal": "yes"
        },
    ]
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-cache-parameter-groups.html](https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-cache-parameter-groups.html).

## Enumeración de grupos de parámetros de ElastiCache por nombre (API de ElastiCache)
<a name="ParameterGroups.ListingGroups.API"></a>

Para generar una lista de grupos de parámetros mediante la API de ElastiCache, utilice la acción `DescribeCacheParameterGroups`. Si proporciona un nombre de grupo de parámetros, solo se mostrará el grupo de parámetros de dicho nombre. Si no proporciona ningún nombre de grupo de parámetros, se mostrarán hasta `MaxRecords` grupos de parámetros. En cualquier caso, se mostrarán el nombre, la familia y la descripción del grupo de parámetros.

**Example**  
El siguiente código de ejemplo muestra el grupo de parámetros *myMem14*.  

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=DescribeCacheParameterGroups
   &CacheParameterGroupName=myMem14
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20150202T192317Z
   &Version=2015-02-02
   &X-Amz-Credential=<credential>
```
La respuesta de esta acción tendrá un aspecto similar al siguiente y mostrará el nombre, la familia y la descripción de cada grupo de parámetros.  

```
<DescribeCacheParameterGroupsResponse xmlns="http://elasticache.amazonaws.com/doc/2013-06-15/">
  <DescribeCacheParameterGroupsResult>
    <CacheParameterGroups>
      <CacheParameterGroup>
        <CacheParameterGroupName>myMem14</CacheParameterGroupName>
        <CacheParameterGroupFamily>memcached1.4</CacheParameterGroupFamily>
        <Description>My custom Memcached 1.4 parameter group</Description>
      </CacheParameterGroup>
    </CacheParameterGroups>
  </DescribeCacheParameterGroupsResult>
  <ResponseMetadata>
    <RequestId>3540cc3d-af48-11e0-97f9-279771c4477e</RequestId>
  </ResponseMetadata>
</DescribeCacheParameterGroupsResponse>
```

**Example**  
El siguiente código de ejemplo muestra hasta 10 grupos de parámetros.  

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=DescribeCacheParameterGroups
   &MaxRecords=10
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20150202T192317Z
   &Version=2015-02-02
   &X-Amz-Credential=<credential>
```
La respuesta de esta acción tendrá un aspecto similar al siguiente y mostrará el nombre, la familia, la descripción y, en el caso de redis5.6, si el grupo de parámetros pertenece a un almacén de datos global (isGlobal), para cada grupo de parámetros.  

```
<DescribeCacheParameterGroupsResponse xmlns="http://elasticache.amazonaws.com/doc/2013-06-15/">
  <DescribeCacheParameterGroupsResult>
    <CacheParameterGroups>
      <CacheParameterGroup>
        <CacheParameterGroupName>myRedis28</CacheParameterGroupName>
        <CacheParameterGroupFamily>redis2.8</CacheParameterGroupFamily>
        <Description>My custom Redis 2.8 parameter group</Description>
      </CacheParameterGroup>
      <CacheParameterGroup>
        <CacheParameterGroupName>myMem14</CacheParameterGroupName>
        <CacheParameterGroupFamily>memcached1.4</CacheParameterGroupFamily>
        <Description>My custom Memcached 1.4 parameter group</Description>
      </CacheParameterGroup>
       <CacheParameterGroup>
        <CacheParameterGroupName>myRedis56</CacheParameterGroupName>
        <CacheParameterGroupFamily>redis5.0</CacheParameterGroupFamily>
        <Description>My custom redis 5.6 parameter group</Description>
        <isGlobal>yes</isGlobal>
      </CacheParameterGroup>
    </CacheParameterGroups>
  </DescribeCacheParameterGroupsResult>
  <ResponseMetadata>
    <RequestId>3540cc3d-af48-11e0-97f9-279771c4477e</RequestId>
  </ResponseMetadata>
</DescribeCacheParameterGroupsResponse>
```

**Example**  
El siguiente código de ejemplo muestra el grupo de parámetros *myRed28*.  

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=DescribeCacheParameterGroups
   &CacheParameterGroupName=myRed28
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20150202T192317Z
   &Version=2015-02-02
   &X-Amz-Credential=<credential>
```
La respuesta de esta acción tendrá un aspecto similar al siguiente y mostrará el nombre, la familia y la descripción.  

```
<DescribeCacheParameterGroupsResponse xmlns="http://elasticache.amazonaws.com/doc/2013-06-15/">
  <DescribeCacheParameterGroupsResult>
    <CacheParameterGroups>
      <CacheParameterGroup>
        <CacheParameterGroupName>myRed28</CacheParameterGroupName>
        <CacheParameterGroupFamily>redis2.8</CacheParameterGroupFamily>
        <Description>My custom Redis 2.8 parameter group</Description>
      </CacheParameterGroup>
    </CacheParameterGroups>
  </DescribeCacheParameterGroupsResult>
  <ResponseMetadata>
    <RequestId>3540cc3d-af48-11e0-97f9-279771c4477e</RequestId>
  </ResponseMetadata>
</DescribeCacheParameterGroupsResponse>
```

**Example**  
El siguiente código de muestra indica el grupo de parámetros *myRed56*.  

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=DescribeCacheParameterGroups
   &CacheParameterGroupName=myRed56
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20150202T192317Z
   &Version=2015-02-02
   &X-Amz-Credential=<credential>
```
La respuesta de esta acción tendrá un aspecto similar al siguiente y mostrará el nombre, la familia, la descripción y si el grupo de parámetros forma parte de un almacén de datos global (isGlobal).  

```
<DescribeCacheParameterGroupsResponse xmlns="http://elasticache.amazonaws.com/doc/2013-06-15/">
  <DescribeCacheParameterGroupsResult>
    <CacheParameterGroups>
      <CacheParameterGroup>
        <CacheParameterGroupName>myRed56</CacheParameterGroupName>
        <CacheParameterGroupFamily>redis5.0</CacheParameterGroupFamily>
        <Description>My custom Redis 5.6 parameter group</Description>
        <isGlobal>yes</isGlobal>
      </CacheParameterGroup>
    </CacheParameterGroups>
  </DescribeCacheParameterGroupsResult>
  <ResponseMetadata>
    <RequestId>3540cc3d-af48-11e0-97f9-279771c4477e</RequestId>
  </ResponseMetadata>
</DescribeCacheParameterGroupsResponse>
```

Para obtener más información, consulte [https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeCacheParameterGroups.html](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeCacheParameterGroups.html).

# Enumeración de valores de un grupo de parámetros de ElastiCache
<a name="ParameterGroups.ListingValues"></a>

Puede obtener una lista de los parámetros de un grupo de parámetros, junto con sus valores, mediante la consola de ElastiCache, la AWS CLI o la API de ElastiCache.

## Enumeración de valores de un grupo de parámetros de ElastiCache (consola)
<a name="ParameterGroups.ListingValues.CON"></a>

El siguiente procedimiento muestra cómo obtener una lista de los parámetros de un grupo de parámetros, junto con sus valores, mediante la consola de ElastiCache.

**Para obtener una lista de los parámetros de un grupo de parámetros, junto con sus valores, mediante la consola de ElastiCache**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de ElastiCache en [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. Para ver una lista de todos los grupos de parámetros disponibles, en el panel de navegación izquierdo, elija **Parameter Groups**.

1. Elija el grupo de parámetros del que desea obtener una lista de los parámetros y sus valores activando la casilla situada a la izquierda del nombre del grupo de parámetros.

   Los parámetros y sus valores se mostrarán en la parte inferior de la pantalla. Debido al número de parámetros, puede que tenga que desplazarse hacia arriba y hacia abajo para encontrar el parámetro que le interesa.

## Enumeración de valores de un grupo de parámetros (AWS CLI)
<a name="ParameterGroups.ListingValues.CLI"></a>

Para obtener una lista de los parámetros de un grupo de parámetros, junto con sus valores, mediante la AWS CLI, use el comando `describe-cache-parameters`.

**Example**  
El siguiente código de ejemplo muestra todos los parámetros de Memcached, junto con sus valores, para el grupo de parámetros *myMem14*.  
Para Linux, macOS o Unix:  

```
aws elasticache describe-cache-parameters \
    --cache-parameter-group-name myMem14
```
Para Windows:  

```
aws elasticache describe-cache-parameters ^
    --cache-parameter-group-name myMem14
```

**Example**  
El siguiente código de ejemplo muestra todos los parámetros, junto con sus valores, del grupo de parámetros *myRedis28*.  
Para Linux, macOS o Unix:  

```
aws elasticache describe-cache-parameters \
    --cache-parameter-group-name myRedis28
```
Para Windows:  

```
aws elasticache describe-cache-parameters ^
    --cache-parameter-group-name myRed28
```

Para obtener más información, consulte [https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-cache-parameters.html](https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-cache-parameters.html).

## Enumeración de valores de un grupo de parámetros (API de ElastiCache)
<a name="ParameterGroups.ListingValues.API"></a>

Para obtener una lista de los parámetros de un grupo de parámetros, junto con sus valores, mediante la API de ElastiCache, utilice la acción `DescribeCacheParameters`.

**Example**  
El siguiente código de ejemplo muestra todos los parámetros de Memcached para el grupo de parámetros *myMem14*.  

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=DescribeCacheParameters
   &CacheParameterGroupName=myMem14
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20150202T192317Z
   &Version=2015-02-02
   &X-Amz-Credential=<credential>
```
La respuesta a esta acción tendrá un aspecto similar al siguiente. Esta respuesta se ha truncado.  

```
<DescribeCacheParametersResponse xmlns="http://elasticache.amazonaws.com/doc/2013-06-15/">
  <DescribeCacheParametersResult>
    <CacheClusterClassSpecificParameters>
      <CacheNodeTypeSpecificParameter>
        <DataType>integer</DataType>
        <Source>system</Source>
        <IsModifiable>false</IsModifiable>
        <Description>The maximum configurable amount of memory to use to store items, in megabytes.</Description>
        <CacheNodeTypeSpecificValues>
          <CacheNodeTypeSpecificValue>
            <Value>1000</Value>
            <CacheClusterClass>cache.c1.medium</CacheClusterClass>
          </CacheNodeTypeSpecificValue>
          <CacheNodeTypeSpecificValue>
            <Value>6000</Value>
            <CacheClusterClass>cache.c1.xlarge</CacheClusterClass>
          </CacheNodeTypeSpecificValue>
          <CacheNodeTypeSpecificValue>
            <Value>7100</Value>
            <CacheClusterClass>cache.m1.large</CacheClusterClass>
          </CacheNodeTypeSpecificValue>
          <CacheNodeTypeSpecificValue>
            <Value>1300</Value>
            <CacheClusterClass>cache.m1.small</CacheClusterClass>
          </CacheNodeTypeSpecificValue>
          
...output omitted...

    </CacheClusterClassSpecificParameters>
  </DescribeCacheParametersResult>
  <ResponseMetadata>
    <RequestId>6d355589-af49-11e0-97f9-279771c4477e</RequestId>
  </ResponseMetadata>
</DescribeCacheParametersResponse>
```

**Example**  
El siguiente código de ejemplo muestra todos los parámetros del grupo de parámetros *myRed28*.  

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=DescribeCacheParameters
   &CacheParameterGroupName=myRed28
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20150202T192317Z
   &Version=2015-02-02
   &X-Amz-Credential=<credential>
```
La respuesta a esta acción tendrá un aspecto similar al siguiente. Esta respuesta se ha truncado.  

```
<DescribeCacheParametersResponse xmlns="http://elasticache.amazonaws.com/doc/2013-06-15/">
  <DescribeCacheParametersResult>
    <CacheClusterClassSpecificParameters>
      <CacheNodeTypeSpecificParameter>
        <DataType>integer</DataType>
        <Source>system</Source>
        <IsModifiable>false</IsModifiable>
        <Description>The maximum configurable amount of memory to use to store items, in megabytes.</Description>
        <CacheNodeTypeSpecificValues>
          <CacheNodeTypeSpecificValue>
            <Value>1000</Value>
            <CacheClusterClass>cache.c1.medium</CacheClusterClass>
          </CacheNodeTypeSpecificValue>
          <CacheNodeTypeSpecificValue>
            <Value>6000</Value>
            <CacheClusterClass>cache.c1.xlarge</CacheClusterClass>
          </CacheNodeTypeSpecificValue>
          <CacheNodeTypeSpecificValue>
            <Value>7100</Value>
            <CacheClusterClass>cache.m1.large</CacheClusterClass>
          </CacheNodeTypeSpecificValue>
          <CacheNodeTypeSpecificValue>
            <Value>1300</Value>
            <CacheClusterClass>cache.m1.small</CacheClusterClass>
          </CacheNodeTypeSpecificValue>
          
...output omitted...

    </CacheClusterClassSpecificParameters>
  </DescribeCacheParametersResult>
  <ResponseMetadata>
    <RequestId>6d355589-af49-11e0-97f9-279771c4477e</RequestId>
  </ResponseMetadata>
</DescribeCacheParametersResponse>
```

Para obtener más información, consulte [https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeCacheParameters.html](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeCacheParameters.html).

# Modificación de un grupo de parámetros de ElastiCache
<a name="ParameterGroups.Modifying"></a>

**importante**  
No es posible modificar ningún grupo de parámetros predeterminado.

Es posible modificar algunos parámetros de un grupo de parámetros. Dichos valores de parámetros se aplican a los clústeres asociados al grupo de parámetros. Para obtener más información acerca de cuándo se aplica un cambio de valor de parámetro a un grupo de parámetros, consulte [Parámetros de Valkey y Redis OSS](ParameterGroups.Engine.md#ParameterGroups.Redis) y [Parámetros específicos de Memcached](ParameterGroups.Engine.md#ParameterGroups.Memcached).

## Modificación de un grupo de parámetros (consola)
<a name="ParameterGroups.Modifying.CON"></a>

En el siguiente procedimiento se muestra cómo cambiar el valor del parámetro `cluster-enabled` mediante la consola de ElastiCache. Puede usar el mismo procedimiento para cambiar el valor de cualquier parámetro.

**Para cambiar el valor de un parámetro mediante la consola de ElastiCache**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de ElastiCache en [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. Para ver una lista de todos los grupos de parámetros disponibles, en el panel de navegación izquierdo, elija **Parameter Groups**.

1. Elija el grupo de parámetros que desea modificar activando la casilla situada a la izquierda del nombre del grupo de parámetros.

   Los parámetros del grupo de parámetros se mostrarán en la parte inferior de la pantalla. Es posible que necesite desplazarse por las páginas de la lista para ver todos los parámetros.

1. Para modificar uno o varios parámetros, elija **Edit Parameters**.

1. En la pantalla **Edit Parameter Group:**, desplácese mediante las flechas izquierda y derecha hasta que encuentre el parámetro `binding_protocol` y, a continuación, escriba `ascii` en la columna **Value**.

1. Elija **Save changes (Guardar cambios)**.

1. Para Memcached, para encontrar el nombre del parámetro que ha cambiado, consulte [Parámetros específicos de Memcached](ParameterGroups.Engine.md#ParameterGroups.Memcached). Si los cambios realizados en el parámetro se aplican *tras reiniciar*, reinicie todos los clústeres que usen este grupo de parámetros. Para obtener más información, consulte [Rebooting clusters](Clusters.html#Rebooting).

1. Con Valkey y Redis OSS, para encontrar el nombre del parámetro que ha cambiado, consulte [Parámetros de Valkey y Redis OSS](ParameterGroups.Engine.md#ParameterGroups.Redis). Si tiene un clúster de Valkey o Redis OSS (modo de clúster deshabilitado) y realiza cambios en los siguientes parámetros, debe reiniciar los nodos del clúster:
   + activerehashing
   + bases de datos

    Para obtener más información, consulte [Nodos de reinicio](nodes.rebooting.md).
**Cambios de parámetros de Valkey o Redis OSS (modo de clúster habilitado)**  
Si realiza cambios en los siguientes parámetros en un clúster de Valkey o Redis OSS (modo de clúster habilitado), realice los siguientes pasos.  
activerehashing
bases de datos
Con Redis OSS, puede crear una copia de seguridad manual de su clúster. Consulte [Copias de seguridad manuales](backups-manual.md).
Eliminar el clúster. Consulte [Deleting clusters](Clusters.html#Delete).
Restaure el clúster con la copia de seguridad y el grupo de parámetros modificados para propagar los datos en el nuevo clúster. Consulte [Restauración desde una copia de seguridad a una nueva caché](backups-restoring.md).
Los cambios en otros parámetros no requieren esta acción.



## Modificación de un grupo de parámetros (AWS CLI)
<a name="ParameterGroups.Modifying.CLI"></a>

Para cambiar el valor de un parámetro mediante la AWS CLI, use el comando `modify-cache-parameter-group`.

**Example**  
Con Memcached, para encontrar el nombre y los valores permitidos del parámetro que desea cambiar, consulte [Parámetros específicos de Memcached](ParameterGroups.Engine.md#ParameterGroups.Memcached).  
El siguiente código de muestra establece el valor de dos parámetros, *chunk\$1size* y *chunk\$1size\$1growth\$1fact*, en el grupo de parámetros `myMem14`.  
Para Linux, macOS o Unix:  

```
aws elasticache modify-cache-parameter-group \
    --cache-parameter-group-name myMem14 \
    --parameter-name-values \
        ParameterName=chunk_size,ParameterValue=96 \
        ParameterName=chunk_size_growth_fact,ParameterValue=1.5
```
Para Windows:  

```
aws elasticache modify-cache-parameter-group ^
    --cache-parameter-group-name myMem14 ^
    --parameter-name-values ^
        ParameterName=chunk_size,ParameterValue=96 ^
        ParameterName=chunk_size_growth_fact,ParameterValue=1.5
```
El resultado de este comando será algo similar a lo que se muestra a continuación.  

```
{
    "CacheParameterGroupName": "myMem14"
}
```

**Example**  
Con Valkey y Redis OSS, para encontrar el nombre y los valores permitidos del parámetro que desea cambiar, consulte [Parámetros de Valkey y Redis OSS](ParameterGroups.Engine.md#ParameterGroups.Redis).  
El siguiente código de muestra establece el valor de dos parámetros, *reserved-memory-percent* y *cluster-enabled*, en el grupo de parámetros `myredis32-on-30`. Establecemos *reserved-memory-percent* en `30` (30 %) y *cluster-enabled* en `yes` de modo que el grupo de parámetros se pueda utilizar con clústeres (grupos de replicación) de Valkey o Redis OSS (modo de clúster habilitado).  
Para Linux, macOS o Unix:  

```
aws elasticache modify-cache-parameter-group \
    --cache-parameter-group-name myredis32-on-30 \
    --parameter-name-values \
        ParameterName=reserved-memory-percent,ParameterValue=30 \
        ParameterName=cluster-enabled,ParameterValue=yes
```
Para Windows:  

```
aws elasticache modify-cache-parameter-group ^
    --cache-parameter-group-name myredis32-on-30 ^
    --parameter-name-values ^
        ParameterName=reserved-memory-percent,ParameterValue=30 ^
        ParameterName=cluster-enabled,ParameterValue=yes
```
El resultado de este comando será algo similar a lo que se muestra a continuación.  

```
{
    "CacheParameterGroupName": "my-redis32-on-30"
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-cache-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-cache-parameter-group.html).

Para encontrar el nombre del parámetro que ha cambiado, consulte [Parámetros de Valkey y Redis OSS](ParameterGroups.Engine.md#ParameterGroups.Redis). 

 Si tiene un clúster de Valkey o Redis OSS (modo de clúster deshabilitado) y realiza cambios en los siguientes parámetros, debe reiniciar los nodos del clúster:
+ activerehashing
+ bases de datos

 Para obtener más información, consulte [Nodos de reinicio](nodes.rebooting.md).

**Cambios de parámetros de Valkey o Redis OSS (modo de clúster habilitado)**  
Si realiza cambios en los siguientes parámetros en un clúster de Valkey o Redis OSS (modo de clúster habilitado), realice los siguientes pasos.  
activerehashing
bases de datos
Cree una copia de seguridad manual de su clúster. Consulte [Copias de seguridad manuales](backups-manual.md).
Eliminar el clúster. Consulte [Deleting clusters](Clusters.html#Delete).
Restaure el clúster con la copia de seguridad y el grupo de parámetros modificados para propagar los datos en el nuevo clúster. Consulte [Restauración desde una copia de seguridad a una nueva caché](backups-restoring.md).
Los cambios en otros parámetros no requieren esta acción.

## Modificación de un grupo de parámetros (API de ElastiCache)
<a name="ParameterGroups.Modifying.API"></a>

Para cambiar los valores de parámetro de un grupo de parámetros mediante la API de ElastiCache, utilice la acción `ModifyCacheParameterGroup`.

**Example**  
Con Memcached, para encontrar el nombre y los valores permitidos del parámetro que desea cambiar, consulte [Parámetros específicos de Memcached](ParameterGroups.Engine.md#ParameterGroups.Memcached).  
El siguiente código de muestra establece el valor de dos parámetros, *chunk\$1size* y *chunk\$1size\$1growth\$1fact*, en el grupo de parámetros `myMem14`.  

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=ModifyCacheParameterGroup
   &CacheParameterGroupName=myMem14
   &ParameterNameValues.member.1.ParameterName=chunk_size
   &ParameterNameValues.member.1.ParameterValue=96
   &ParameterNameValues.member.2.ParameterName=chunk_size_growth_fact
   &ParameterNameValues.member.2.ParameterValue=1.5
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20150202T192317Z
   &Version=2015-02-02
   &X-Amz-Credential=<credential>
```

**Example**  
Con Valkey y Redis OSS, para encontrar el nombre y los valores permitidos del parámetro que desea cambiar, consulte [Parámetros de Valkey y Redis OSS](ParameterGroups.Engine.md#ParameterGroups.Redis).  
El siguiente código de muestra establece el valor de dos parámetros, *reserved-memory-percent* y *cluster-enabled*, en el grupo de parámetros `myredis32-on-30`. Establecemos *reserved-memory-percent* en `30` (30 %) y *cluster-enabled* en `yes` de modo que el grupo de parámetros se pueda utilizar con clústeres (grupos de replicación) de Valkey o Redis OSS (modo de clúster habilitado).  

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=ModifyCacheParameterGroup
   &CacheParameterGroupName=myredis32-on-30
   &ParameterNameValues.member.1.ParameterName=reserved-memory-percent
   &ParameterNameValues.member.1.ParameterValue=30
   &ParameterNameValues.member.2.ParameterName=cluster-enabled
   &ParameterNameValues.member.2.ParameterValue=yes
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20150202T192317Z
   &Version=2015-02-02
   &X-Amz-Credential=<credential>
```

Para obtener más información, consulte [https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyCacheParameterGroup.html](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyCacheParameterGroup.html).

Si tiene un clúster de Valkey o Redis OSS (modo de clúster deshabilitado) y realiza cambios en los siguientes parámetros, debe reiniciar los nodos del clúster:
+ activerehashing
+ bases de datos

 Para obtener más información, consulte [Reinicio de nodos](nodes.rebooting.md).

**Cambios de parámetros de Valkey o Redis OSS (modo de clúster habilitado)**  
Si realiza cambios en los siguientes parámetros en un clúster de Valkey o Redis OSS (modo de clúster habilitado), realice los siguientes pasos.  
activerehashing
bases de datos
Cree una copia de seguridad manual de su clúster. Consulte [Copias de seguridad manuales](backups-manual.md).
Eliminar el clúster. Consulte [Eliminar un clúster en ElastiCache](Clusters.Delete.md).
Restaure el clúster con la copia de seguridad y el grupo de parámetros modificados para propagar los datos en el nuevo clúster. Consulte [Restauración desde una copia de seguridad a una nueva caché](backups-restoring.md).
Los cambios en otros parámetros no requieren esta acción.

# Eliminación de un grupo de parámetros de ElastiCache
<a name="ParameterGroups.Deleting"></a>

Puede eliminar un grupo de parámetros personalizados con la consola de ElastiCache, la AWS CLI o la API de ElastiCache.

No podrá eliminar un grupo de parámetros si está asociado a un clúster. Tampoco podrá eliminar ninguno de los grupos de parámetros predeterminados.

## Eliminación de un grupo de parámetros (consola)
<a name="ParameterGroups.Deleting.CON"></a>

En el siguiente procedimiento se muestra cómo eliminar un grupo de parámetros mediante la consola de ElastiCache.

**Para eliminar un grupo de parámetros con la consola de ElastiCache**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de ElastiCache en [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. Para ver una lista de todos los grupos de parámetros disponibles, en el panel de navegación izquierdo, elija **Parameter Groups**.

1. Elija los grupos de parámetros que desea eliminar activando la casilla situada a la izquierda del nombre del grupo de parámetros.

   El botón **Delete** se activará.

1. Elija **Eliminar**.

   Aparecerá la pantalla de confirmación **Delete Parameter Groups**.

1. Para eliminar los grupos de parámetros, en la pantalla de confirmación **Delete Parameter Groups**, elija **Delete**.

   Para conservar los grupos de parámetros, elija **Cancel**.

## Eliminación de un grupo de parámetros (AWS CLI)
<a name="ParameterGroups.Deleting.CLI"></a>

Para eliminar un grupo de parámetros mediante la AWS CLI, use el comando `delete-cache-parameter-group`. Para que el grupo de parámetros se elimine, el grupo de parámetros especificado mediante `--cache-parameter-group-name` no puede tener ningún clúster asociado al grupo ni puede ser un grupo de parámetros predeterminado.

El siguiente código de muestra elimina el grupo de parámetros *myMem14*.

**Example**  
Para Linux, macOS o Unix:  

```
aws elasticache delete-cache-parameter-group \
    --cache-parameter-group-name myRed28
```
Para Windows:  

```
aws elasticache delete-cache-parameter-group ^
    --cache-parameter-group-name myRed28
```

Para obtener más información, consulte [https://docs.aws.amazon.com/cli/latest/reference/elasticache/delete-cache-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/elasticache/delete-cache-parameter-group.html).

## Eliminación de un grupo de parámetros (API de ElastiCache)
<a name="ParameterGroups.Deleting.API"></a>

Para eliminar un grupo de parámetros mediante la API de ElastiCache, utilice la acción `DeleteCacheParameterGroup`. Para que el grupo de parámetros se elimine, el grupo de parámetros especificado mediante `CacheParameterGroupName` no puede tener ningún clúster asociado al grupo ni puede ser un grupo de parámetros predeterminado.

**Example**  
Con Memcached, el siguiente código de ejemplo elimina el grupo de parámetros *myMem14*.  

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=DeleteCacheParameterGroup
   &CacheParameterGroupName=myMem14
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20150202T192317Z
   &Version=2015-02-02
   &X-Amz-Credential=<credential>
```

**Example**  
El siguiente código de muestra elimina el grupo de parámetros *myRed28*.  

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=DeleteCacheParameterGroup
   &CacheParameterGroupName=myRed28
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20150202T192317Z
   &Version=2015-02-02
   &X-Amz-Credential=<credential>
```

Para obtener más información, consulte [https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DeleteCacheParameterGroup.html](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DeleteCacheParameterGroup.html).

# Parámetros específicos del motor
<a name="ParameterGroups.Engine"></a>

**Valkey y Redis OSS**

La mayoría de los parámetros de Valkey 8 son compatibles con los parámetros de Redis OSS 7.1. Los parámetros de Valkey 7.2 son los mismos que los parámetros de Redis OSS 7.

Si no se especifica ningún grupo de parámetros para el clúster de Valkey o Redis OSS, se usará un grupo de parámetros predeterminado apropiado para la versión del motor. No puede cambiar los valores de los parámetros de un grupo de parámetros predeterminado. Sin embargo, puede crear un grupo de parámetros personalizado y asignarlo a su clúster en cualquier momento, siempre y cuando los valores de los parámetros modificables condicionalmente sean iguales en ambos grupos de parámetros. Para obtener más información, consulte [Creación de un grupo de parámetros de ElastiCache](ParameterGroups.Creating.md).

**Topics**
+ [Parámetros de Valkey y Redis OSS](#ParameterGroups.Redis)
+ [Parámetros específicos de Memcached](#ParameterGroups.Memcached)

## Parámetros de Valkey y Redis OSS
<a name="ParameterGroups.Redis"></a>

**Topics**
+ [Cambios en los parámetros de Valkey 8.2](#ParameterGroups.Valkey.8.2)
+ [Cambios de parámetros de Valkey 8.1](#ParameterGroups.Valkey.8.1)
+ [Cambios de parámetros de Valkey 8.0](#ParameterGroups.Valkey.8)
+ [Cambios en los parámetros de Valkey 7.2 y Redis OSS 7](#ParameterGroups.Redis.7)
+ [Cambios de parámetros de Redis OSS 6.x](#ParameterGroups.Redis.6-x)
+ [Cambios de parámetros de Redis OSS 5.0.3](#ParameterGroups.Redis.5-0-3)
+ [Cambios de parámetros de Redis OSS 5.0.0](#ParameterGroups.Redis.5.0)
+ [Cambios de parámetros de Redis OSS 4.0.10](#ParameterGroups.Redis.4-0-10)
+ [Cambios de parámetros de Redis OSS 3.2.10](#ParameterGroups.Redis.3-2-10)
+ [Cambios de parámetros de Redis OSS 3.2.6](#ParameterGroups.Redis.3-2-6)
+ [Cambios de parámetros de Redis OSS 3.2.4](#ParameterGroups.Redis.3-2-4)
+ [Parámetros que se han añadido a Redis OSS 2.8.24 (mejorado)](#ParameterGroups.Redis.2-8-24)
+ [Parámetros que se han añadido a Redis OSS 2.8.23 (mejorado)](#ParameterGroups.Redis.2-8-23)
+ [Parámetros que se han añadido a Redis OSS 2.8.22 (mejorado)](#ParameterGroups.Redis.2-8-22)
+ [Parámetros que se han añadido a Redis OSS 2.8.21](#ParameterGroups.Redis.2-8-21)
+ [Parámetros que se han añadido a Redis OSS 2.8.19](#ParameterGroups.Redis.2-8-19)
+ [Parámetros que se han añadido a Redis OSS 2.8.6](#ParameterGroups.Redis.2-8-6)
+ [Parámetros de Redis OSS 2.6.13](#ParameterGroups.Redis.2-6-13)
+ [Parámetros específicos de tipos de nodos de Redis OSS](#ParameterGroups.Redis.NodeSpecific)

### Cambios en los parámetros de Valkey 8.2
<a name="ParameterGroups.Valkey.8.2"></a>

**Familia de grupos de parámetros: valkey8**

**nota**  
Los cambios en los parámetros de Valkey 8.2 no se aplican a Valkey 8.1
Los grupos de parámetros de Valkey 8.0 y versiones superiores son incompatibles con Redis OSS 7.2.4.
En Valkey 8.2, los siguientes comandos no están disponibles para las cachés sin servidor: `commandlog`, `commandlog get`, `commandlog help`, `commandlog len` y `commandlog reset.` 


**Nuevos grupos de parámetros en Valkey 8.2**  

| Name | Details | Description (Descripción) | 
| --- | --- | --- | 
| search-fanout-target-mode (agregado en 8.2) | Predeterminado: client Tipo: cadena Modificable: sí Aplicación de los cambios: inmediatamente |   El parámetro search-fanout-target-mode de configuración controla cómo se distribuyen las consultas de búsqueda entre los nodos de un entorno de clústeres de Valkey. Esta configuración acepta dos valores: “throughput”, que optimiza el rendimiento máximo mediante la distribución aleatoria de las consultas de búsqueda en todos los nodos del clúster, independientemente del tipo de cliente o del estado READONLY; y “client”, que respeta las características de conexión del cliente al enrutar los clientes que no son READONLY solo hacia los nodos principales, los clientes READONLY conectados a nodos de réplica solo hacia los nodos de réplica y los clientes READONLY conectados a nodos principales de forma aleatoria hacia todos los nodos.  El comportamiento predeterminado es el modo “client”, que implica que el sistema respetará los tipos de conexión de cliente y el estado READONLY para las decisiones de enrutamiento de consultas. Utilice el modo de rendimiento para cargas de trabajo de búsqueda de gran volumen en las que se desee utilizar al máximo los recursos del clúster, y el modo cliente cuando desee mantener la read/write separación y respetar los patrones de conexión READONLY a nivel de aplicación. | 
| search-default-timeout-ms |  Predeterminado: 50000 Valores permitidos: de 1 a 60000 Tipo: número entero Modificable: sí Aplicación de los cambios: inmediatamente | Es el tiempo de espera predeterminado de la consulta de búsqueda de Valkey (en milisegundos). | 
| search-enable-partial-results | Valor predeterminado: yes Valores permitidos: yes, no Tipo: booleano Modificable: sí Aplicación de los cambios: inmediatamente | Configura el comportamiento de error de consulta en la búsqueda de Valkey. Si está habilitado, las consultas de búsqueda devuelven resultados parciales si se agota el tiempo de espera en una o más particiones. Si está deshabilitado y se agota el tiempo de espera de cualquier partición, fallará toda la consulta de búsqueda y se generará un error. | 

### Cambios de parámetros de Valkey 8.1
<a name="ParameterGroups.Valkey.8.1"></a>

**Familia de grupos de parámetros: valkey8**

**nota**  
Los cambios en los parámetros de Valkey 8.1 no se aplican a Valkey 8.0
Los grupos de parámetros de Valkey 8.0 y versiones superiores son incompatibles con Redis OSS 7.2.4.
En Valkey 8.1, los siguientes comandos no están disponibles para las cachés sin servidor: `commandlog`, `commandlog get`, `commandlog help`, `commandlog len` y `commandlog reset.` 


**Nuevos grupos de parámetros en Valkey 8.1**  

| Name | Details | Description (Descripción) | 
| --- | --- | --- | 
|  commandlog-large-request-max-len (agregado en 8.1)  |  Predeterminado: 1048576 Tipo: número entero Modificable: sí Aplicación de los cambios: inmediatamente  |  Tamaño máximo, en bytes, de las solicitudes que debe registrar la característica Registro de comandos de Valkey.  | 
|  commandlog-large-request-max-len (agregado en 8.1)  |  Valor predeterminado: 128 Valores permitidos: 0-1024 Tipo: número entero Modificable: sí Aplicación de los cambios: inmediatamente  |  Longitud máxima de la característica Registro de comandos de Valkey para las solicitudes.  | 
|  commandlog-reply-larger-than (añadido en 8.1)  |  Predeterminado: 1048576 Tipo: número entero Modificable: sí Aplicación de los cambios: inmediatamente  |  Tamaño máximo, en bytes, de las respuestas que debe registrar la característica Registro de comandos de Valkey.  | 
|  commandlog-large-reply-max-len (agregado en 8.1)  |  Valor predeterminado: 128 Valores permitidos: 0-1024 Tipo: número entero Modificable: sí Aplicación de los cambios: inmediatamente  |  Tamaño máximo de la característica Registro de comandos de Valkey para las respuestas.  | 

### Cambios de parámetros de Valkey 8.0
<a name="ParameterGroups.Valkey.8"></a>

**Familia de grupos de parámetros**: valkey8

**nota**  
Redis OSS 7.2.4 es incompatibles con los grupos de parámetros de Valkey 8.0 y versiones posteriores.


**Cambios de parámetros específicos en Valkey 8.0**  

| Name | Details | Description (Descripción) | 
| --- | --- | --- | 
|  repl-backlog-size  |  Predeterminado: 10485760 Tipo: número entero Modificable: sí Aplicación de los cambios: inmediatamente  |  Tamaño, en bytes, del búfer de tareas pendientes del nodo principal. Las tareas pendientes se usan para registrar actualizaciones de los datos en el nodo principal. Cuando una réplica de lectura se conecta al nodo principal, intenta realizar una sincronización parcial (psync), donde se aplican los datos de las tareas pendientes para ponerse al día con el nodo principal. Si se produce un error en la psync, se debe realizar una sincronización completa. El valor mínimo para este parámetro es 16384. Nota: A partir de Redis OSS 2.8.22, este parámetro se aplica al clúster principal, así como a las réplicas de lectura.  | 
|  maxmemory-samples  |  Predeterminado: 3 Valores permitidos: de 1 a 64 Tipo: número entero Modificable: sí Aplicación de los cambios: inmediatamente  |  Para los cálculos least-recently-used (LRU) y time-to-live (TTL), este parámetro representa el tamaño de la muestra de las claves que se van a comprobar. De forma predeterminada, Redis OSS elige 3 claves y usa la que se usó menos recientemente.  | 


**Nuevos grupos de parámetros en Valkey 8.0**  

| Name | Details | Description (Descripción) | 
| --- | --- | --- | 
|  extended-redis-compatibility  |  Valores permitidos: yes, no Valor predeterminado: yes Tipo: booleano Modificable: sí Aplicación de los cambios: inmediatamente  |  El modo de compatibilidad ampliada con Redis OSS hace que Valkey se haga pasar por Redis OSS 7.2. Habilítelo solo si tiene problemas con las herramientas o los clientes. Cómo afecta al cliente: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/ParameterGroups.Engine.html)  | 


**Grupos de parámetros retirados de Valkey 8.0**  

| Name | Details | Description (Descripción) | 
| --- | --- | --- | 
|  lazyfree-lazy-eviction  |  Valores permitidos: yes, no Valor predeterminado: no Tipo: booleano Modificable: sí Aplicación de los cambios: inmediatamente  |  Realiza una eliminación asíncrona en las expulsiones.  | 
|  lazyfree-lazy-expire  |  Valores permitidos: yes, no Valor predeterminado: no Tipo: booleano Modificable: sí Aplicación de los cambios: inmediatamente  |  Realiza una eliminación asíncrona en las claves vencidas.  | 
|  lazyfree-lazy-server-del  |  Valores permitidos: yes, no Valor predeterminado: no Tipo: booleano Modificable: sí Aplicación de los cambios: inmediatamente  |  Realiza una eliminación asíncrona de los comandos que actualizan valores.  | 
|  lazyfree-lazy-user-del  |  Valor predeterminado: no Tipo: String Modificable: sí Los cambios surten efecto: inmediatamente en todos los clústeres  |   Cuando el valor se establece en “yes”, el comando DEL actúa de la misma manera que UNLINK.  | 
|  replica-lazy-flush  |  Valor predeterminado: yes Tipo: booleano Modificable: no Nombre anterior: slave-lazy-flush  |  Realiza un volcado de base de datos asíncrono durante la sincronización de réplicas.  | 

### Cambios en los parámetros de Valkey 7.2 y Redis OSS 7
<a name="ParameterGroups.Redis.7"></a>

**Familia de grupos de parámetros**: valkey7

Los grupos de parámetros predeterminados de Valkey 7.2 son los siguientes:
+ `default.valkey7`: utilice este grupo de parámetros, o uno derivado de él, para clústeres y grupos de replicación de Valkey (modo de clúster deshabilitado).
+ `default.valkey7.cluster.on`: utilice este grupo de parámetros, o uno derivado de él, para clústeres y grupos de replicación de Valkey (modo de clúster habilitado).

**Familia del grupo de parámetros:** redis7

Los grupos de parámetros predeterminados de Redis OSS 7 son los siguientes:
+ `default.redis7`: utilice este grupo de parámetros, o uno derivado de él, para clústeres y grupos de replicación de Redis OSS (modo de clúster deshabilitado).
+ `default.redis7.cluster.on`: utilice este grupo de parámetros, o uno derivado de él, para clústeres y grupos de replicación de Redis OSS (modo de clúster habilitado).

**Cambios de parámetros específicos**

Los parámetros que se han añadido en Redis OSS 7 son los siguientes. Valkey 7.2 también admite estos parámetros.


|  Name  |  Details |  Description (Descripción)  | 
| --- | --- | --- | 
| cluster-allow-pubsubshard-when-down |  Valores permitidos: `yes`, `no` Valor predeterminado: `yes` Tipo: cadena Modificable: sí Los cambios surten efecto: inmediatamente en todos los nodos del clúster. | Cuando se establece sí como valor predeterminado, se permite a los nodos atender el tráfico de particiones de pubsub mientras el clúster esté inactivo, siempre y cuando crea que es el propietario de las ranuras.  | 
| cluster-preferred-endpoint-type |  Valores permitidos: `ip`, `tls-dynamic` Valor predeterminado: `tls-dynamic` Tipo: cadena Modificable: sí Los cambios surten efecto: inmediatamente en todos los nodos del clúster. | Este valor controla el punto de conexión que se devuelve para las solicitudes MOVED/ASKING, así como el campo de punto de conexión para `CLUSTER SLOTS` y `CLUSTER SHARDS`. Cuando el valor se establece en IP, el nodo comunicará su dirección IP. Cuando el valor se establece en tls-dynamic, el nodo anunciará un nombre de host cuando encryption-in-transit esté habilitado y una dirección IP en caso contrario.  | 
| latency-tracking |  Valores permitidos: `yes`, `no` Valor predeterminado: `no` Tipo: cadena Modificable: sí Los cambios surten efecto: inmediatamente en todos los nodos del clúster. | Cuando se establece en sí, realiza un seguimiento de las latencias por comando y permite exportar la distribución de percentiles mediante el comando de estadísticas de latencia `INFO` y las distribuciones de latencia acumulada (histogramas) mediante el comando `LATENCY`.  | 
| hash-max-listpack-entries |  Valores permitidos: `0+` Valor predeterminado: `512` Tipo: número entero Modificable: sí Los cambios surten efecto: inmediatamente en todos los nodos del clúster. | El número máximo de entradas de hash para comprimir el conjunto de datos.  | 
| hash-max-listpack-value |  Valores permitidos: `0+` Valor predeterminado: `64` Tipo: número entero Modificable: sí Los cambios surten efecto: inmediatamente en todos los nodos del clúster. | El umbral de entradas de hash más grandes para comprimir el conjunto de datos.  | 
| zset-max-listpack-entries |  Valores permitidos: `0+` Valor predeterminado: `128` Tipo: número entero Modificable: sí Los cambios surten efecto: inmediatamente en todos los nodos del clúster. | El número máximo de entradas de conjuntos ordenados para comprimir el conjunto de datos.  | 
| zset-max-listpack-value |  Valores permitidos: `0+` Valor predeterminado: `64` Tipo: número entero Modificable: sí Los cambios surten efecto: inmediatamente en todos los nodos del clúster. | El umbral de entradas de conjuntos ordenados más grandes para comprimir el conjunto de datos.  | 

Los parámetros cambiados en Redis OSS 7 son los siguientes. 


|  Name  |  Details |  Description (Descripción)  | 
| --- | --- | --- | 
| activerehashing |  Modificable: `no`. En Redis OSS 7, este parámetro está oculto y habilitado de forma predeterminada. Para desactivarlo, debe crear un [caso de soporte](https://console.aws.amazon.com/support/home).  | Modificable era sí.  | 

Los parámetros eliminados de Redis OSS 7 son los siguientes. 


|  Name  |  Details |  Description (Descripción)  | 
| --- | --- | --- | 
| hash-max-ziplist-entries |  Valores permitidos: `0+` Valor predeterminado: `512` Tipo: número entero Modificable: sí Los cambios surten efecto: inmediatamente en todos los nodos del clúster. | Use `listpack` en lugar de `ziplist` para representar una codificación de hash pequeña  | 
| hash-max-ziplist-value |  Valores permitidos: `0+` Valor predeterminado: `64` Tipo: número entero Modificable: sí Los cambios surten efecto: inmediatamente en todos los nodos del clúster. | Use `listpack` en lugar de `ziplist` para representar una codificación de hash pequeña  | 
| zset-max-ziplist-entries |  Valores permitidos: `0+` Valor predeterminado: `128` Tipo: número entero Modificable: sí Los cambios surten efecto: inmediatamente en todos los nodos del clúster. | Use `listpack` en lugar de `ziplist` para representar una codificación de hash pequeña.  | 
| zset-max-ziplist-value |  Valores permitidos: `0+` Valor predeterminado: `64` Tipo: número entero Modificable: sí Los cambios surten efecto: inmediatamente en todos los nodos del clúster. | Use `listpack` en lugar de `ziplist` para representar una codificación de hash pequeña.  | 
| list-max-ziplist-size |  Valores permitidos: Valor predeterminado: `-2` Tipo: número entero Modificable: sí Los cambios surten efecto: inmediatamente en todos los nodos del clúster. | El número de entradas permitido por nodo de lista interna.  | 

### Cambios de parámetros de Redis OSS 6.x
<a name="ParameterGroups.Redis.6-x"></a>

**Familia del grupo de parámetros:** redis6.x

Los grupos de parámetros predeterminados de Redis OSS 6.x son los siguientes:
+ `default.redis6.x`: utilice este grupo de parámetros, o uno derivado de él, para clústeres y grupos de replicación de Valkey o Redis OSS (modo de clúster deshabilitado).
+ `default.redis6.x.cluster.on`: utilice este grupo de parámetros, o uno derivado de él, para clústeres y grupos de replicación de Valkey o Redis OSS (modo de clúster habilitado).

**nota**  
 En la versión 6.2 del motor de Redis OSS, cuando se introdujo la familia de nodos r6gd para usarla con [Organización de datos en niveles en ElastiCache](data-tiering.md), solo se admitían las políticas de memoria máxima *noeviction*, *volatile-lru* y *allkeys-lru* con los tipos de nodo r6gd. 

Para obtener más información, consulte [ElastiCache versión 6.2 para Redis OSS (mejorada)](engine-versions.md#redis-version-6.2) y [ElastiCache versión 6.0 para Redis OSS (mejorada)](engine-versions.md#redis-version-6.0). 

Los parámetros que se han añadido en Redis OSS 6.x son los siguientes. 


|  Details |  Description (Descripción)  | 
| --- | --- | 
| acl-pubsub-default (added in 6.2) |  Valores permitidos: `resetchannels`, `allchannels` Valor predeterminado: `allchannels` Tipo: cadena Modificable: sí Los cambios surten efecto: los usuarios de Redis OSS existentes asociados al clúster seguirán teniendo los permisos existentes. Actualice los usuarios o reinicie el clúster para actualizar los usuarios de Redis OSS existentes. | Permisos de canal pubsub predeterminados para los usuarios de ACL implementados en este clúster.   | 
| cluster-allow-reads-when-down (added in 6.0) |  Valor predeterminado: no Tipo: String Modificable: sí Los cambios surten efecto: inmediatamente en todos los clústeres | Cuando se establece en Sí, un grupo de replicación de Redis OSS (modo de clúster habilitado) continúa procesando comandos de lectura incluso cuando un nodo no puede alcanzar un quórum de nodos principales.  Cuando se establece en el valor predeterminado no, el grupo de reproducción rechaza todos los comandos. Se recomienda establecer este valor en yes (sí) si utiliza un clúster con menos de tres grupos de nodos o si la aplicación puede manejar de forma segura las lecturas obsoletas.   | 
| tracking-table-max-keys (added in 6.0) |  Predeterminado: 1 000 000 Tipo: número Modificable: sí Los cambios surten efecto: inmediatamente en todos los clústeres | Para ayudar al almacenamiento en caché en el cliente, Redis OSS permite realizar un seguimiento de los clientes que han accedido a las claves.  Cuando se modifica la clave rastreada, se envían mensajes de invalidación a todos los clientes para notificarles que sus valores almacenados en caché ya no son válidos. Este valor permite especificar el límite superior de esta tabla. Una vez superado este valor de parámetro, los clientes se envían invalidación aleatoriamente. Este valor debe ajustarse para limitar la utilización de memoria sin dejar de realizar un seguimiento de las claves suficientes. Las claves también se invalidan en condiciones de poca memoria.   | 
| acllog-max-len (added in 6.0) |  Valor predeterminado: 128 Tipo: número Modificable: sí Los cambios surten efecto: inmediatamente en todos los clústeres | Este valor corresponde al número máximo de entradas en el registro ACL.   | 
| active-expire-effort (added in 6.0) |  Valor predeterminado: 1 Tipo: número Modificable: sí Los cambios surten efecto: inmediatamente en todos los clústeres | Redis OSS elimina las claves que han superado su periodo de vida por medio de dos mecanismos. En uno, se accede a una clave y se encuentra que ha vencido. En el otro, un trabajo periódico muestra claves y hace que se venzan aquellas que han excedido su período de vida. Este parámetro define la cantidad de esfuerzo que Redis OSS utiliza para hacer que caduquen elementos en el trabajo periódico.  El valor predeterminado de 1 intenta evitar tener más del 10 % de las claves vencidas que todavía se encuentran en la memoria. También intenta evitar consumir más del 25 % de la memoria total y agregar latencia al sistema. Puede aumentar este valor hasta 10 para aumentar la cantidad de esfuerzo invertido en las claves vencidas. La desventaja es mayor CPU y una latencia potencialmente mayor. Recomendamos un valor de 1 a menos que vea un uso elevado de memoria y pueda tolerar un aumento en la utilización de la CPU.   | 
| lazyfree-lazy-user-del (added in 6.0) |  Valor predeterminado: no Tipo: String Modificable: sí Los cambios surten efecto: inmediatamente en todos los clústeres | Cuando el valor se establece en yes (sí), el comando `DEL` actúa de la misma manera que `UNLINK`.   | 

Los parámetros que se han eliminado de Redis OSS 6.x son los siguientes. 


|  Name  |  Details |  Description (Descripción)  | 
| --- | --- | --- | 
| lua-replicate-commands |  Valores permitidos: sí/no Valor predeterminado: yes Tipo: booleano Modificable: sí Aplicación de los cambios: inmediatamente | Indica si siempre se debe habilitar o no la replicación de los efectos de Lua en los scripts de Lua.  | 

### Cambios de parámetros de Redis OSS 5.0.3
<a name="ParameterGroups.Redis.5-0-3"></a>

**Familia del grupo de parámetros:** redis5.0

Grupos de parámetros predeterminados de Redis OSS 5.0
+ `default.redis5.0`: utilice este grupo de parámetros, o uno derivado de él, para clústeres y grupos de replicación de Valkey o Redis OSS (modo de clúster deshabilitado).
+ `default.redis5.0.cluster.on`: utilice este grupo de parámetros, o uno derivado de él, para clústeres y grupos de replicación de Valkey o Redis OSS (modo de clúster habilitado).


**Parámetros que se han añadido en Redis OSS 5.0.3**  

|  Name  |  Details |  Description (Descripción)  | 
| --- | --- | --- | 
| rename-commands |  Predeterminado: none Tipo: String Modificable: sí Los cambios surten efecto: inmediatamente en todos los clústeres | Una lista separada por espacios de los comandos de Redis OSS a los que se ha cambiado el nombre. A continuación se muestra una lista restringida de comandos disponibles a lo que se puede cambiar el nombre:  `APPEND AUTH BITCOUNT BITFIELD BITOP BITPOS BLPOP BRPOP BRPOPLPUSH BZPOPMIN BZPOPMAX CLIENT CLUSTER COMMAND DBSIZE DECR DECRBY DEL DISCARD DUMP ECHO EVAL EVALSHA EXEC EXISTS EXPIRE EXPIREAT FLUSHALL FLUSHDB GEOADD GEOHASH GEOPOS GEODIST GEORADIUS GEORADIUSBYMEMBER GET GETBIT GETRANGE GETSET HDEL HEXISTS HGET HGETALL HINCRBY HINCRBYFLOAT HKEYS HLEN HMGET HMSET HSET HSETNX HSTRLEN HVALS INCR INCRBY INCRBYFLOAT INFO KEYS LASTSAVE LINDEX LINSERT LLEN LPOP LPUSH LPUSHX LRANGE LREM LSET LTRIM MEMORY MGET MONITOR MOVE MSET MSETNX MULTI OBJECT PERSIST PEXPIRE PEXPIREAT PFADD PFCOUNT PFMERGE PING PSETEX PSUBSCRIBE PUBSUB PTTL PUBLISH PUNSUBSCRIBE RANDOMKEY READONLY READWRITE RENAME RENAMENX RESTORE ROLE RPOP RPOPLPUSH RPUSH RPUSHX SADD SCARD SCRIPT SDIFF SDIFFSTORE SELECT SET SETBIT SETEX SETNX SETRANGE SINTER SINTERSTORE SISMEMBER SLOWLOG SMEMBERS SMOVE SORT SPOP SRANDMEMBER SREM STRLEN SUBSCRIBE SUNION SUNIONSTORE SWAPDB TIME TOUCH TTL TYPE UNSUBSCRIBE UNLINK UNWATCH WAIT WATCH ZADD ZCARD ZCOUNT ZINCRBY ZINTERSTORE ZLEXCOUNT ZPOPMAX ZPOPMIN ZRANGE ZRANGEBYLEX ZREVRANGEBYLEX ZRANGEBYSCORE ZRANK ZREM ZREMRANGEBYLEX ZREMRANGEBYRANK ZREMRANGEBYSCORE ZREVRANGE ZREVRANGEBYSCORE ZREVRANK ZSCORE ZUNIONSTORE SCAN SSCAN HSCAN ZSCAN XINFO XADD XTRIM XDEL XRANGE XREVRANGE XLEN XREAD XGROUP XREADGROUP XACK XCLAIM XPENDING GEORADIUS_RO GEORADIUSBYMEMBER_RO LOLWUT XSETID SUBSTR`  | 

Para obtener más información, consulte [ElastiCache versión 5.0.6 para Redis OSS (mejorada)](engine-versions.md#redis-version-5-0.6). 

### Cambios de parámetros de Redis OSS 5.0.0
<a name="ParameterGroups.Redis.5.0"></a>

**Familia del grupo de parámetros:** redis5.0

Grupos de parámetros predeterminados de Redis OSS 5.0
+ `default.redis5.0`: utilice este grupo de parámetros, o uno derivado de él, para clústeres y grupos de replicación de Valkey o Redis OSS (modo de clúster deshabilitado).
+ `default.redis5.0.cluster.on`: utilice este grupo de parámetros, o uno derivado de él, para clústeres y grupos de replicación de Valkey o Redis OSS (modo de clúster habilitado).


**Parámetros que se han añadido en Redis OSS 5.0**  

|  Name  |  Details |  Description (Descripción)  | 
| --- | --- | --- | 
| stream-node-max-bytes |  Valores permitidos: 0\$1 Predeterminado: 4096 Tipo: número entero Modificable: sí Aplicación de los cambios: inmediatamente | La estructura de datos de secuencia es un árbol de prefijos de nodos que contiene varios elementos. Utilice esta configuración para especificar el tamaño máximo de un único nodo de un árbol de prefijos in bytes. Si se establece en 0, el tamaño del nodo del árbol es ilimitado.  | 
| stream-node-max-entries |  Valores permitidos: 0\$1 Predeterminado: 100 Tipo: número entero Modificable: sí Aplicación de los cambios: inmediatamente | La estructura de datos de secuencia es un árbol de prefijos de nodos que contiene varios elementos. Utilice esta configuración para especificar el número máximo de elementos que puede contener un único nodo antes de cambiar a un nodo nuevo al agregar entradas nuevas de secuencia. Si se establece en 0, el número de elementos del nodo del árbol es ilimitado.  | 
| active-defrag-max-scan-fields |  Valores permitidos: de 1 a 1000000 Predeterminado: 1000 Tipo: número entero Modificable: sí Aplicación de los cambios: inmediatamente | Número máximo de set/hash/zset/list campos que se procesarán a partir del escaneo principal del diccionario  | 
| lua-replicate-commands |  Valores permitidos: sí/no Valor predeterminado: yes Tipo: booleano Modificable: sí Aplicación de los cambios: inmediatamente | Indica si siempre se debe habilitar o no la replicación de los efectos de Lua en los scripts de Lua.  | 
| replica-ignore-maxmemory |  Valor predeterminado: yes Tipo: booleano Modificable: no  | Determina si la réplica no tiene en cuenta el ajuste maxmemory al no expulsar elementos independientes del nodo primario  | 

Se ha cambiado el nombre de varios parámetros de Redis OSS en la versión 5.0 del motor en respuesta a los comentarios de la comunidad. Para obtener más información, consulte [What's New in Redis OSS 5?](https://aws.amazon.com/redis/Whats_New_Redis5/) En la tabla siguiente, se muestran los nombres nuevos y a qué comandos corresponden en las versiones anteriores.


**Parámetros cuyo nombre ha cambiado en Redis OSS 5.0**  

|  Name  |  Details |  Description (Descripción)  | 
| --- | --- | --- | 
| replica-lazy-flush |  Valor predeterminado: yes Tipo: booleano Modificable: no Nombre anterior: slave-lazy-flush  | Realiza un volcado de base de datos asíncrono durante la sincronización de réplicas. | 
| client-output-buffer-limit-replica-hard-limit | Valor predeterminado: para obtener información acerca de los valores, consulte [Parámetros específicos de tipos de nodos de Redis OSS](#ParameterGroups.Redis.NodeSpecific) Tipo: número entero Modificable: no Nombre anterior: client-output-buffer-limit - slave-hard-limit | Para réplicas de lectura de Redis OSS: si el búfer de salida de un cliente alcanza el número de bytes especificado, el cliente se desconectará. | 
| client-output-buffer-limit-replica-soft-limit | Valor predeterminado: para obtener información acerca de los valores, consulte [Parámetros específicos de tipos de nodos de Redis OSS](#ParameterGroups.Redis.NodeSpecific) Tipo: número entero Modificable: no Nombre anterior: client-output-buffer-limit - slave-soft-limit | Para réplicas de lectura de Redis OSS: si el búfer de salida de un cliente alcanza el número de bytes especificado, el cliente se desconectará solo si esta condición se mantiene durante client-output-buffer-limit-replica-soft-seconds. | 
| client-output-buffer-limit-replica-soft-seconds | Predeterminado: 60 Tipo: número entero Modificable: no Nombre anterior: client-output-buffer-limit - slave-soft-seconds  | Para réplicas de lectura de Redis OSS: si el búfer de salida de un cliente permanece en client-output-buffer-limit-replica-soft-limit bytes durante un tiempo superior a esta cantidad de segundos, el cliente se desconectará. | 
| replica-allow-chaining | Valor predeterminado: no Tipo: String Modificable: no Nombre anterior: slave-allow-chaining | Determina si una réplica de lectura de Redis OSS puede tener réplicas de lectura propias. | 
| min-replicas-to-write | Predeterminado: 0 Tipo: número entero Modificable: sí Nombre anterior: min-slaves-to-write Aplicación de los cambios: inmediatamente | Número mínimo de réplicas de lectura que deben estar disponibles para el nodo principal acepte operaciones de escritura de los clientes. Si el número de réplicas disponibles cae por debajo de este número, el nodo principal dejará de aceptar solicitudes de escritura. Si este parámetro min-replicas-max-lag es 0, el nodo principal siempre aceptará solicitudes de escritura, incluso si no hay réplicas disponibles. | 
| min-replicas-max-lag  | Valor predeterminado: 10 Tipo: número entero Modificable: sí Nombre anterior: min-slaves-max-lag Aplicación de los cambios: inmediatamente | Número de segundos en los que el nodo principal debe recibir una solicitud de ping desde una réplica de lectura. Si este periodo de tiempo transcurre y el nodo principal no recibe ningún ping, la réplica deja de considerarse como disponible. Si el número de réplicas disponibles es inferior min-replicas-to-write, el principal dejará de aceptar escrituras en ese momento. Si este parámetro min-replicas-to-write es 0, el nodo principal siempre aceptará solicitudes de escritura, incluso si no hay réplicas disponibles. | 
| close-on-replica-write  | Valor predeterminado: yes Tipo: booleano Modificable: sí Nombre anterior: close-on-slave-write Aplicación de los cambios: inmediatamente | Si está habilitado, los clientes que intenten escribir en una réplica de solo lectura se desconectarán. | 


**Parámetros que se han eliminado de Redis OSS 5.0**  

|  Name  |  Details |  Description (Descripción)  | 
| --- | --- | --- | 
| repl-timeout |  Predeterminado: 60 Modificable: no  | El parámetro no está disponible en esta versión. | 

### Cambios de parámetros de Redis OSS 4.0.10
<a name="ParameterGroups.Redis.4-0-10"></a>

**Familia del grupo de parámetros:** redis4.0

Grupos de parámetros predeterminados de Redis OSS 4.0.x
+ `default.redis4.0`: utilice este grupo de parámetros, o uno derivado de él, para clústeres y grupos de replicación de Valkey o Redis OSS (modo de clúster deshabilitado).
+ `default.redis4.0.cluster.on`: utilice este grupo de parámetros, o uno derivado de él, para clústeres y grupos de replicación de Valkey o Redis OSS (modo de clúster habilitado).


**Parámetros que se han cambiado en Redis OSS 4.0.10**  

|  Name  |  Details |  Description (Descripción)  | 
| --- | --- | --- | 
| maxmemory-policy |  Valores permitidos: `allkeys-lru`, `volatile-lru`, **allkeys-lfu**, **volatile-lfu**, `allkeys-random`, `volatile-random`, `volatile-ttl`, `noeviction` Valor predeterminado: volatile-lru Tipo: String Modificable: sí Aplicación de los cambios: inmediatamente | maxmemory-policy se agregó en la versión 2.6.13. En la versión 4.0.10, se agregaron dos nuevos valores permitidos: allkeys-lfu, que expulsará claves utilizando un criterio LFU aproximado, y volatile-lfu, que realizará la expulsión utilizando un criterio de LFU aproximado entre las claves que tienen un vencimiento establecido. En la versión 6.2, cuando se introdujo la familia de nodos r6gd para utilizarla con la organización de datos en niveles, solo las políticas max-memory noeviction, volatile-lru y allkeys-lru se admiten con tipos de nodos r6gd.  | 


**Parámetros que se han añadido en Redis OSS 4.0.10**  

|  Name  |  Details |  Description (Descripción)  | 
| --- |--- |--- |
| **Parámetros de eliminación asíncrona** | 
| --- |
| lazyfree-lazy-eviction |  Valores permitidos: sí/no Valor predeterminado: no Tipo: booleano Modificable: sí Aplicación de los cambios: inmediatamente | Realiza una eliminación asíncrona en las expulsiones. | 
| lazyfree-lazy-expire |  Valores permitidos: sí/no Valor predeterminado: no Tipo: booleano Modificable: sí Aplicación de los cambios: inmediatamente | Realiza una eliminación asíncrona en las claves vencidas. | 
| lazyfree-lazy-server-del |  Valores permitidos: sí/no Valor predeterminado: no Tipo: booleano Modificable: sí Aplicación de los cambios: inmediatamente | Realiza una eliminación asíncrona de los comandos que actualizan valores. | 
| slave-lazy-flush |  Valores permitidos: N/A Valor predeterminado: no Tipo: booleano Modificable: no Aplicación de los cambios: N/A | Realiza un volcado de base de datos asíncrono durante la sincronización de esclavos. | 
| **Parámetros de LFU** | 
| --- |
| lfu-log-factor |  Valores permitidos: cualquier número entero > 0 Valor predeterminado: 10 Tipo: número entero Modificable: sí Aplicación de los cambios: inmediatamente | Configure el factor de registro, que determina el número de aciertos de clave para saturar el contador de claves. | 
| lfu-decay-time |  Valores permitidos: cualquier número entero Valor predeterminado: 1 Tipo: número entero Modificable: sí Aplicación de los cambios: inmediatamente | El tiempo en minutos para disminuir el contador de claves. | 
| **Parámetros de desfragmentación activa** | 
| --- |
| activedefrag |  Valores permitidos: sí/no Valor predeterminado: no Tipo: booleano Modificable: sí Aplicación de los cambios: inmediatamente | Admite la desfragmentación activa. En las versiones 7.0 y posteriores de Valkey y Redis OSS,AWS puede realizar la desfragmentación automáticamente cuando sea necesario desde el punto de vista operativo, independientemente de esta configuración.  | 
| active-defrag-ignore-bytes |  Valores permitidos: 10485760-104857600 Predeterminado: 104857600 Tipo: número entero Modificable: sí Aplicación de los cambios: inmediatamente | Cantidad mínima de restos de fragmentación para comenzar la desfragmentación activa. | 
| active-defrag-threshold-lower |  Valores permitidos: 1-100 Valor predeterminado: 10 Tipo: número entero Modificable: sí Aplicación de los cambios: inmediatamente | Porcentaje mínimo de fragmentación para comenzar la desfragmentación activa. | 
| active-defrag-threshold-upper |  Valores permitidos: 1-100 Predeterminado: 100 Tipo: número entero Modificable: sí Aplicación de los cambios: inmediatamente | Porcentaje máximo de fragmentación en el que usará el máximo esfuerzo. | 
| active-defrag-cycle-min |  Valores permitidos: 1-75 Predeterminado: 25 Tipo: número entero Modificable: sí Aplicación de los cambios: inmediatamente | Esfuerzo mínimo para desfragmentar en porcentaje de CPU. | 
| active-defrag-cycle-max |  Valores permitidos: 1-75 Predeterminado: 75 Tipo: número entero Modificable: sí Aplicación de los cambios: inmediatamente | Esfuerzo máximo para desfragmentar en porcentaje de CPU. | 
| **Parámetros de búfer de salida de cliente** | 
| --- |
| client-query-buffer-limit |  Valores permitidos: 1048576-1073741824 Predeterminado: 1073741824 Tipo: número entero Modificable: sí Aplicación de los cambios: inmediatamente | Tamaño máximo de un búfer de consulta de cliente. | 
| proto-max-bulk-len |  Valores permitidos: 1048576-536870912 Predeterminado: 536870912 Tipo: número entero Modificable: sí Aplicación de los cambios: inmediatamente | Tamaño máximo de una sola solicitud de elemento. | 

### Cambios de parámetros de Redis OSS 3.2.10
<a name="ParameterGroups.Redis.3-2-10"></a>

**Familia del grupo de parámetros:** redis3.2

ElastiCache en el caso de Redis OSS 3.2.10, no se admiten parámetros adicionales.

### Cambios de parámetros de Redis OSS 3.2.6
<a name="ParameterGroups.Redis.3-2-6"></a>

**Familia del grupo de parámetros:** redis3.2

En Redis OSS 3.2.6 no se admiten parámetros adicionales.

### Cambios de parámetros de Redis OSS 3.2.4
<a name="ParameterGroups.Redis.3-2-4"></a>

**Familia del grupo de parámetros:** redis3.2

A partir de Redis OSS 3.2.4, existen dos grupos de parámetros predeterminados.
+ `default.redis3.2`: si ejecuta Redis OSS 3.2.4, especifique este grupo de parámetros, o uno derivado de este, si desea crear un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) y seguir utilizando las características adicionales de Redis OSS 3.2.4.
+ `default.redis3.2.cluster.on`: especifique este grupo de parámetros, o uno derivado de este, si desea crear un grupo de replicación de Valkey o Redis OSS (modo de clúster habilitado).

**Topics**
+ [Parámetros nuevos para Redis OSS 3.2.4](#ParameterGroups.Redis.3-2-4.New)
+ [Parámetros cambiados en Redis OSS 3.2.4 (mejorado)](#ParameterGroups.Redis.3-2-4.Changed)

#### Parámetros nuevos para Redis OSS 3.2.4
<a name="ParameterGroups.Redis.3-2-4.New"></a>

**Familia del grupo de parámetros:** redis3.2

En Redis OSS 3.2.4 se admiten los siguientes parámetros adicionales.


****  

|  Name  |  Details |  Description (Descripción)  | 
| --- | --- | --- | 
| list-max-ziplist-size | Valor predeterminado: -2 Tipo: número entero Modificable: no  | Las listas se codifican de una manera especial para ahorrar espacio. El número de entradas permitidas por nodo de lista interna se puede especificar como de tamaño máximo fijo o como un número máximo de elementos. Para establecer un tamaño máximo fijo, use un valor de -5 a -1 teniendo en cuenta lo siguiente: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/ParameterGroups.Engine.html) | 
| list-compress-depth | Predeterminado: 0 Tipo: número entero Modificable: sí Aplicación de los cambios: inmediatamente | Las listas también pueden comprimirse. La profundidad de compresión es el número de nodos de listas comprimidas de listas rápidas de ambos lados de la lista que se excluirán de la compresión. El principio y el final de la lista están siempre sin comprimir para agilizar las operaciones de inserción y extracción. Los valores son los siguientes: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/ParameterGroups.Engine.html) | 
| cluster-enabled |  Predeterminado: \$1 no/yes  Tipo: cadena Modificable: no | Indica si se trata de un grupo de replicación de Valkey o Redis OSS (modo de clúster habilitado) en el modo de clúster (sí) o de un grupo de replicación de Valkey o Redis OSS (modo de clúster habilitado) en el modo sin clúster (no). Los grupos de replicación de Valkey o Redis OSS (modo de clúster habilitado) en el modo de clúster pueden particionar sus datos en hasta 500 grupos de nodos. \$1 Redis OSS 3.2.*x* tiene dos grupos de parámetros predeterminados. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/ParameterGroups.Engine.html). | 
| cluster-require-full-coverage | Valor predeterminado: no Tipo: booleano Modificable: sí Aplicación de los cambios: inmediatamente |  Cuando se establece en `yes`, los nodos de Valkey o Redis OSS (modo de clúster habilitado) en el modo de clúster dejan de aceptar consultas si detectan que hay al menos una ranura de hash sin cubrir (sin ningún nodo disponible que la atienda). De esta forma, si el clúster está parcialmente inactivo, este deja de estar disponible. El clúster vuelve a estar disponible automáticamente en el momento en que todas las ranuras vuelven a estar cubiertas. Sin embargo, puede que desee que el subconjunto del clúster que funciona siga aceptando consultas de la parte del espacio de clave que sigue cubierta. Para ello, solo tiene que establecer la opción `cluster-require-full-coverage` en `no`. | 
| hll-sparse-max-bytes | Predeterminado: 3000 Tipo: número entero Modificable: sí Aplicación de los cambios: inmediatamente | HyperLogLog límite de bytes de representación dispersa. El límite incluye el encabezado de 16 bytes. Cuando el HyperLogLog uso de la representación dispersa cruza este límite, se convierte en la representación densa. No se recomienda usar un valor superior a 16 000, ya que en ese punto, la representación densa es más eficaz desde el punto de vista de la memoria. Se recomienda usar un valor próximo a 3000 con el fin de disponer de los beneficios de la codificación eficaz desde el punto de vista del espacio sin ralentizar PFADD, que está habilitado con la codificación dispersa. El valor se puede aumentar a \$110000 cuando la CPU no es un problema, pero sí el espacio, y el conjunto de datos está compuesto por muchos HyperLogLogs con una cardinalidad en el rango de 0 a 15000. | 
| reserved-memory-percent | Predeterminado: 25 Tipo: número entero Modificable: sí Aplicación de los cambios: inmediatamente |  Porcentaje de memoria reservada para un nodo y no destinado a los datos. De forma predeterminada, el volumen de datos que consume Redis OSS aumenta hasta consumir toda la memoria del nodo. Si esto ocurre, es posible que el desempeño del nodo se vea afectado debido a un exceso de paginación de la memoria. Al reservar memoria, puede guardar parte de la memoria disponible para fines no relacionados con Redis OSS. De este modo, ayudará a reducir el volumen de paginación. Este parámetro es específico y no forma parte de la distribución OSS estándar de Redis. ElastiCache Para obtener más información, consulte `reserved-memory` y [Administración de la memoria reservada para Valkey y Redis OSS](redis-memory-management.md). | 

#### Parámetros cambiados en Redis OSS 3.2.4 (mejorado)
<a name="ParameterGroups.Redis.3-2-4.Changed"></a>

**Familia del grupo de parámetros:** redis3.2

En Redis OSS 3.2.4 se han cambiado los siguientes parámetros.


****  

|  Name  |  Details |  Cambio  | 
| --- | --- | --- | 
| activerehashing | Modificable: sí, si el grupo de parámetros no está asociado con ningún clúster. De lo contrario, no lo es. | Modificable era No. | 
| databases | Modificable: sí, si el grupo de parámetros no está asociado con ningún clúster. De lo contrario, no lo es. | Modificable era No. | 
| appendonly | Valor predeterminado: desactivado Modificable: no | Si desea actualizar desde una versión anterior de Redis OSS, primero debe desactivar `appendonly`. | 
| appendfsync | Valor predeterminado: desactivado Modificable: no | Si desea actualizar desde una versión anterior de Redis OSS, primero debe desactivar `appendfsync`. | 
| repl-timeout | Predeterminado: 60 Modificable: no | Ahora, este parámetro no puede modificarse y tiene un valor predeterminado de 60. | 
| tcp-keepalive | Predeterminado: 300 | El valor predeterminado anterior era 0. | 
| list-max-ziplist-entries |  | El parámetro ya no está disponible. | 
| list-max-ziplist-value |  | El parámetro ya no está disponible. | 

### Parámetros que se han añadido a Redis OSS 2.8.24 (mejorado)
<a name="ParameterGroups.Redis.2-8-24"></a>

**Familia del grupo de parámetros:** redis2.8

En Redis OSS 2.8.24 no se admiten parámetros adicionales.

### Parámetros que se han añadido a Redis OSS 2.8.23 (mejorado)
<a name="ParameterGroups.Redis.2-8-23"></a>

**Familia del grupo de parámetros:** redis2.8

En Redis OSS 2.8.23 se admite el siguiente parámetro adicional.


****  

|  Name  |  Details |  Description (Descripción)  | 
| --- | --- | --- | 
| close-on-slave-write  | Valor predeterminado: yes Tipo: cadena (yes/no) Modificable: sí Aplicación de los cambios: inmediatamente | Si está habilitado, los clientes que intenten escribir en una réplica de solo lectura se desconectarán. | 

#### Cómo funciona close-on-slave-write
<a name="w2aac24c16c30c49c15c39b9"></a>

Amazon introdujo el `close-on-slave-write` parámetro ElastiCache para darte más control sobre la forma en que responde tu clúster cuando un nodo principal y un nodo de réplica de lectura intercambian funciones debido a la promoción de una réplica de lectura a principal.

![\[Imagen: close-on-replica-write todo funciona bien\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/images/ElastiCache-close-on-slave-write-01.png)


Si el clúster de réplica de lectura se promociona a nodo principal por cualquier motivo que no sea la conmutación por error de un grupo de reproducción con Multi-AZ habilitadas, el cliente seguirá intentando escribir en el punto de conexión A. Puesto que el punto de conexión A es ahora el punto de conexión de la réplica de lectura, se producirá un error en estas operaciones de escritura. Este es el comportamiento de Redis OSS antes de su ElastiCache introducción `close-on-replica-write` y el comportamiento si lo deshabilita`close-on-replica-write`.

![\[Imagen: close-on-slave-write, no se puede escribir correctamente\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/images/ElastiCache-close-on-slave-write-02.png)


Con el parámetro `close-on-replica-write` habilitado, siempre que un cliente intente escribir en una réplica de lectura, se cerrará la conexión del cliente al clúster. La lógica de su aplicación debe detectar la desconexión, comprobar la tabla de DNS y volver a conectarse al punto de conexión principal, que ahora debería ser el punto de conexión B.

![\[Imagen: close-on-slave-write, escribiendo en el nuevo clúster principal\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/images/ElastiCache-close-on-slave-write-03.png)


#### Cuándo puedes deshabilitar close-on-replica-write
<a name="w2aac24c16c30c49c15c39c11"></a>

Si al deshabilitar el parámetro `close-on-replica-write` se producen errores en las operaciones de escritura en el clúster, ¿por qué deshabilitar el parámetro `close-on-replica-write`?

Tal como se ha mencionado anteriormente, con el parámetro `close-on-replica-write` habilitado, siempre que un cliente intenta escribir en una réplica de lectura, se cierra la conexión del cliente al clúster. Establecer una nueva conexión al nodo implica tiempo. Por lo tanto, la desconexión y la reconexión como resultado de una solicitud de escritura en la réplica también afecta la latencia de las solicitudes de lectura que se sirven a través de la misma conexión. Este efecto continúa hasta que se establezca una nueva conexión. Si su aplicación realiza un uso intensivo de operaciones de lectura o es muy sensible a la latencia, es posible que desee mantener sus clientes conectados para que el rendimiento de lectura no se vea afectado. 

### Parámetros que se han añadido a Redis OSS 2.8.22 (mejorado)
<a name="ParameterGroups.Redis.2-8-22"></a>

**Familia del grupo de parámetros:** redis2.8

En Redis OSS 2.8.22 no se admiten parámetros adicionales.

**importante**  
A partir de Redis OSS 2.8.22, `repl-backlog-size` se aplica al clúster principal, así como a los clústeres de réplica.
A partir de Redis OSS 2.8.22, el parámetro `repl-timeout` no es compatible. Si se cambia, se ElastiCache sobrescribirá con el valor predeterminado (60 segundos), como hacemos con `appendonly` nosotros.

A continuación se describen parámetros que ya no son compatibles.
+ *appendonly*
+ *appendfsync*
+ *repl-timeout*

### Parámetros que se han añadido a Redis OSS 2.8.21
<a name="ParameterGroups.Redis.2-8-21"></a>

**Familia del grupo de parámetros:** redis2.8

En Redis OSS 2.8.21 no se admiten parámetros adicionales.

### Parámetros que se han añadido a Redis OSS 2.8.19
<a name="ParameterGroups.Redis.2-8-19"></a>

**Familia del grupo de parámetros:** redis2.8

En Redis OSS 2.8.19 no se admiten parámetros adicionales.

### Parámetros que se han añadido a Redis OSS 2.8.6
<a name="ParameterGroups.Redis.2-8-6"></a>

**Familia del grupo de parámetros:** redis2.8

En Redis OSS 2.8.6 se admiten los siguientes parámetros adicionales.


****  

|  Name  |  Details  |  Description (Descripción)  | 
| --- | --- | --- | 
| min-slaves-max-lag  | Valor predeterminado: 10 Tipo: número entero Modificable: sí Aplicación de los cambios: inmediatamente | Número de segundos en los que el nodo principal debe recibir una solicitud de ping desde una réplica de lectura. Si este periodo de tiempo transcurre y el nodo principal no recibe ningún ping, la réplica deja de considerarse como disponible. Si el número de réplicas disponibles es inferior min-slaves-to-write, la unidad principal dejará de aceptar escrituras en ese momento. Si este parámetro min-slaves-to-write es 0, el nodo principal siempre aceptará las solicitudes de escritura, incluso si no hay réplicas disponibles. | 
| min-slaves-to-write | Predeterminado: 0 Tipo: número entero Modificable: sí Aplicación de los cambios: inmediatamente | Número mínimo de réplicas de lectura que deben estar disponibles para el nodo principal acepte operaciones de escritura de los clientes. Si el número de réplicas disponibles cae por debajo de este número, el nodo principal dejará de aceptar solicitudes de escritura. Si este parámetro min-slaves-max-lag es 0, el nodo principal siempre aceptará las solicitudes de escritura, incluso si no hay réplicas disponibles. | 
| notify-keyspace-events | Valor predeterminado: (cadena vacía) Tipo: String Modificable: sí Aplicación de los cambios: inmediatamente | Tipos de eventos de espacio de claves de los que Redis OSS puede notificar a los clientes. Cada tipo de evento se representa con una única letra: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/ParameterGroups.Engine.html) Puede usar cualquier combinación de estos tipos de eventos. Por ejemplo, *AKE* significa que Redis OSS puede publicar notificaciones de todos los tipos de eventos. No use caracteres distintos de los mencionados anteriormente. Si intenta hacerlo, se mostrarán mensajes de error. De forma predeterminada, este parámetro está definido como una cadena vacía, lo que significa que la notificación de eventos de espacio de claves está deshabilitada. | 
| repl-backlog-size | Predeterminado: 1048576 Tipo: número entero Modificable: sí Aplicación de los cambios: inmediatamente | Tamaño, en bytes, del búfer de tareas pendientes del nodo principal. Las tareas pendientes se usan para registrar actualizaciones de los datos en el nodo principal. Cuando una réplica de lectura se conecta al nodo principal, intenta realizar una sincronización parcial (`psync`), donde se aplican los datos de las tareas pendientes para ponerse al día con el nodo principal. Si se produce un error en `psync`, es necesario realizar una sincronización completa. El valor mínimo para este parámetro es 16384.  A partir de Redis OSS 2.8.22, este parámetro se aplica al clúster principal, así como a las réplicas de lectura.  | 
| repl-backlog-ttl | Predeterminado: 3600 Tipo: número entero Modificable: sí Aplicación de los cambios: inmediatamente | Número de segundos que el nodo principal conservará el búfer de tareas pendientes. A partir del momento en que se desconecta el último nodo de réplica, los datos de las tareas pendientes permanecerán intactos hasta que caduque `repl-backlog-ttl`. Si la réplica no conecta al nodo principal antes de que transcurra este periodo, el nodo principal liberará el búfer de tareas pendientes. Cuando la réplica vuelva a conectarse, tendrá que realizar una sincronización completa con el nodo principal. Si este parámetro se establece en 0, el búfer de tareas pendientes no se liberará nunca. | 
| repl-timeout | Predeterminado: 60 Tipo: número entero Modificable: sí Aplicación de los cambios: inmediatamente | Representa el periodo de tiempo de espera, en segundos, para las operaciones siguientes: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/ParameterGroups.Engine.html) | 

### Parámetros de Redis OSS 2.6.13
<a name="ParameterGroups.Redis.2-6-13"></a>

**Familia del grupo de parámetros:** redis2.6

Redis OSS 2.6.13 fue la primera versión de Redis OSS compatible con. ElastiCache En la siguiente tabla se muestran los parámetros compatibles con Redis OSS 2.6.13. ElastiCache 


****  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/ParameterGroups.Engine.html)

**nota**  
Si no especifica ningún grupo de parámetros para su clúster de Redis OSS 2.6.13, se usará un grupo de parámetros predeterminado (`default.redis2.6`). No puede cambiar los valores de ninguno de los parámetros del grupo de parámetros predeterminado; sin embargo, siempre podrá crear un grupo de parámetros predeterminado y asignarlo a su clúster en cualquier momento.

### Parámetros específicos de tipos de nodos de Redis OSS
<a name="ParameterGroups.Redis.NodeSpecific"></a>

Aunque la mayoría de los parámetros tienen un único valor, algunos parámetros tienen distintos valores en función del tipo de nodo que se use. La tabla siguiente muestra los valores predeterminados de los parámetros `maxmemory`, `client-output-buffer-limit-slave-hard-limit` y `client-output-buffer-limit-slave-soft-limit` para cada tipo de nodo. El valor de `maxmemory` es el número máximo de bytes disponibles para el uso, los datos y otros usos en el nodo. Para obtener más información, consulte [Memoria disponible](https://aws.amazon.com/premiumsupport/knowledge-center/available-memory-elasticache-redis-node/).

**nota**  
El parámetro `maxmemory` no se puede modificar.


|  Tipo de nodo  | Maxmemory  | C - lient-output-buffer-limit slave-hard-limit | C lient-output-buffer-limit - slave-soft-limit | 
| --- | --- | --- | --- | 
| cache.t1.micro | 142606336 | 14260633 | 14260633 | 
| cache.t2.micro | 581959680 | 58195968 | 58195968 | 
| cache.t2.small | 1665138688 | 166513868 | 166513868 | 
| cache.t2.medium | 3461349376 | 346134937 | 346134937 | 
| cache.t3.micro | 536870912 | 53687091 | 53687091 | 
| cache.t3.small | 1471026299 | 147102629 | 147102629 | 
| cache.t3.medium | 3317862236 | 331786223 | 331786223 | 
| cache.t4g.micro | 536870912 | 53687091 | 53687091 | 
| cache.t4g.small | 1471026299 | 147102629 | 147102629 | 
| cache.t4g.medium | 3317862236 | 331786223 | 331786223 | 
| cache.m1.small | 943718400 | 94371840 | 94371840 | 
| cache.m1.medium | 3093299200 | 309329920 | 309329920 | 
| cache.m1.large | 7025459200 | 702545920 | 702545920 | 
| cache.m1.xlarge | 14889779200 | 1488977920 | 1488977920 | 
| cache.m2.xlarge | 17091788800 | 1709178880 | 1709178880 | 
| cache.m2.2xlarge | 35022438400 | 3502243840 | 3502243840 | 
| cache.m2.4xlarge | 70883737600 | 7088373760 | 7088373760 | 
| cache.m3.medium | 2988441600 | 309329920 | 309329920 | 
| cache.m3.large | 6501171200 | 650117120 | 650117120 | 
| cache.m3.xlarge | 14260633600 | 1426063360 | 1426063360 | 
| cache.m3.2xlarge | 29989273600 | 2998927360 | 2998927360 | 
| cache.m4.large | 6892593152 | 689259315 | 689259315 | 
| cache.m4.xlarge | 15328501760 | 1532850176 | 1532850176 | 
| cache.m4.2xlarge | 31889126359 | 3188912636 | 3188912636 | 
| cache.m4.4xlarge | 65257290629 | 6525729063 | 6525729063 | 
| cache.m4.10xlarge | 166047614239 | 16604761424 | 16604761424 | 
| cache.m5.large | 6854542746 | 685454275  | 685454275 | 
| cache.m5.xlarge | 13891921715 | 1389192172 | 1389192172 | 
| cache.m5.2xlarge | 27966669210 | 2796666921 | 2796666921 | 
| cache.m5.4xlarge | 56116178125 | 5611617812 | 5611617812 | 
| cache.m5.12xlarge | 168715971994 | 16871597199 | 16871597199 | 
| cache.m5.24xlarge | 337500562842 | 33750056284 | 33750056284 | 
| cache.m6g.large | 6854542746 | 685454275 | 685454275 | 
| cache.m6g.xlarge | 13891921715 | 1389192172 | 1389192172 | 
| cache.m6g.2xlarge | 27966669210 | 2796666921 | 2796666921 | 
| cache.m6g.4xlarge | 56116178125 | 5611617812 | 5611617812 | 
| cache.m6g.8xlarge | 111325552312 | 11132555231 | 11132555231 | 
| cache.m6g.12xlarge | 168715971994 | 16871597199 | 16871597199 | 
| cache.m6g.16xlarge | 225000375228 | 22500037523 | 22500037523 | 
| cache.c1.xlarge | 6501171200 | 650117120 | 650117120 | 
| cache.r3.large | 14470348800 | 1468006400 | 1468006400 | 
| cache.r3.xlarge | 30513561600 | 3040870400 | 3040870400 | 
| cache.r3.2xlarge | 62495129600 | 6081740800 | 6081740800 | 
| cache.r3.4xlarge | 126458265600 | 12268339200 | 12268339200 | 
| cache.r3.8xlarge | 254384537600 | 24536678400 | 24536678400 | 
| cache.r4.large | 13201781556 | 1320178155 | 1320178155 | 
| cache.r4.xlarge | 26898228839 | 2689822883 | 2689822883 | 
| cache.r4.2xlarge | 54197537997 | 5419753799 | 5419753799 | 
| cache.r4.4xlarge | 108858546586 | 10885854658 | 10885854658 | 
| cache.r4.8xlarge | 218255432090 | 21825543209 | 21825543209 | 
| cache.r4.16xlarge | 437021573120 | 43702157312 | 43702157312 | 
| cache.r5.large | 14037181030 | 1403718103 | 1403718103 | 
| cache.r5.xlarge | 28261849702 | 2826184970 | 2826184970 | 
| cache.r5.2xlarge | 56711183565 | 5671118356 | 5671118356 | 
| cache.r5.4xlarge | 113609865216 | 11360986522 | 11360986522 | 
| cache.r5.12xlarge | 341206346547 | 34120634655 | 34120634655 | 
| cache.r5.24xlarge | 682485973811 | 68248597381 | 68248597381 | 
| cache.r6g.large | 14037181030 | 1403718103 | 1403718103 | 
| cache.r6g.xlarge | 28261849702 | 2826184970 | 2826184970 | 
| cache.r6g.2xlarge | 56711183565 | 5671118356 | 5671118356 | 
| cache.r6g.4xlarge | 113609865216 | 11360986522 | 11360986522 | 
| cache.r6g.8xlarge | 225000375228 | 22500037523 | 22500037523 | 
| cache.r6g.12xlarge | 341206346547 | 34120634655 | 34120634655 | 
| cache.r6g.16xlarge | 450000750456 | 45000075046 | 45000075046 | 
| cache.r6gd.xlarge | 28261849702 | 2826184970 | 2826184970 | 
| cache.r6gd.2xlarge | 56711183565 | 5671118356 | 5671118356 | 
| cache.r6gd.4xlarge | 113609865216 | 11360986522 | 11360986522 | 
| cache.r6gd.8xlarge | 225000375228 | 22500037523 | 22500037523 | 
| cache.r6gd.12xlarge | 341206346547 | 34120634655 | 34120634655 | 
| cache.r6gd.16xlarge | 450000750456 | 45000075046 | 45000075046 | 
| cache.r7g.large | 14037181030 | 1403718103 | 1403718103 | 
| cache.r7g.xlarge | 28261849702 | 2826184970 | 2826184970 | 
| cache.r7g.2xlarge | 56711183565 | 5671118356 | 5671118356 | 
| cache.r7g.4xlarge | 113609865216 | 11360986522 | 11360986522 | 
| cache.r7g.8xlarge | 225000375228 | 22500037523 | 22500037523 | 
| cache.r7g.12xlarge | 341206346547 | 34120634655 | 34120634655 | 
| cache.r7g.16xlarge | 450000750456 | 45000075046 | 45000075046 | 
| cache.m7g.large | 6854542746 | 685454275 | 685454275 | 
| cache.m7g.xlarge | 13891921715 | 1389192172 | 1389192172 | 
| cache.m7g.2xlarge | 27966669210 | 2796666921 | 2796666921 | 
| cache.m7g.4xlarge | 56116178125 | 5611617812 | 5611617812 | 
| cache.m7g.8xlarge | 111325552312 | 11132555231 | 11132555231 | 
| cache.m7g.12xlarge | 168715971994 | 16871597199 | 16871597199 | 
| cache.m7g.16xlarge | 225000375228 | 22500037523 | 22500037523 | 
| cache.c7gn.large | 3317862236 | 1403718103 | 1403718103 | 
| cache.c7gn.xlarge | 6854542746 | 2826184970 | 2826184970 | 
| cache.c7gn.2xlarge | 13891921715 | 5671118356 | 5671118356 | 
| cache.c7gn.4xlarge | 27966669210 | 11360986522 | 11360986522 | 
| cache.c7gn.8xlarge | 56116178125 | 22500037523 | 22500037523 | 
| cache.c7gn.12xlarge | 84357985997 | 34120634655 | 34120634655 | 
| cache.c7gn.16xlarge | 113609865216 | 45000075046 | 45000075046 | 

**nota**  
Todos los tipos de instancias de la generación actual se crean en Amazon Virtual Private Cloud (VPC) de forma predeterminada.  
Las instancias T1 no admiten Multi-AZ.  
Las instancias T1 y T2 no admiten AOF de Redis OSS.  
Las variables de configuración de Redis OSS `appendonly` y `appendfsync` no se admiten en la versión 2.8.22 de Redis OSS y las versiones posteriores.

## Parámetros específicos de Memcached
<a name="ParameterGroups.Memcached"></a>

**Memcached**

Si no se especifica ningún grupo de parámetros para el clúster de Memcached, se usará un grupo de parámetros predeterminado apropiado para la versión del motor. No puede cambiar los valores de los parámetros de un grupo de parámetros predeterminado. Sin embargo, puede crear un grupo de parámetros personalizados y asignarlo a su clúster en cualquier momento. Para obtener más información, consulte [Creación de un grupo de parámetros de ElastiCache](ParameterGroups.Creating.md).

**Topics**
+ [Cambios en Memcached 1.6.17](#ParameterGroups.Memcached.1.6.17)
+ [Parámetros agregados a Memcached 1.6.6](#ParameterGroups.Memcached.1-6-6)
+ [Cambios en los parámetros de Memcached 1.5.10](#ParameterGroups.Memcached.1-5-10)
+ [Parámetros agregados a Memcached 1.4.34](#ParameterGroups.Memcached.1-4-34)
+ [Parámetros agregados a Memcached 1.4.33](#ParameterGroups.Memcached.1-4-33)
+ [Parámetros agregados a Memcached 1.4.24](#ParameterGroups.Memcached.1-4-24)
+ [Parámetros agregados a Memcached 1.4.14](#ParameterGroups.Memcached.1-4-14)
+ [Parámetros compatibles con Memcached 1.4.5](#ParameterGroups.Memcached.1-4-5)
+ [Capacidad adicional para conexiones de Memcached](#ParameterGroups.Memcached.Overhead)
+ [Parámetros específicos de tipo de nodo de Memcached](#ParameterGroups.Memcached.NodeSpecific)

### Cambios en Memcached 1.6.17
<a name="ParameterGroups.Memcached.1.6.17"></a>

A partir de la versión 1.6.17 de Memcached, ya no se admiten estos comandos administrativos: `lru_crawler`, `lru` y `slabs`. Con estos cambios, no podrá hacerlo enable/disable `lru_crawler` en tiempo de ejecución mediante comandos. enable/disable `lru_crawler`Modifique su grupo de parámetros personalizado.

### Parámetros agregados a Memcached 1.6.6
<a name="ParameterGroups.Memcached.1-6-6"></a>

Para Memcached 1.6.6, no se admiten parámetros adicionales.

**Familia del grupo de parámetros:** memcached1.6

### Cambios en los parámetros de Memcached 1.5.10
<a name="ParameterGroups.Memcached.1-5-10"></a>

Para Memcached 1.5.10, se admiten los siguientes parámetros adicionales.

**Familia del grupo de parámetros:** memcached1.5


| Name | Details | Description (Descripción) | 
| --- | --- | --- | 
| no\$1modern  | Valor predeterminado: 1 Tipo: booleano Modificable: sí Valores permitidos: 0, 1 Aplicación de los cambios: en el momento del lanzamiento  |  Un alias para deshabilitar los comandos `slab_reassign`, `lru_maintainer_thread`, `lru_segmented` y `maxconns_fast`. Al usar Memcached 1.5 y versiones posteriores, `no_modern` también establece hash\$1algorithm en `jenkins`. Además, cuando se utiliza Memcached 1.5.10, `inline_ascii_reponse` se controla mediante el parámetro `parallelly`. Esto significa que si `no_modern` está deshabilitado, `inline_ascii_reponse` también está deshabilitado. A partir del motor 1.5.16 de Memcached, el parámetro `inline_ascii_response` ya no se aplica, por lo que habilitar o deshabilitar `no_modern` no afecta a `inline_ascii_reponse`. Si `no_modern` está deshabilitado, se HABILITARÁ `slab_reassign`, `lru_maintainer_thread`, `lru_segmented` y `maxconns_fast`. Dado que los parámetros `slab_automove` y `hash_algorithm` no son parámetros de SWITCH, sus ajustes se basan en las configuraciones del grupo de parámetros. Si desea deshabilitar `no_modern` y volver a `modern`, debe configurar un grupo de parámetros personalizado para deshabilitar este parámetro y, a continuación, reiniciarlo para que los cambios se apliquen.   El valor de configuración predeterminado para este parámetro se ha cambiado de 0 a 1 a partir del 20 de agosto de 2021. Los nuevos ElastiCache usuarios de cada región recogerán automáticamente el valor predeterminado actualizado a partir del 20 de agosto de 2021. ElastiCache Los usuarios existentes en las regiones antes del 20 de agosto de 2021 deberán modificar manualmente sus grupos de parámetros personalizados para poder adaptarse a este nuevo cambio.   | 
| inline\$1ascii\$1resp  | Predeterminado: 0 Tipo: booleano Modificable: sí Valores permitidos: 0, 1 Aplicación de los cambios: en el momento del lanzamiento  |  Almacena números de la respuesta de `VALUE`, dentro de un elemento, utilizando hasta 24 bytes. Supone una ligera ralentización para las operaciones `get` y `faster` en ASCII.  | 

Para Memcached 1.5.10, se han eliminado los parámetros siguientes.


| Name | Details | Description (Descripción) | 
| --- | --- | --- | 
| expirezero\$1does\$1not\$1evict  | Predeterminado: 0 Tipo: booleano Modificable: sí Valores permitidos: 0, 1 Aplicación de los cambios: en el momento del lanzamiento  |  Ya no se admite en esta versión. | 
| modern  | Valor predeterminado: 1 Tipo: booleano Modificable: sí (requiere volver a lanzar si se establece en `no_modern`) Valores permitidos: 0, 1 Aplicación de los cambios: en el momento del lanzamiento  |  Ya no se admite en esta versión. A partir de esta versión, `no-modern` está habilitado de forma predeterminada con cada lanzamiento o relanzamiento.  | 

### Parámetros agregados a Memcached 1.4.34
<a name="ParameterGroups.Memcached.1-4-34"></a>

Para Memcached 1.4.34, no se admite ningún parámetro adicional.

**Familia del grupo de parámetros:** memcached1.4

### Parámetros agregados a Memcached 1.4.33
<a name="ParameterGroups.Memcached.1-4-33"></a>

Para Memcached 1.4.33, se admiten los siguientes parámetros adicionales.

**Familia del grupo de parámetros:** memcached1.4


| Name | Details | Description (Descripción) | 
| --- | --- | --- | 
|  modern  | Valor predeterminado: habilitado Tipo: booleano Modificable: sí Aplicación de los cambios: en el momento del lanzamiento  |  Alias para varias características. Habilitar `modern` equivale a habilitar los comandos siguientes y usar un algoritmo de hash murmur3: `slab_reassign`, `slab_automove`, `lru_crawler`, `lru_maintainer`, `maxconns_fast` y `hash_algorithm=murmur3`. | 
|  watch  | Valor predeterminado: habilitado Tipo: booleano Modificable: sí Aplicación de los cambios: inmediatamente Los logs pueden eliminarse si el usuario alcanza los límites `watcher_logbuf_size` y `worker_logbuf_size`.  |  Recuperaciones de logs, expulsiones o mutaciones. Cuando, por ejemplo, el usuario activa `watch`, podrá ver los logs cuando tengan lugar las operaciones `get`, `set`, `delete` o `update`. | 
|  idle\$1timeout  | Valor predeterminado: 0 (deshabilitado) Tipo: número entero Modificable: sí Aplicación de los cambios: en el momento del lanzamiento  |  Número mínimo de segundos que se permitirá que un cliente permanezca inactivo antes de solicitar el cierre. Rango de valores: de 0 a 86400. | 
|  track\$1sizes  | Valor predeterminado: deshabilitado Tipo: booleano Modificable: sí Aplicación de los cambios: en el momento del lanzamiento  |  Muestra el tamaño que cada grupo de slab ha consumido. Habilitar `track_sizes` le permite ejecutar `stats sizes` sin necesidad de ejecutar `stats sizes_enable`. | 
|  watcher\$1logbuf\$1size  | Valor predeterminado: 256 (KB) Tipo: número entero Modificable: sí Aplicación de los cambios: en el momento del lanzamiento  |  El comando `watch` activa el registro de transmisión para Memcached. Sin embargo, `watch` puede eliminar logs si la tasa de expulsiones, mutaciones o recuperaciones es lo suficientemente alta como para llenar el búfer de registro. En estas situaciones, los usuarios pueden aumentar el tamaño del búfer para reducir la posibilidad de que se produzcan pérdidas de logs. | 
|  worker\$1logbuf\$1size  | Valor predeterminado: 64 (KB) Tipo: número entero Modificable: sí Aplicación de los cambios: en el momento del lanzamiento  |  El comando `watch` activa el registro de transmisión para Memcached. Sin embargo, `watch` puede eliminar logs si la tasa de expulsiones, mutaciones o recuperaciones es lo suficientemente alta como para llenar el búfer de registro. En estas situaciones, los usuarios pueden aumentar el tamaño del búfer para reducir la posibilidad de que se produzcan pérdidas de logs. | 
|  slab\$1chunk\$1max  | Valor predeterminado: 524288 (bytes)  Tipo: número entero Modificable: sí Aplicación de los cambios: en el momento del lanzamiento  |  Especifica el tamaño de slab máximo. Establecer un tamaño de slab más reducido permite usar la memoria de un modo más eficaz. Los elementos cuyo tamaño supere `slab_chunk_max`, se dividen en múltiples slabs. | 
|  lru\$1crawler metadump [all\$11\$12\$13] | Valor predeterminado: deshabilitado  Tipo: booleano Modificable: sí Aplicación de los cambios: inmediatamente  |  Si lru\$1crawler está habilitado, este comando volcará todas las claves. `all\|1\|2\|3`: todos los slabs; o bien especifique un número de slab específico | 

### Parámetros agregados a Memcached 1.4.24
<a name="ParameterGroups.Memcached.1-4-24"></a>

Para Memcached 1.4.24, se admiten los siguientes parámetros adicionales.

**Familia del grupo de parámetros:** memcached1.4


| Name | Details | Description (Descripción) | 
| --- | --- | --- | 
|  disable\$1flush\$1all  | Valor predeterminado: 0 (deshabilitado) Tipo: booleano Modificable: sí Aplicación de los cambios: en el momento del lanzamiento  |  Agregue el parámetro (`-F`) para deshabilitar flush\$1all. Esto resulta útil si no quiere que se pueda ejecutar un vaciado completo en instancias de producción. Valores: 0, 1 (el usuario puede usar `flush_all` cuando el valor es 0). | 
|  hash\$1algorithm  | Valor predeterminado: jenkins Tipo: String Modificable: sí Aplicación de los cambios: en el momento del lanzamiento  | Algoritmo de hash que se va a usar. Valores permitidos: murmur3 y jenkins. | 
|  lru\$1crawler  | Valor predeterminado: 0 (deshabilitado) Tipo: booleano Modificable: sí Aplicación de los cambios: tras reiniciar  Puede habilitar temporalmente `lru_crawler` durante el tiempo de ejecución desde la línea de comandos. Para obtener más información, consulte la columna Descripción.   |  Limpia clases de slab de elementos que han caducado. Este es un proceso de bajo impacto que se ejecuta en segundo plano. En la actualidad, es necesario iniciar un rastreo mediante un comando manual. Para habilitar el proceso temporalmente, ejecute `lru_crawler enable` en la línea de comandos. `lru_crawler 1,3,5` rastrea clases de slab 1, 3 y 5 buscando elementos caducados para agregarlos a la lista libre. Valores: 0, 1  Habilitar `lru_crawler` en la línea de comandos, se habilita el rastreador hasta que se deshabilita en la línea de comandos o hasta el siguiente reinicio. Para habilitar el proceso de forma permanente, debe modificar el valor del parámetro. Para obtener más información, consulte [Modificación de un grupo de parámetros de ElastiCache](ParameterGroups.Modifying.md).   | 
|  lru\$1maintainer  | Valor predeterminado: 0 (deshabilitado) Tipo: booleano Modificable: sí Aplicación de los cambios: en el momento del lanzamiento  |  Un hilo de fondo que mezcla los elementos entre sí a LRUs medida que se van alcanzando las capacidades. Valores: 0, 1  | 
|  expirezero\$1does\$1not\$1evict  | Valor predeterminado: 0 (deshabilitado) Tipo: booleano Modificable: sí Aplicación de los cambios: en el momento del lanzamiento  |  Cuando se usa con `lru_maintainer`, los elementos cuyo periodo de vencimiento es 0 no se pueden expulsar.   Esto puede agotar la memoria disponible para otros elementos que se pueden expulsar.   Se puede establecer para ignorar `lru_maintainer`. | 

### Parámetros agregados a Memcached 1.4.14
<a name="ParameterGroups.Memcached.1-4-14"></a>

Para Memcached 1.4.14, se admiten los siguientes parámetros adicionales.

**Familia del grupo de parámetros:** memcached1.4


**Parámetros agregados a Memcached 1.4.14**  

|  Name  |  Details  |  Description (Descripción)  | 
| --- | --- | --- | 
| config\$1max | Predeterminado: 16 Tipo: número entero Modificable: no | El número máximo de entradas de ElastiCache configuración. | 
| config\$1size\$1max | Predeterminado: 65536 Tipo: número entero Modificable: no | Tamaño máximo de las entradas de configuración en bytes. | 
| hashpower\$1init | Predeterminado: 16 Tipo: número entero Modificable: no | El tamaño inicial de la tabla ElastiCache hash, expresado como una potencia de dos. El valor predeterminado es 16 (2^16) o 65536 claves. | 
| maxconns\$1fast | Valor predeterminado: 0 (falso) Tipo: Booleano Modificable: sí Aplicación de los cambios: tras reiniciar | Cambia el modo en que se gestionan las solicitudes de nuevas conexiones cuando se alcanza el límite máximo de la conexión. Si este parámetro se establece en 0 (cero), las conexiones nuevas se agregan a la cola de tareas pendientes a la espera de que se cierren otras conexiones. Si el parámetro se establece en 1, ElastiCache envía un error al cliente y cierra inmediatamente la conexión. | 
| slab\$1automove | Predeterminado: 0 Tipo: número entero Modificable: sí Aplicación de los cambios: tras reiniciar | Ajusta el algoritmo automove de los slabs: si este parámetro se establece en 0 (cero), el algoritmo automove estará deshabilitado. Si se establece en 1, ElastiCache adoptará un enfoque lento y conservador para mover automáticamente los slabs. Si se establece en 2, mueve las losas de ElastiCache forma agresiva siempre que se produzca un desalojo. (Este modo no se recomienda, excepto con fines de prueba.) | 
| slab\$1reassign | Valor predeterminado: 0 (falso) Tipo: Booleano Modificable: sí Aplicación de los cambios: tras reiniciar | Habilita o deshabilita la reasignación de slab. Si este parámetro se establece en 1, podrá usar el comando "slabs reassign" para reasignar manualmente la memoria. | 

### Parámetros compatibles con Memcached 1.4.5
<a name="ParameterGroups.Memcached.1-4-5"></a>

**Familia del grupo de parámetros:** memcached1.4

Para Memcached 1.4.5, se admiten los siguientes parámetros.


**Parámetros agregados a Memcached 1.4.5**  

|  Name  |  Details  |  Description (Descripción)  | 
| --- | --- | --- | 
| backlog\$1queue\$1limit | Predeterminado: 1024 Tipo: número entero Modificable: no | Límite de cola de tareas pendientes. | 
| binding\$1protocol | Valor predeterminado: automático Tipo: String Modificable: sí Aplicación de los cambios: tras reiniciar | Protocolo de enlace. Valores permitidos: `ascii` y `auto`. Para obtener información acerca de la modificación del valor de `binding_protocol`, consulte [Modificación de un grupo de parámetros de ElastiCache](ParameterGroups.Modifying.md). | 
| cas\$1disabled | Valor predeterminado: 0 (falso) Tipo: Booleano Modificable: sí Aplicación de los cambios: tras reiniciar | Si se establece en 1 (true), compruebe y defina (CAS) las operaciones que se deshabilitarán. Los elementos almacenados ocuparán 8 bytes menos que con CAS habilitado. | 
| chunk\$1size | Predeterminado: 48 Tipo: número entero Modificable: sí Aplicación de los cambios: tras reiniciar | Cantidad mínima, en bytes, de espacio para asignar a las marcas, los valores y las claves de elemento más pequeños. | 
| chunk\$1size\$1growth\$1factor | Predeterminado: 1.25 Tipo: flotante Modificable: sí Aplicación de los cambios: tras reiniciar | Factor de crecimiento que controla el tamaño de cada fragmento de Memcached sucesivo; cada fragmento tendrá un tamaño chunk\$1size\$1growth\$1factor veces mayor que el anterior. | 
| error\$1on\$1memory\$1exhausted | Valor predeterminado: 0 (falso) Tipo: Booleano Modificable: sí Aplicación de los cambios: tras reiniciar | Si se establece en 1 (true), cuando no haya más memoria para almacenar elementos, Memcached devolverá un mensaje de error en lugar de expulsar elementos. | 
| large\$1memory\$1pages | Valor predeterminado: 0 (falso) Tipo: Booleano Modificable: no | Si es 1 (true), ElastiCache intentará utilizar páginas de memoria de gran tamaño. | 
| lock\$1down\$1paged\$1memory | Valor predeterminado: 0 (falso) Tipo: Booleano Modificable: no | Si es 1 (verdadero), ElastiCache bloqueará toda la memoria paginada. | 
| max\$1item\$1size | Predeterminado: 1048576 Tipo: número entero Modificable: sí Aplicación de los cambios: tras reiniciar | Tamaño, en bytes, de los elementos de mayor tamaño que se pueden almacenar en el clúster. | 
| max\$1simultaneous\$1connections | Predeterminado: 65000 Tipo: número entero Modificable: no | Número máximo de conexiones simultáneas. | 
| maximize\$1core\$1file\$1limit | Valor predeterminado: 0 (falso) Tipo: Booleano Modificable:  Aplicación de los cambios: tras reiniciar | Si es 1 (verdadero), ElastiCache maximizará el límite de archivos principales. | 
| memcached\$1connections\$1overhead | Predeterminado: 100 Tipo: número entero Modificable: sí Aplicación de los cambios: tras reiniciar | Cantidad de memoria reservada para las conexiones de Memcached y capacidad adicional para otras operaciones. Para obtener información acerca de este parámetro, consulte [Capacidad adicional para conexiones de Memcached](#ParameterGroups.Memcached.Overhead). | 
| requests\$1per\$1event | Predeterminado: 20 Tipo: número entero Modificable: no | Número máximo de solicitudes por evento para una conexión determinada. Este límite es necesario para evitar el agotamiento de los recursos. | 

### Capacidad adicional para conexiones de Memcached
<a name="ParameterGroups.Memcached.Overhead"></a>

En cada nodo, la memoria disponible para almacenar elementos equivale a la cantidad total de memoria disponible de dicho nodo (que se almacena en el parámetro `max_cache_memory`) menos la memoria que se usa para las conexiones y la capacidad adicional para otras operaciones (que se almacena en el parámetro `memcached_connections_overhead`). Por ejemplo, un nodo del tipo `cache.m1.small` tiene una `max_cache_memory` de 1300 MB. Con el valor `memcached_connections_overhead` predeterminado de 100 MB, el proceso de Memcached tendrá 1200 MB de espacio disponible para almacenar elementos.

Los valores predeterminados para el parámetro `memcached_connections_overhead` son válidos para la mayoría de los casos de uso; sin embargo, la asignación necesaria para la capacidad adicional de conexión puede variar dependiendo de varios factores, incluida la tasa de solicitudes, el tamaño de carga y el número de conexiones.

Puede cambiar el valor de `memcached_connections_overhead` según las necesidades de su aplicación. Por ejemplo, al aumentar el valor del parámetro `memcached_connections_overhead`, se reducirá la cantidad de memoria disponible para almacenar elementos y dispondrá de un búfer de mayor tamaño para la sobrecarga de las conexiones. La reducción del valor del parámetro `memcached_connections_overhead` le dará más memoria para almacenar elementos, pero puede aumentar el riesgo de agotar el espacio de intercambio y de que se reduzca el rendimiento. Si se agota el espacio de intercambio y observa una pérdida de rendimiento, pruebe incrementar el valor del parámetro `memcached_connections_overhead`.

**importante**  
Para el tipo nodo `cache.t1.micro`, el valor de `memcached_connections_overhead` se determina de la manera siguiente:  
Si su clúster utiliza el grupo de parámetros predeterminado, ElastiCache establecerá el valor en 13 MB. `memcached_connections_overhead`
Si su clúster usa un grupo de parámetros de su creación, podrá establecer el valor de `memcached_connections_overhead` según su preferencia.

### Parámetros específicos de tipo de nodo de Memcached
<a name="ParameterGroups.Memcached.NodeSpecific"></a>

Aunque la mayoría de los parámetros tienen un único valor, algunos parámetros tienen distintos valores en función del tipo de nodo que se use. La tabla siguiente muestra los valores predeterminados de los parámetros `max_cache_memory` y `num_threads` para cada tipo de nodo. Los valores de estos parámetros no se pueden modificar.


|  Tipo de nodo  | max\$1cache\$1memory (en megabytes)  | num\$1threads  | 
| --- | --- | --- | 
| cache.t1.micro | 213  | 1 | 
| cache.t2.micro | 555 | 1 | 
| cache.t2.small | 1588 | 1 | 
| cache.t2.medium | 3301 | 2 | 
| cache.t3.micro | 512 | 2 | 
| cache.t3.small | 1402 | 2 | 
| cache.t3.medium | 3364 | 2 | 
| cache.t4g.micro | 512 | 2 | 
| cache.t4g.small | 1402 | 2 | 
| cache.t4g.medium | 3164 | 2 | 
| cache.m1.small | 1301 | 1 | 
| cache.m1.medium | 3350 | 1 | 
| cache.m1.large | 7100 | 2 | 
| cache.m1.xlarge | 14600  | 4 | 
| cache.m2.xlarge | 33800 | 2 | 
| cache.m2.2xlarge | 30412 | 4 | 
| cache.m2.4xlarge | 68000  | 16 | 
| cache.m3.medium | 2850 | 1 | 
| cache.m3.large | 6200 | 2 | 
| cache.m3.xlarge | 13600 | 4 | 
| cache.m3.2xlarge | 28600 | 8 | 
| cache.m4.large | 6573 | 2 | 
| cache.m4.xlarge | 11496  | 4 | 
| cache.m4.2xlarge | 30412 | 8 | 
| cache.m4.4xlarge | 62234 | 16 | 
| cache.m4.10xlarge | 158355 | 40 | 
| cache.m5.large | 6537 | 2 | 
| cache.m5.xlarge | 13248 | 4 | 
| cache.m5.2xlarge | 26671 | 8 | 
| cache.m5.4xlarge | 53516 | 16 | 
| cache.m5.12xlarge | 160900 | 48 | 
| cache.m5.24xlarge | 321865  | 96 | 
| cache.m6g.large | 6537 | 2 | 
| cache.m6g.xlarge | 13248 | 4 | 
| cache.m6g.2xlarge | 26671 | 8 | 
| cache.m6g.4xlarge | 53516 | 16 | 
| cache.m6g.8xlarge | 107000 | 32 | 
| cache.m6g.12xlarge | 160900 | 48 | 
| cache.m6g.16xlarge | 214577 | 64 | 
| cache.c1.xlarge | 6600 | 8 | 
| cache.r3.large | 13800 | 2 | 
| cache.r3.xlarge | 29100 | 4 | 
| cache.r3.2xlarge | 59600 | 8 | 
| cache.r3.4xlarge | 120600 | 16 | 
| cache.r3.8xlarge | 120600 | 32 | 
| cache.r4.large | 12590 | 2 | 
| cache.r4.xlarge | 25652 | 4 | 
| cache.r4.2xlarge | 51686 | 8 | 
| cache.r4.4xlarge | 103815 | 16 | 
| cache.r4.8xlarge | 208144 | 32 | 
| cache.r4.16xlarge | 416776 | 64 | 
| cache.r5.large | 13387 | 2 | 
| cache.r5.xlarge | 26953 | 4 | 
| cache.r5.2xlarge | 54084 | 8 | 
| cache.r5.4xlarge | 108347 | 16 | 
| cache.r5.12xlarge | 325400 | 48 | 
| cache.r5.24xlarge | 650869 | 96 | 
| cache.r6g.large | 13387 | 2 | 
| cache.r6g.xlarge | 26953 | 4 | 
| cache.r6g.2xlarge | 54084 | 8 | 
| cache.r6g.4xlarge | 108347 | 16 | 
| cache.r6g.8xlarge | 214577 | 32 | 
| cache.r6g.12xlarge | 325400 | 48 | 
| cache.r6g.16xlarge | 429154 | 64 | 
| cache.c7gn.large | 3164 | 2 | 
| cache.c7gn.xlarge | 6537 | 4 | 
| cache.c7gn.2xlarge | 13248 | 8 | 
| cache.c7gn.4xlarge | 26671 | 16 | 
| cache.c7gn.8xlarge | 53516 | 32 | 
| cache.c7gn.12xlarge | 325400 | 48 | 
| cache.c7gn.16xlarge | 108347 | 64 | 

**nota**  
Todas las instancias T2 se crean en una instancia de Amazon Virtual Private Cloud (Amazon VPC).

# Conexión automática de una instancia de EC2 y una caché de ElastiCache
<a name="compute-connection"></a>

Puede utilizar la consola de ElastiCache para simplificar la configuración de una conexión entre una instancia de Amazon Elastic Compute Cloud (Amazon EC2) y una caché de ElastiCache. A menudo, la caché se encuentra en una subred privada y la instancia de EC2 en una subred pública dentro de una VPC. Puede usar un cliente SQL en su instancia de EC2 para conectarse a la caché de ElastiCache. La instancia de EC2 también puede ejecutar servidores web o aplicaciones que accedan a la caché privada de ElastiCache. 

![\[Conectar de forma automática una caché de ElastiCache con una instancia de EC2.\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/images/ec2-elasticache-connect-network_diagram.png)


**Topics**
+ [Conectividad automática con una instancia de EC2](#ec2-elc-connect-overview)
+ [Visualización de los recursos de computación conectados](#ec2-elc-connect-viewing)

## Conectividad automática con una instancia de EC2
<a name="ec2-elc-connect-overview"></a>

Cuando se configura una conexión entre una instancia de EC2 y una caché de ElastiCache, ElastiCache configura automáticamente el grupo de seguridad de la VPC para la instancia de EC2 y la caché de ElastiCache.

Estos son los requisitos para conectar una instancia de EC2 con una caché de ElastiCache:
+ La instancia de EC2 debe existir en la misma VPC que la caché de ElastiCache.

  Si no existen instancias de EC2 en la misma VPC, la consola proporciona un enlace para crear una.
+ El usuario que establece la conectividad debe tener permisos para realizar las siguientes operaciones de Amazon EC2. Por lo general, estos permisos se agregan a las cuentas de EC2 cuando se crean. Para obtener más información acerca de los permisos de EC2, consulte [Concesión de los permisos necesarios para los recursos de Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/ec2-api-permissions.html). 
  + `ec2:AuthorizeSecurityGroupEgress` 
  + `ec2:AuthorizeSecurityGroupIngress` 
  + `ec2:CreateSecurityGroup` 
  + `ec2:DescribeInstances` 
  + `ec2:DescribeNetworkInterfaces` 
  + `ec2:DescribeSecurityGroups` 
  + `ec2:ModifyNetworkInterfaceAttribute` 
  + `ec2:RevokeSecurityGroupEgress` 

Cuando se establece una conexión con una instancia de EC2, ElastiCache realiza una acción basada en la configuración actual de los grupos de seguridad asociados a la caché de ElastiCache y la instancia de EC2, tal como se describe en la siguiente tabla.


****  

| Configuración actual del grupo de seguridad de ElastiCache | Configuración del grupo de seguridad de EC2 actual | Acción de ElastiCache | 
| --- | --- | --- | 
|  Hay uno o más grupos de seguridad asociados a la caché de ElastiCache con un nombre que coincide con el patrón `elasticache-ec2-${cacheId}:${ec2InstanceId}`. No se ha modificado ningún grupo de seguridad que coincida con el patrón. Este grupo de seguridad tiene solo una regla de entrada con el grupo de seguridad de VPC de la instancia de EC2 como origen.  |  Hay uno o más grupos de seguridad asociados a la instancia de EC2 con un nombre que coincide con el patrón `elasticache-ec2-${cacheId}:${ec2InstanceId}`. No se ha modificado ningún grupo de seguridad que coincida con el patrón. Este grupo de seguridad solo tiene una regla de salida con el grupo de seguridad de la VPC de la caché de ElastiCache como origen.  |  ElastiCache no realiza ninguna acción. Ya se configuró automáticamente una conexión entre la instancia de EC2 y la caché de ElastiCache. Como ya existe una conexión entre la instancia de EC2 y la caché de ElastiCache, los grupos de seguridad no se modifican.  | 
|  Se aplica alguna de las siguientes condiciones: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/compute-connection.html)  |  Se aplica alguna de las siguientes condiciones: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/compute-connection.html)  |  [ELC action: create new security groups](#elc-action-create-new-security-groups)  | 
|  Hay uno o más grupos de seguridad asociados a la caché de ElastiCache con un nombre que coincide con el patrón `elasticache-ec2-${cacheId}:${ec2InstanceId}`. No se ha modificado ningún grupo de seguridad que coincida con el patrón. Este grupo de seguridad tiene solo una regla de entrada con el grupo de seguridad de VPC de la instancia de EC2 como origen.  |  Hay uno o más grupos de seguridad asociados a la instancia de EC2 con un nombre que coincide con el patrón `elasticache-ec2-${cacheId}:${ec2InstanceId}`. Sin embargo, ElastiCache no puede usar ninguno de estos grupos de seguridad para la conexión con la caché de ElastiCache. ElastiCache no puede usar un grupo de seguridad que no tenga una regla de entrada con el grupo de seguridad de la VPC de la caché de ElastiCache como origen. ElastiCache tampoco puede usar un grupo de seguridad que se haya modificado.  |  [ELC action: create new security groups](#elc-action-create-new-security-groups)  | 
|  Hay uno o más grupos de seguridad asociados a la caché de ElastiCache con un nombre que coincide con el patrón `elasticache-ec2-${cacheId}:${ec2InstanceId}`. No se ha modificado ningún grupo de seguridad que coincida con el patrón. Este grupo de seguridad tiene solo una regla de entrada con el grupo de seguridad de VPC de la instancia de EC2 como origen.  |  Existe un grupo de seguridad de EC2 válido para la conexión, pero no está asociado a la instancia de EC2. Este grupo de seguridad tiene un nombre que coincide con el patrón `ec2-elasticache-${ec2InstanceId}:${cacheId}`. No se ha modificado. Solo tiene una regla de salida con el grupo de seguridad de la VPC de la caché de ElastiCache como origen.  |  [ELC action: associate EC2 security group](#elc-action-associate-ec2-security-group)  | 
|  Se aplica alguna de las siguientes condiciones: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/compute-connection.html)  |  Hay uno o más grupos de seguridad asociados a la instancia de EC2 con un nombre que coincide con el patrón `ec2-elasticache-${ec2InstanceId}:${cacheId}`. No se ha modificado ningún grupo de seguridad que coincida con el patrón. Este grupo de seguridad solo tiene una regla de salida con el grupo de seguridad de la VPC de la caché de ElastiCache como origen.  |  [ELC action: create new security groups](#elc-action-create-new-security-groups)  | 

**Acción de ElastiCache: crear nuevos grupos de seguridad**  
ElastiCache realiza las siguientes acciones:
+ Crea un nuevo grupo de seguridad que coincide con el patrón `elasticache-ec2-${cacheId}:${ec2InstanceId}`. Este grupo de seguridad tiene una regla de entrada con el grupo de seguridad de VPC de la instancia de EC2 como origen. Este grupo de seguridad está asociado a la caché de ElastiCache y permite que la instancia de EC2 acceda a ella.
+ Crea un nuevo grupo de seguridad que coincide con el patrón `elasticache-ec2-${cacheId}:${ec2InstanceId}`. Este grupo de seguridad tiene una regla de salida con el grupo de seguridad de la VPC de la caché de ElastiCache como origen. Este grupo de seguridad está asociado a la instancia de EC2 y permite que la instancia de EC2 envíe tráfico a la caché de ElastiCache.

**Acción de ElastiCache: asociar un grupo de seguridad de EC2**  
ElastiCache asocia el grupo de seguridad de EC2 válido y existente con la instancia de EC2. Este grupo de seguridad permite que la instancia de EC2 envíe tráfico a la caché de ElastiCache.

## Visualización de los recursos de computación conectados
<a name="ec2-elc-connect-viewing"></a>

Puede utilizar la Consola de administración de AWS para ver los recursos de computación que están conectados a una caché de ElastiCache. Los recursos que se muestran incluyen conexiones de recursos informáticos que se configuraron automáticamente. Por ejemplo, puede permitir que un recurso de computación acceda a una caché manualmente añadiendo una regla al grupo de seguridad de la VPC asociado a la caché. Estos recursos no aparecerán en la lista de recursos de computación conectados.

Para que un recurso de computación coincida, se deben cumplir las mismas condiciones que cuando se conectan una instancia de EC2 y una caché de ElastiCache de forma automática.

**Cómo visualizar los recursos de computación que están conectados a una caché de ElastiCache**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de ElastiCache.

1. En el panel de navegación, elija **Cachés** y, a continuación, seleccione una caché de Valkey o Redis OSS.

1. En la pestaña **Conectividad y seguridad**, consulte los recursos de computación en **Recursos de computación conectados**.  
![\[Recursos de computación conectados\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/images/ec2-elasticache-connected_resources.png)

# Escalado ElastiCache
<a name="Scaling"></a>

Puede escalar la ElastiCache memoria caché para adaptarla a sus necesidades. Las cachés sin servidor y los clústeres basados en nodos ofrecen varias opciones de escalado.

## Escalar ElastiCache sin servidor
<a name="Scaling-serverless"></a>

ElastiCache Serverless acomoda automáticamente el tráfico de su carga de trabajo a medida que aumenta o disminuye. Para cada caché ElastiCache sin servidor, realiza un seguimiento ElastiCache continuo del uso de recursos como la CPU, la memoria y la red. Cuando alguno de estos recursos está limitado, ElastiCache Serverless amplía su capacidad añadiendo un nuevo fragmento y redistribuyendo los datos al nuevo fragmento, sin que la aplicación pierda tiempo de inactividad. Puede supervisar los recursos que consume la memoria caché supervisando la `BytesUsedForCache` métrica del almacenamiento de datos en CloudWatch la memoria caché y `ElastiCacheProcessingUnits` (ECPU) del uso informático. 

## Establecimiento de límites de escalado para administrar los costes
<a name="Pre-Scaling"></a>

Puede optar por configurar un uso máximo tanto para el almacenamiento de datos de la caché como ECPU/second para la memoria caché a fin de controlar los costes de la memoria caché. Si lo hace, se asegurará de que el uso de la memoria caché nunca supere el máximo configurado. 

Si establece un escalado máximo, es posible que su aplicación disminuya el rendimiento de la caché cuando esta alcance el máximo. Cuando estableces un máximo de almacenamiento de datos en caché y el almacenamiento de datos en caché alcanza el máximo, ElastiCache empezará a desalojar los datos de la caché que tengan un TTL Time-To-Live (TTL) establecido mediante la lógica LRU. Si no hay datos que se puedan expulsar, las solicitudes para escribir datos adicionales recibirán un mensaje de error por memoria insuficiente (OOM). Cuando estableces un ECPU/second máximo y la utilización informática de tu carga de trabajo supera este valor, ElastiCache empezará a limitar las solicitudes. 

Si estableces un límite máximo en `BytesUsedForCache` o`ElastiCacheProcessingUnits`, te recomendamos encarecidamente configurar una CloudWatch alarma con un valor inferior al límite máximo para que recibas una notificación cuando la memoria caché esté funcionando cerca de estos límites. Le recomendamos configurar una alarma al 75 % del límite máximo que haya establecido. Consulte la documentación sobre cómo configurar CloudWatch las alarmas.

## Escalado previo con Serverless ElastiCache
<a name="Pre-Scaling"></a>

**ElastiCache Escalado previo sin servidor**

Con el preescalado, también denominado precalentamiento, puede establecer los límites mínimos admitidos para la memoria caché. ElastiCache Puede establecer estos mínimos para las unidades de ElastiCache procesamiento (ECPUs) por segundo o para el almacenamiento de datos. Esto puede resultar útil para prepararse para los eventos de escalado previstos. Por ejemplo, si una empresa de videojuegos prevé multiplicar por cinco el número de inicios de sesión en el primer minuto de lanzamiento de su nuevo juego, puede preparar su caché para este importante aumento de uso. 

Puede realizar el escalado previo mediante la ElastiCache consola, la CLI o la API. ElastiCache Serverless actualiza lo disponible ECPUs/second en la memoria caché en 60 minutos y envía una notificación de evento cuando se completa la actualización del límite mínimo. 

**Funcionamiento del escalado previo**

Cuando el límite mínimo ECPUs/second o el almacenamiento de datos se actualiza mediante la consola, la CLI o la API, ese nuevo límite estará disponible en 1 hora. ElastiCache Serverless admite 30 K ECPUs/second en una caché vacía y hasta 90 K ECPUs/sec cuando se utiliza la función Read from Replica. ElastiCache Serverless for Valkey 8.0 puede duplicar las solicitudes por segundo (RPS) admitidas cada 2 o 3 minutos, hasta alcanzar los 5 millones de RPS por caché desde cero en menos de 13 minutos, con una latencia de lectura constante de p50 por debajo de un milisegundo. Si prevé que un próximo evento de escalado podría superar esta tasa, le recomendamos que establezca el mínimo en el pico que espera ECPUs/second al menos 60 minutos ECPUs/sec antes del evento máximo. De lo contrario, es posible que la aplicación experimente una latencia elevada y se limiten las solicitudes. 

Cuando se complete la actualización del límite mínimo, ElastiCache Serverless empezará a calcularte el nuevo mínimo ECPUs por segundo o el nuevo almacenamiento mínimo. Esto se realiza incluso si la aplicación no ejecuta las solicitudes en la caché o si el uso del almacenamiento de datos es inferior al mínimo. Al reducir el límite mínimo con respecto a su configuración actual, la actualización es inmediata, por lo que ElastiCache Serverless empezará a medir el nuevo límite mínimo de forma inmediata. 

**nota**  
Al establecer un límite de uso mínimo, se le cobrará por ese límite incluso si su uso real es inferior. El uso del almacenamiento de datos o ECPU que supere el límite de uso mínimo se cobrará a la tarifa normal. Por ejemplo, si estableces un límite de uso mínimo de 100 000\$1, ECPUs/second se te cobrará al menos 1,224\$1 por hora (utilizando los precios de la ECPU en us-east-1), incluso si tu uso es inferior al mínimo establecido.
ElastiCache Serverless admite la escala mínima solicitada a nivel agregado en la memoria caché. ElastiCache Serverless también admite un máximo de 30 000 ECPUs/second por ranura (90 K ECPUs/second cuando se usa Read from Replica con conexiones READONLY). Como práctica recomendada, la aplicación debe garantizar que la distribución de claves entre las ranuras de Valkey o Redis OSS y el tráfico entre las claves sea lo más uniforme posible.

## Establecer límites de escalado mediante la consola y AWS CLI
<a name="Pre-Scaling.console"></a>

*Establecer límites de escalado mediante la AWS consola*

1. Inicie sesión en Consola de administración de AWS y abra la ElastiCache consola en [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. En el panel de navegación, elija el motor que se ejecuta en la caché que desea modificar.

1. Aparecerá una lista de las cachés que ejecutan el motor elegido.

1. Elija la caché que desee modificar seleccionando el botón de opción (a la izquierda del nombre de la caché).

1. Elija **Actions** (Acciones) y después **Modify** (Modificar).

1. En **Límites de uso**, establezca los límites de **Memoria** o **Computación** adecuados.

1. Haga clic en **Vista previa de los cambios** y seleccione **Guardar** los cambios.

**Establecer límites de escalado mediante el AWS CLI**

Para cambiar los límites de escalado mediante la CLI, utilice la modify-serverless-cache API.

**Linux**:

```
aws elasticache modify-serverless-cache --serverless-cache-name <cache name> \
--cache-usage-limits 'DataStorage={Minimum=10,Maximum=100,Unit=GB}, ECPUPerSecond={Minimum=1000,Maximum=100000}'
```

**Windows:**

```
aws elasticache modify-serverless-cache --serverless-cache-name <cache name> ^
--cache-usage-limits 'DataStorage={Minimum=10,Maximum=100,Unit=GB}, ECPUPerSecond={Minimum=1000,Maximum=100000}'
```

**Eliminación de los límites de escalado mediante la CLI**

Para eliminar los límites de escalado mediante la CLI, establezca los parámetros Límite máximo y Límite mínimo en 0.

**Linux**:

```
aws elasticache modify-serverless-cache --serverless-cache-name <cache name> \
--cache-usage-limits 'DataStorage={Minimum=0,Maximum=0,Unit=GB}, ECPUPerSecond={Minimum=0,Maximum=0}'
```

**Windows:**

```
aws elasticache modify-serverless-cache --serverless-cache-name <cache name> ^
--cache-usage-limits 'DataStorage={Minimum=0,Maximum=0,Unit=GB}, ECPUPerSecond={Minimum=0,Maximum=0}'
```

# Escalado de clústeres basados en nodos
<a name="Scaling-self-designed"></a>

La cantidad de datos que necesita su aplicación para procesar casi nunca es fija. Aumenta y disminuye a medida que su negocio crece o experimenta las fluctuaciones normales de la demanda. Si administra por sí mismo su caché, necesita aprovisionar suficiente hardware para los picos de demanda, lo cual puede resultar caro. Al usar Amazon ElastiCache , puedes escalar para satisfacer la demanda actual y pagar solo por lo que usas. ElastiCache le permite escalar su caché para adaptarla a la demanda.

**nota**  
Si un clúster de Valkey o Redis OSS se replica en una o más regiones, esas regiones se escalan en orden. Al escalarse verticalmente, las regiones secundarias se escalan primero y, después, la región principal. Al reducirse verticalmente, la región principal es la primera y luego van las regiones secundarias.  
Al actualizar la versión del motor, primero va la región secundaria y, a continuación, la región principal.

**Topics**
+ [Escalado de clústeres para Memcached bajo demanda](Scaling-self-designed.mem-heading.md)
+ [Escalado manual para clústeres de Memcached](Scaling.Memcached.manually.md)
+ [Escalado de clústeres para Valkey o Redis OSS (modo de clúster deshabilitado)](scaling-redis-classic.md)
+ [Escalado de nodos de réplica para Valkey o Redis OSS (modo de clúster deshabilitado)](Scaling.RedisReplGrps.md)
+ [Escalado de clústeres de Valkey o Redis OSS (modo de clúster habilitado)](scaling-redis-cluster-mode-enabled.md)

# Escalado de clústeres para Memcached bajo demanda
<a name="Scaling-self-designed.mem-heading"></a>

ElastiCache for Memcached ofrece un servicio de almacenamiento en caché en memoria totalmente gestionado que implementa, opera y escala verticalmente Memcached en la nube.AWS

**Escalado vertical bajo demanda**

Gracias a su escalado vertical, Memcached ofrece un sistema de almacenamiento en caché de memoria distribuida de alto rendimiento que se utiliza ampliamente ElastiCache para acelerar las aplicaciones dinámicas al reducir la carga de las bases de datos. Los datos y objetos se almacenan en la RAM, lo que reduce la necesidad de leer orígenes de datos externos.

Puede aplicar el escalado vertical tanto a los clústeres basados en nodos existentes como a los nuevos. Esto puede proporcionar flexibilidad a la hora de asignar recursos, lo que permite a los usuarios adaptarse de manera eficiente a las cargas de trabajo cambiantes sin tener que alterar la arquitectura del clúster. Esta capacidad de escalado mejora el rendimiento al aumentar la capacidad de caché durante los períodos de alta demanda y reducirla verticalmente para optimizar los costos durante los períodos de poca demanda. Además, simplifica las operaciones, elimina la necesidad de crear nuevos clústeres para satisfacer los cambios en los requisitos de los recursos y permite responder rápidamente a las fluctuaciones del tráfico. En general, el escalado vertical de los clústeres basados en nodos para Memcached puede ayudar a aumentar la rentabilidad, mejorar la utilización de los recursos e incluso permitir a los usuarios cambiar el tipo de instancia de Memcached. Todo ello facilita a los usuarios alinear su infraestructura de almacenamiento en caché con las necesidades reales de las aplicaciones. 

**nota**  
Las modificaciones del tipo de nodo solo están disponibles para los clústeres de Memcached basados en nodos con la versión 1.5 o posterior del motor.
La detección automática debe estar habilitada para poder utilizar el escalado vertical. 

## Configuración del escalado vertical bajo demanda para clústeres de Memcached basados en nodos
<a name="Scaling.Memcached.automatically.setup.cli"></a>

Puede configurar el escalado vertical bajo demanda para Memcached con `scale-config`, que contiene dos parámetros: 

1. **ScaleIntervalMinutes:** Tiempo (en minutos) entre el escalado de los lotes durante el proceso de actualización de Memcached

1. **ScalePercentage:** Porcentaje de nodos que se escalarán simultáneamente durante el proceso de actualización de Memcached

**Conversión de un tipo de nodo de Memcached existente en una caché que pueda escalarse verticalmente desde la CLI**

Para convertir un clúster basado en nodos de Memcached existente en una caché que pueda escalarse verticalmente, puede usar `elasticache modify-cache-cluster` en la CLI.

```
aws elasticache modify-cache-cluster \
    --cache-cluster-id <your-cluster-id> \
    --cache-node-type <new-node-type> \
    --scale-config <scale-config> \ 
    --apply-immediately
```

**Configuración del escalado vertical con la CLI**

Para configurar el escalado vertical de un clúster de Memcached basado en nodos mediante la CLI, utilice `elasticache modify-cache-cluster` con `scale-config` y sus parámetros `ScalePercentage` y `ScaleIntervalMinutes`. 
+ **scale-interval-minutes:** Define el tiempo (en minutos) entre el escalado de los lotes. Este valor puede definirse entre 2 y 30 minutos. Si no se especifica ningún valor, se utiliza el valor predeterminado de 5 minutos.
+ **scale-percentage:** especifica el porcentaje de nodos que se escalará simultáneamente en cada lote. Este ajuste puede definirse entre 10 y 100 minutos. El valor se redondea al alza al dividir, por lo que si, por ejemplo, el resultado es 49,5, se aplica una configuración de 50. Si no se especifica ningún valor, se utiliza el valor predeterminado de 20.

Estas opciones de configuración le permitirán refinar el proceso de escalado de acuerdo con sus necesidades específicas, estableciendo un equilibro entre minimizar las interrupciones del clúster y optimizar la velocidad de escalado. El parámetro scale-config solo se aplicará a los tipos de motor de Memcached y se omitirá en el caso de otros motores de caché, lo que garantizará la compatibilidad con el uso de las API existente en otros clústeres.

**Llamada a la API**

```
aws elasticache modify-cache-cluster \
    --cache-cluster-id <your-cluster-id> \
    --cache-node-type <new-node-type> \
    --scale-config '{
            "ScalePercentage": 30,
            "ScaleIntervalMinutes": 2
          }'
    --apply-immediately
```

**Resultado:**

Devuelve el ID del clúster y el cambio pendiente.

```
{
    "CacheCluster": {
        "CacheNodeType": "old_insance_type",
         ...
         ...
         "PendingModifiedValues": {
            "CacheNodeType": "new_instance_type"
         },
    }
}
```

**Enumeración de la configuración de escalado vertical de su caché de Memcached**

Puede recuperar las opciones de escalado de sus cachés de Memcached y ver cuáles son sus opciones actuales de escalado vertical. 

**Llamada a la API**

```
aws elasticache list-allowed-node-type-modifications --cache-cluster-id <your-cluster-id>
```

**Resultado:**

```
{ 
  "ScaleUpModifications": [
      "cache.x.xxxx", 
      "cache.x.xxxx"
   	  ],
   "ScaleDownModifications": [ 
      "cache.x.xxxx", 
      "cache.x.xxxx", 
      "cache.x.xxxx" 
      ] 
}
```

**Escalado vertical para Memcached con Consola de administración de AWS**

Siga estos pasos para utilizar el Consola de administración de AWS para convertir un clúster de Memcached basado en nodos en un clúster escalable verticalmente.

1. Inicie sesión en Consola de administración de AWS y abra la consola en. ElastiCache [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)

1. Seleccione el clúster de Memcached que desee convertir.

1. Seleccione la pestaña **Modificar**.

1. Vaya a la sección **Configuración de la caché** y seleccione el **tipo de nodo** deseado.

1. Seleccione **Vista previa de los cambios** y revise los cambios.

1. Seleccione **Modificar**.

## Escalado horizontal automatizado para Memcached
<a name="Scaling-self-designed.mem-heading.horizontal"></a>

ElastiCache ahora se integra con el servicio AWS Application Auto Scaling (AAS) para incluir el escalado horizontal automatizado para los clústeres de Memcached. Puede definir políticas de escalado a través del servicio AWS Application Auto Scaling y ajustar automáticamente la cantidad de nodos en los clústeres de Memcached según sea necesario, en función de métricas o planificaciones predefinidas.

**nota**  
El escalado horizontal automatizado no está disponible actualmente en las regiones de Pekín y Ningxia. 

Estos son los métodos disponibles para escalar automáticamente de forma horizontal los clústeres basados en nodos.
+ **Escalado programado:** el escalado basado en una programación le permite definir su propia programación de escalado para los cambios en las cargas predecibles. Por ejemplo, cada semana el tráfico de su aplicación web empieza a aumentar los miércoles, sigue siendo alto el jueves y comienza a disminuir el viernes. Puede configurar el escalado automático para aumentar la capacidad los miércoles y reducirla los viernes. 
+ **Seguimiento de destinos:** las políticas de escalado de seguimiento de destinos le permiten elegir una métrica de escalado y establecer un valor de destino. Application Auto Scaling crea y administra las CloudWatch alarmas que activan la política de escalado y calcula el ajuste de escalado en función de la métrica y el valor objetivo. La política de escalado amplía o reduce la capacidad en función de las necesidades para mantener la métrica en el valor objetivo especificado o en un valor próximo. 

**Cómo configurar el escalado horizontal para un clúster de Memcached basado en nodos mediante la CLI**

Al escalar horizontalmente un clúster de Memcached basado en nodos, puede utilizar una política de seguimiento de destinos, una política programada o ambas.

1. **Registro de un recurso como destino escalable**

   Llame a la `RegisterScalableTarget` API en AWS Application Auto Scaling para registrar el objetivo de la dimensión escalable`elasticache:cache-cluster:Nodes`. 

   **API: ApplicationAutoScaling. RegisterScalableTarget**

   Input:

   ```
   {
   	"ScalableDimension": "elasticache:cache-cluster:Nodes",
   	"ResourceId": "cache-cluster/test-cluster-1",
   	"ServiceNamespace": "elasticache",
   	"MinCapacity": 20,  
   	"MaxCapacity": 50 
   }
   ```

1. **Creación de una política de escalado de seguimiento de destino**

   A continuación, puede crear una política de escalado de seguimiento de destino para el recurso llamando a la API de la política de escalado. 

1. **Métrica predefinida**

   A continuación se muestra una política que aplica el escalado a la dimensión del nodo de caché con la métrica predefinida ` ElastiCacheCPUUtilization`, establecida en 50 para el clúster test-cluster-1. Al eliminar nodos para reducirlos horizontalmente, se borran los últimos n nodos.

   API: ApplicationAutoScaling. PutScalingPolicy

   Input:

   ```
   {
   	"PolicyName": "cpu50-target-tracking-scaling-policy",
   	"PolicyType": "TargetTrackingScaling",
   	"TargetTrackingScalingPolicyConfiguration": {
   		"TargetValue": 50,
   		"PredefinedMetricSpecification": {
   			"PredefinedMetricType": "ElastiCacheCPUUtilization"
   			},
   		"ScaleOutCooldown": 600,
   		"ScaleInCooldown": 600
   			},
   	"ServiceNamespace": "elasticache",
   	"ScalableDimension": "elasticache:cache-cluster:Nodes",
   	"ResourceId": "cache-cluster/test-cluster-1"
   }
   ```

   Salida:

   ```
   {
   	"PolicyARN": "arn:aws:autoscaling:us-west-2:012345678910:scalingPolicy:6d8972f3-efc8-437c-92d1-6270f29a66e7:resource/elasticache/cache-cluster/test-cluster-1:policyName/cpu50-target-tracking-scaling-policy",
   	"Alarms": [
   		{
   		"AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-elasticache/cache-cluster/test-cluster-1-AlarmHigh-d4f0770c-b46e-434a-a60f-3b36d653feca",
   		"AlarmName": "TargetTracking-elasticache/cache-cluster/test-cluster-1-AlarmHigh-d4f0770c-b46e-434a-a60f-3b36d653feca"
   		},
   		{
   		"AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-elasticache/cache-cluster/test-cluster-1-AlarmLow-1b437334-d19b-4a63-a812-6c67aaf2910d",
   		"AlarmName": "TargetTracking-elasticache/cache-cluster/test-cluster-1-AlarmLow-1b437334-d19b-4a63-a812-6c67aaf2910d"
   		}
   	]
   }
   ```

1. **Métrica personalizada**

   También puede establecer una política de escalado en función de la dimensión usando un porcentaje personalizado que se base en la métrica de Cloudwatch.

   Input:

   ```
   {
   	"PolicyName": "cpu50-target-tracking-scaling-policy",
   	"PolicyType": "TargetTrackingScaling",
   	"TargetTrackingScalingPolicyConfiguration": {
   		"CustomizedMetricSpecification": { 
   			"Dimensions": [ 
   				{ 
   				"Name": "MyMetricDimension",
   				"Value": "DimensionValue"
   				}
   				],
   			"MetricName": "MyCustomMetric",
   			"Namespace": "MyNamespace",
   			"Statistic": "Average",
   			"Unit": "Percent"
   			},
   		"TargetValue": 40,
   		"ScaleOutCooldown": 600,
   		"ScaleInCooldown": 600
   		},
   	"ServiceNamespace": "elasticache",
   	"ScalableDimension": "elasticache:cache-cluster:Nodes",
   	"ResourceId": "cache-cluster/test-cluster-1"
   }
   ```

1. **Acciones programadas**

   Cuando tenga que escalar horizontalmente para un evento determinado y, después, reducir horizontalmente, puede crear dos acciones programadas llamando a la API `PutScheduledAction`. 

   **Política 1: escalado horizontal**

   El comando `at` en `--schedule` programa la acción que se va a ejecutar una sola vez en una fecha y hora específicas en el futuro. El campo de programación también admite frecuencias (minuto, hora, día, etc.) y cron (para la expresión cron).

   En la fecha y la hora especificadas, Escalado automático de aplicaciones actualiza los valores `MinCapacity` y `MaxCapacity`. Application Auto Scaling se amplía MinCapacity hasta situar los nodos de caché en 70. 

   **API: ApplicationAutoScaling. PutScheduledAction**

   Input:

   ```
   {
   	"ResourceId": "elasticache:ache-cluster:test-cluster-1",
   	"ScalableDimension": "elasticache:cache-cluster:Nodes",
   		"ScalableTargetAction": { 
   			"MaxCapacity": 100,
   			"MinCapacity": 70
   			},
   	"Schedule": "at(2020-05-20T17:05:00)",
   	"ScheduledActionName": "ScalingOutScheduledAction",
   	"ServiceNamespace": "elasticache",
   }
   ```

   **Política 2: reducción horizontal**

   En la fecha y la hora especificadas, Escalado automático de aplicaciones actualiza los valores `MinCapacity` y `MaxCapacity` de la tabla y reduce horizontalmente a `MaxCapacity` para devolver los nodos de caché a 60.

   **API: ApplicationAutoScaling. PutScheduledAction**

   Input:

   ```
   {
   	"ResourceId": "elasticache:cache-cluster:test-cluster-1",
   	"ScalableDimension": "elasticache:cache-cluster:Nodes",
   	"ScalableTargetAction": { 
   		"MaxCapacity": 60,
   		"MinCapacity": 40
   		},
   	"Schedule": "at(2020-05-21T17:05:00)",
   	"ScheduledActionName": "ScalingInScheduledAction",
   	"ServiceNamespace": "elasticache",
   }
   ```

1. **Visualización de las actividades de escalado**

   Puede ver las actividades de escalado mediante la API `DescribeScalingActivities`. 

   **API: ApplicationAutoScaling. DescribeScalingActivities**

   Salida:

   ```
   {
   	"ScalingActivities": [
   		{
   		"ScalableDimension": "elasticache:elasticache:DesiredCount",
   		"Description": "Setting desired count to 30.",
   		"ResourceId": "elasticache/cache-cluster/test-cluster-1",
   		"ActivityId": "4d759079-a31f-4d0c-8468-504c56e2eecf",
   		"StartTime": 1462574194.658,
   		"elasticacheNamespace": "elasticache",
   		"EndTime": 1462574276.686,
   		"Cause": "monitor alarm TargetTracking-elasticache/cache-cluster/test-cluster-1-AlarmHigh-d4f0770c-b46e-434a-a60f-3b36d653feca in state ALARM triggered policy cpu50-target-tracking-scaling-policy",
   		"StatusMessage": "Failed to set desired count to 30",
   		"StatusCode": "Failed"
   		},
   		{
   		"ScalableDimension": "elasticache:elasticache:DesiredCount",
   		"Description": "Setting desired count to 25.",
   		"ResourceId": "elasticache/cache-cluster/test-cluster-1",
   		"ActivityId": "90aff0eb-dd6a-443c-889b-b809e78061c1",
   		"StartTime": 1462574254.223,
   		"elasticacheNamespace": "elasticache",
   		"EndTime": 1462574333.492,
   		"Cause": "monitor alarm TargetTracking-elasticache/cache-cluster/test-cluster-1-AlarmHigh-d4f0770c-b46e-434a-a60f-3b36d653feca in state ALARM triggered policy cpu50-target-tracking-scaling-policy",
   		"StatusMessage": "Successfully set desired count to 25. Change successfully fulfilled by elasticache.",
   		"StatusCode": "Successful"
   		}
   	]
   }
   ```

1. **Edición o eliminación de la política de escalado**

   Para editar o eliminar políticas, vuelva a llamar a la API `PutScalingPolicy` o llame a la acción `DeleteScalingPolicy` o `DeleteScheduled`. 

1. **Anulación del registro de los destinos escalables**

   Puede anular el registro del destino escalable a través de la API `DeregisterScalableTarget`. Al anular el registro de un destino escalable, se eliminan las políticas de escalado y las acciones programadas asociadas a él. 

   **API: ApplicationAutoScaling. DeregisterScalableTarget**

   Input:

   ```
   {
   	"ResourceId": "elasticache/cache-cluster/test-cluster-1",
   	"ServiceNamespace": "elasticache",
   	"ScalableDimension": "elasticache:cache-cluster:Nodes"
   }
   ```

1. **Limpieza de las políticas de escalado**

1. **Políticas de escalado múltiple**

   Puede crear varias políticas de escalado. A continuación, se muestran los principales comentarios sobre el comportamiento del [Seguimiento de destinos de escalado automático](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html). 
   + Puede tener varias políticas de escalado de seguimiento de destino para un destino escalable, siempre que cada una de ellas utilice una métrica diferente.
   + El objetivo de Auto Scaling de aplicaciones siempre es dar prioridad a la disponibilidad, por lo que su comportamiento varía en rol de si las políticas de seguimiento de destino están listas para el escalado horizontal o reducción horizontal. Realizará un escalado ascendente del destino escalable si cualquiera de las políticas de seguimiento de destino está lista para el escalado ascendente, pero solo realizará el escalado descendente si todas las políticas de seguimiento de destino (que tienen la parte de escalado descendente habilitada) están listas para el escalado descendente. 
   + Si varias políticas indican al destino escalable que escale horizontalmente o reduzca horizontalmente al mismo tiempo, Auto Scaling de aplicaciones se escala en función de la política que proporciona la mayor capacidad para escalar horizontalmente y reducir horizontalmente Esto brinda una mayor flexibilidad para abordar diferentes situaciones y garantizar que siempre haya capacidad suficiente para procesar las cargas de trabajo de la aplicación. 
**nota**  
AWS Application Auto Scaling no aplica políticas de escalado de colas. El escalado automático de aplicaciones esperará a que se complete el primer escalado, luego descansará y, a continuación, repetirá el algoritmo anterior.

**Escale automáticamente y de forma horizontal un clúster de Memcached basado en nodos mediante el Consola de administración de AWS**

Siga estos pasos para utilizar el Consola de administración de AWS para convertir un clúster de Memcached existente basado en nodos en un clúster escalable horizontalmente.

1. Inicie sesión en Consola de administración de AWS y abra la consola en. ElastiCache [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)

1. Seleccione la caché de Memcached que desee convertir.

1. Vaya a la pestaña **Escalado automático**.

1. Para elegir la política de escalado que desee aplicar, seleccione **Agregar escalado dinámico** o **Agregar escalado programado**.

1. Rellene los detalles de la política seleccionada según sea necesario.

1. Haga clic en **Crear**.

# Escalado manual para clústeres de Memcached
<a name="Scaling.Memcached.manually"></a>

Escalar un clúster de Memcached horizontal y verticalmente es tan sencillo como añadir o eliminar nodos del clúster. Los clústeres de Memcached se componen de 1 a 60 nodos. 

Dado que puede fragmentar los datos entre todos los nodos de un clúster de Memcached, el escalado con ampliación a un tipo de nodo con más memoria no suele ser necesaria. Sin embargo, debido a que el motor de Memcached no conserva los datos, si escala a un tipo de nodo distinto, el clúster nuevo estará vacío a menos que la aplicación lo rellene.

Para escalar verticalmente su clúster de Memcached de forma manual, debe crear un clúster nuevo. Los clústeres de Memcached siempre comienzan vacíos a menos que su aplicación los rellene. 


**Escalado manual de clústeres de Memcached**  

| Action | Topic | 
| --- | --- | 
|  Escalado ascendente  |  [Adición de nodos a un clúster](Clusters.html#AddNode)  | 
|  Escalado descendente  |  [Eliminación de nodos de un clúster](Clusters.html#DeleteNode)  | 
|  Cambios de tipos de nodos  |  [Escalado manual de clústeres de Memcached basados en nodos verticalmente](#Scaling.Memcached.Vertically)  | 

**Topics**
+ [Escalado manual de un clúster de Memcached basado en nodos horizontalmente](#Scaling.Memcached.Horizontally)
+ [Escalado manual de clústeres de Memcached basados en nodos verticalmente](#Scaling.Memcached.Vertically)

## Escalado manual de un clúster de Memcached basado en nodos horizontalmente
<a name="Scaling.Memcached.Horizontally"></a>

El motor de Memcached permite realizar una partición de sus datos entre varios nodos. Por ello, los clústeres de Memcached se pueden escalar de forma horizontal fácilmente. Para escalar horizontalmente su clúster de Memcached, simplemente agregue o elimine nodos.

Los siguientes temas detallan cómo escalar su clúster de Memcached de forma descendente o ascendente al agregar o eliminar nodos.
+ [Adición de nodos a un clúster](Clusters.html#AddNode)
+ [Eliminación de nodos del clúster](Clusters.html#AddNode)

Cada vez que cambie el número de nodos del clúster de Memcached, debe volver a asignar al menos algunos de su espacio de claves para que se asocien al nodo correcto. Para obtener información más detallada sobre cómo equilibrar la carga de su clúster de Memcached, consulte [Configuración de su ElastiCache cliente para un equilibrio de carga eficiente (Memcached)](BestPractices.LoadBalancing.md).

Si utiliza la detección automática en su clúster de Memcached, no es necesario cambiar los puntos de enlace de su aplicación al agregar o eliminar nodos. Para obtener más información sobre la detección automática, consulte [Identificación automática de los nodos en el clúster (Memcached)](AutoDiscovery.md). Si no utiliza la detección automática, cada vez que cambie el número de nodos de su clúster de Memcached, deberá actualizar los puntos de conexión de su aplicación.

## Escalado manual de clústeres de Memcached basados en nodos verticalmente
<a name="Scaling.Memcached.Vertically"></a>

Para escalar o reducir su clúster de Memcached manualmente, debe crear un nuevo clúster. Los clústeres de Memcached siempre comienzan vacíos a menos que su aplicación los rellene. 

**importante**  
Si escala para reducir a un tipo de nodo más pequeño, asegúrese de que el tipo de nodo más pequeño sea adecuado para sus datos, con una capacidad adicional. Para obtener más información, consulte [Elección del tamaño del nodo](CacheNodes.SelectSize.md).

**Topics**
+ [Escalado vertical de clústeres de Memcached basados en nodos (consola)](#Scaling.Memcached.Vertically.CON)
+ [Escalado vertical de un clúster de Memcached basado en nodos (AWS CLI)](#Scaling.Memcached.Vertically.CLI)
+ [Escalar verticalmente un clúster de Memcached basado en nodos (API) ElastiCache](#Scaling.Memcached.Vertically.API)

### Escalado vertical de clústeres de Memcached basados en nodos (consola)
<a name="Scaling.Memcached.Vertically.CON"></a>

El siguiente procedimiento le muestra cómo escalar verticalmente su clúster de Memcached basado en nodos utilizando la Consola de administración de AWS.

1. Cree un nuevo clúster con el nuevo tipo de nodo. Para obtener más información, consulte [Creación de un clúster de Memcached (consola)](Clusters.Create-mc.md#Clusters.Create.CON.Memcached).

1. En la aplicación, actualice los puntos de enlace a los puntos de enlace del nuevo clúster. Para obtener más información, consulte [Búsqueda de puntos de conexión de un clúster (consola) (Memcached)](Endpoints.md#Endpoints.Find.Memcached).

1. Elimine el clúster anterior. Para obtener más información, consulte [Deleting a new node in Memcached](Clusters.html#Delete.CON.Memcached).

### Escalado vertical de un clúster de Memcached basado en nodos (AWS CLI)
<a name="Scaling.Memcached.Vertically.CLI"></a>

El siguiente procedimiento le muestra cómo escalar verticalmente su clúster de Memcached basado en nodos utilizando la AWS CLI.

1. Cree un nuevo clúster con el nuevo tipo de nodo. Para obtener más información, consulte [Creación de un clúster (AWS CLI)](Clusters.Create.md#Clusters.Create.CLI).

1. En la aplicación, actualice los puntos de enlace a los puntos de enlace del nuevo clúster. Para obtener más información, consulte [Búsqueda de puntos de conexión (AWS CLI)](Endpoints.md#Endpoints.Find.CLI).

1. Elimine el clúster anterior. Para obtener más información, consulte [Utilización de AWS CLI para eliminar un ElastiCache clúster](Clusters.Delete.md#Clusters.Delete.CLI).

### Escalar verticalmente un clúster de Memcached basado en nodos (API) ElastiCache
<a name="Scaling.Memcached.Vertically.API"></a>

El siguiente procedimiento explica cómo escalar verticalmente un clúster de Memcached basado en nodos mediante la API. ElastiCache 

1. Cree un nuevo clúster con el nuevo tipo de nodo. Para obtener más información, consulte [Crear un clúster para Memcached (API) ElastiCache](Clusters.Create-mc.md#Clusters.Create.API.mem-heading)

1. En la aplicación, actualice los puntos de enlace a los puntos de enlace del nuevo clúster. Para obtener más información, consulte [Búsqueda de puntos de enlace (API de ElastiCache)](Endpoints.md#Endpoints.Find.API).

1. Elimine el clúster anterior. Para obtener más información, consulte [Uso de la ElastiCache API](Clusters.Delete.md#Clusters.Delete.API).

# Escalado de clústeres para Valkey o Redis OSS (modo de clúster deshabilitado)
<a name="scaling-redis-classic"></a>

Los clústeres de Valkey o Redis OSS (modo de clúster deshabilitado) pueden tener un solo nodo con 0 particiones o varios nodos con 1 partición. Los clústeres de un solo nodo utilizan el nodo para las lecturas y las escrituras. Los clústeres de varios nodos siempre tienen 1 nodo como nodo read/write principal con de 0 a 5 nodos de réplica de solo lectura.

**Topics**
+ [Escalado de clústeres para Valkey o Redis OSS (modo de clúster deshabilitado)](#Scaling.RedisStandalone)


**Escalado de clústeres de Valkey o Redis OSS**  

| Action | Valkey o Redis OSS (modo de clúster deshabilitado) | Valkey o Redis OSS (modo de clúster habilitado) | 
| --- | --- | --- | 
|  Escalado descendente  |  [Eliminar nodos de un ElastiCache clúster](Clusters.DeleteNode.md)  |  [Escalado de clústeres de Valkey o Redis OSS (modo de clúster habilitado)](scaling-redis-cluster-mode-enabled.md)  | 
|  Escalado ascendente  |  [Adición de nodos a un clúster](Clusters.html#AddNode)  |  [Cambio de particiones en línea para Valkey o Redis OSS (modo de clúster habilitado)](scaling-redis-cluster-mode-enabled.md#redis-cluster-resharding-online)  | 
|  Cambios de tipos de nodos  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/scaling-redis-classic.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/scaling-redis-classic.html)  |  [Escalado vertical en línea mediante la modificación del tipo de nodo](redis-cluster-vertical-scaling.md)  | 
|  Cambio del número de grupos de nodos  |  No es compatible con los clústeres de Valkey o Redis OSS (modo de clúster deshabilitado)  |  [Escalado de clústeres de Valkey o Redis OSS (modo de clúster habilitado)](scaling-redis-cluster-mode-enabled.md)  | 

**Contents**
+ [Escalado de clústeres para Valkey o Redis OSS (modo de clúster deshabilitado)](#Scaling.RedisStandalone)
  + [Escalado vertical de clústeres de Valkey o Redis OSS de un solo nodo](#Scaling.RedisStandalone.ScaleUp)
    + [Escalado vertical de clústeres de Valkey o Redis OSS (modo de clúster deshabilitado) de un solo nodo (consola)](#Scaling.RedisStandalone.ScaleUp.CON)
    + [Escalado vertical de clústeres de Valkey o Redis OSS de un solo nodo (AWS CLI)](#Scaling.RedisStandalone.ScaleUp.CLI)
    + [Ampliación de clústeres OSS (API) de Valkey o Redis de un solo nodo ElastiCache](#Scaling.RedisStandalone.ScaleUp.API)
  + [Reducción vertical de clústeres de Valkey o Redis OSS de un solo nodo](#Scaling.RedisStandalone.ScaleDown)
    + [Reducción vertical de clústeres de Valkey o Redis OSS de un solo nodo (consola)](#Scaling.RedisStandalone.ScaleDown.CON)
    + [Reducción vertical de clústeres de Valkey o Redis OSS de un solo nodo (AWS CLI)](#Scaling.RedisStandalone.ScaleUpDown-Modify.CLI)
    + [Reducir el tamaño de los clústeres OSS (API) de Valkey o Redis de un solo nodo ElastiCache](#Scaling.RedisStandalone.ScaleDown.API)

## Escalado de clústeres para Valkey o Redis OSS (modo de clúster deshabilitado)
<a name="Scaling.RedisStandalone"></a>

Los nodos de Valkey o Redis OSS (modo de clúster deshabilitado) deben ser lo suficientemente grandes como para contener todos los datos de la caché, además de asumir la sobrecarga de Valkey o Redis OSS. Para cambiar la capacidad de los datos de su clúster de Valkey o Redis OSS (modo de clúster deshabilitado), debe realizar un escalado vertical; es decir, escalar verticalmente a un tipo de nodo más grande para aumentar la capacidad de los datos o reducir verticalmente a un tipo de nodo más pequeño para reducir la capacidad de los datos.

El proceso de ElastiCache ampliación está diseñado para hacer todo lo posible por conservar los datos existentes y requiere una replicación correcta del OSS de Valkey o Redis. Para clústeres de Valkey o Redis OSS (modo de clúster deshabilitado), recomendamos disponer de suficiente memoria para Valkey o Redis OSS. 

No puede particionar los datos entre varios clústeres de Valkey o Redis OSS (modo de clúster deshabilitado). Sin embargo, si solo necesita aumentar o reducir la capacidad de lectura de su clúster, puede crear un clúster de Valkey o Redis OSS (modo de clúster deshabilitado) con nodos de réplica y agregar o eliminar réplicas de lectura. Para crear un clúster de Valkey o Redis OSS (modo de clúster deshabilitado) con nodos de réplica mediante su clúster de Valkey o Redis OSS de un único nodo como el clúster principal, consulte [Creación de un clúster de Valkey (modo de clúster deshabilitado) (consola)](SubnetGroups.designing-cluster-pre.valkey.md#Clusters.Create.CON.valkey-gs).

Después de crear el clúster con réplicas, puede aumentar la capacidad de lectura agregando réplicas de lectura. Después, si lo necesita, puede reducir la capacidad de lectura quitando réplicas de lectura. Para obtener más información, consulte [Aumento de la capacidad de lectura](Scaling.RedisReplGrps.md#Scaling.RedisReplGrps.ScaleOut) o [Reducción de la capacidad de lectura](Scaling.RedisReplGrps.md#Scaling.RedisReplGrps.ScaleIn).

Además de poder escalar la capacidad de lectura, los clústeres de Valkey o Redis OSS (modo de clúster deshabilitado) con réplicas tienen otras ventajas empresariales. Para obtener más información, consulte [Alta disponibilidad a través de grupos de reproducción](Replication.md).

**importante**  
Si su grupo de parámetros usa `reserved-memory` para apartar memoria para la capacidad adicional de Valkey o Redis OSS, antes de comenzar el escalado, asegúrese de tener un grupo de parámetros personalizado que reserve la cantidad de memoria adecuada para el nuevo tipo de nodo. De forma alternativa, puede modificar un grupo de parámetros personalizado para que use `reserved-memory-percent` y utilizar ese grupo de parámetros para su nuevo clúster.  
Si va a utilizar `reserved-memory-percent`, esto no es necesario.   
Para obtener más información, consulte [Administración de la memoria reservada para Valkey y Redis OSS](redis-memory-management.md).

**Topics**
+ [Escalado vertical de clústeres de Valkey o Redis OSS de un solo nodo](#Scaling.RedisStandalone.ScaleUp)
+ [Reducción vertical de clústeres de Valkey o Redis OSS de un solo nodo](#Scaling.RedisStandalone.ScaleDown)

### Escalado vertical de clústeres de Valkey o Redis OSS de un solo nodo
<a name="Scaling.RedisStandalone.ScaleUp"></a>

Al escalar un clúster de Valkey o Redis OSS de un solo nodo, ElastiCache realiza el siguiente proceso, ya sea que utilice la ElastiCache consola, la API o la consola.AWS CLI ElastiCache 

1. Un nuevo clúster con el nuevo tipo de nodo se activa en la misma zona de disponibilidad que el clúster existente.

1. Los datos de caché del clúster de caché existente se copian en el nuevo clúster. El tiempo que tarda este proceso depende de su tipo de nodo y de la cantidad de datos que haya en el clúster.

1. Las operaciones de lectura y escritura se sirven ahora utilizando el nuevo clúster. Puesto que los puntos de conexión del nuevo clúster son los mismos que los que había en el clúster anterior, no es necesario actualizar los puntos de conexión de su aplicación. Observará una breve interrupción (algunos segundos) de las operaciones de lectura y escritura del nodo primario mientras se actualiza la entrada de DNS.

1. ElastiCache elimina el clúster anterior. Observará una breve interrupción (unos segundos) de las operaciones de lectura y escritura del nodo anterior porque se desconectarán las conexiones con el nodo anterior. 

**nota**  
Para los clústeres que ejecutan el tipo de nodo r6gd, solo puede escalar a tamaños de nodo dentro de la familia de nodos r6gd.

Tal y como se muestra en la siguiente tabla, la operación de escalado vertical de Valkey o Redis OSS se bloqueará si tiene una actualización de motor programada para el próximo periodo de mantenimiento. Para obtener más información acerca de los periodos de mantenimiento, consulte [Administración del mantenimiento de clústeres de ElastiCache](maintenance-window.md).


**Operaciones bloqueadas de Valkey o Redis OSS**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/scaling-redis-classic.html)

Si hay una operación pendiente que esté bloqueando, tiene las siguientes opciones.
+ Programe la operación de escalado vertical de Valkey o Redis OSS para el siguiente periodo de mantenimiento desactivando la casilla de verificación **Aplicar inmediatamente** (en la CLI: use `--no-apply-immediately`, en la API: use `ApplyImmediately=false`).
+ Espere al siguiente periodo de mantenimiento (o después) para realizar la operación de escalado vertical de Valkey o Redis OSS.
+ Añada la actualización del motor de Valkey o Redis OSS a esta modificación de clúster con la casilla de verificación **Aplicar inmediatamente** activada (en la CLI, use `--apply-immediately` y en la API, `ApplyImmediately=true`). Esto desbloqueará su operación de ampliación, ya que hará que la actualización del motor se realice inmediatamente.

Puede escalar un clúster de Valkey o Redis OSS (modo de clúster desactivado) de un solo nodo mediante la ElastiCache consola, la o la AWS CLI API. ElastiCache 

**importante**  
Si su grupo de parámetros usa `reserved-memory` para apartar memoria para la capacidad adicional de Valkey o Redis OSS, antes de comenzar el escalado, asegúrese de tener un grupo de parámetros personalizado que reserve la cantidad de memoria adecuada para el nuevo tipo de nodo. De forma alternativa, puede modificar un grupo de parámetros personalizado para que use `reserved-memory-percent` y utilizar ese grupo de parámetros para su nuevo clúster.  
Si va a utilizar `reserved-memory-percent`, esto no es necesario.   
Para obtener más información, consulte [Administración de la memoria reservada para Valkey y Redis OSS](redis-memory-management.md).

#### Escalado vertical de clústeres de Valkey o Redis OSS (modo de clúster deshabilitado) de un solo nodo (consola)
<a name="Scaling.RedisStandalone.ScaleUp.CON"></a>

El siguiente procedimiento describe cómo escalar un clúster de Valkey o Redis OSS de un solo nodo mediante la consola de administración. ElastiCache Durante este proceso, el clúster de Valkey o Redis OSS seguirá atendiendo solicitudes con un tiempo de inactividad mínimo.

**Escalado vertical de un clúster de Valkey o Redis OSS de un solo nodo (consola)**

1. Inicie sesión en la consola Consola de administración de AWS y ábrala en ElastiCache . [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)

1. En el panel de navegación, elija **Clústeres de Valkey o Redis OSS**.

1. En la lista de clústeres, elija el clúster que desee escalar verticalmente (debe ejecutar el motor de Valkey o Redis OSS, no el motor de Valkey o Redis OSS en clúster). 

1. Elija **Modificar**.

1. En el asistente **Modify Cluster**:

   1. Elija el tipo de nodo que desee ampliar en la lista **Node type**.

   1. Si va a utilizar `reserved-memory` para administrar su memoria, en la lista **Parameter Group**, elija el grupo de parámetros personalizado que reserve la cantidad correcta de memoria para su nuevo tipo de nodo.

1. Si desea realizar el proceso de ampliación de forma inmediata, elija el cuadro **Apply immediately**. Si no selecciona el cuadro **Apply immediately**, el proceso de ampliación se realizará durante el siguiente periodo de mantenimiento de este clúster.

1. Elija **Modify** (Modificar).

   Si eligió **Apply immediately (Aplicar inmediatamente)** en el paso anterior, el estado del clúster cambiará a *modifying (en modificación)*. Cuando el estado cambie a *available (disponible)*, la modificación se habrá completado y podrá empezar a utilizar el nuevo clúster.

#### Escalado vertical de clústeres de Valkey o Redis OSS de un solo nodo (AWS CLI)
<a name="Scaling.RedisStandalone.ScaleUp.CLI"></a>

El siguiente procedimiento describe cómo escalar verticalmente un clúster de Valkey o Redis OSS de un solo nodo mediante la AWS CLI. Durante este proceso, el clúster de Valkey o Redis OSS seguirá atendiendo solicitudes con un tiempo de inactividad mínimo.

**Cómo escalar verticalmente un clúster de Valkey o Redis OSS de un solo nodo (AWS CLI)**

1. Determine los tipos de nodos a los que puede escalar ejecutando el AWS CLI`list-allowed-node-type-modifications` comando con el siguiente parámetro.
   + `--cache-cluster-id`

   Para Linux, macOS o Unix:

   ```
   aws elasticache list-allowed-node-type-modifications \
   	    --cache-cluster-id my-cache-cluster-id
   ```

   Para Windows:

   ```
   aws elasticache list-allowed-node-type-modifications ^
   	    --cache-cluster-id my-cache-cluster-id
   ```

   La salida del comando anterior es similar a la siguiente (formato JSON).

   ```
   {
   	    "ScaleUpModifications": [
   	        "cache.m3.2xlarge", 
   	        "cache.m3.large", 
   	        "cache.m3.xlarge", 
   	        "cache.m4.10xlarge", 
   	        "cache.m4.2xlarge", 
   	        "cache.m4.4xlarge", 
   	        "cache.m4.large", 
   	        "cache.m4.xlarge", 
   	        "cache.r3.2xlarge", 
   	        "cache.r3.4xlarge", 
   	        "cache.r3.8xlarge", 
   	        "cache.r3.large", 
   	        "cache.r3.xlarge"
   	    ]
   	       "ScaleDownModifications": [
   	        "cache.t2.micro", 
   	        "cache.t2.small ", 
   	        "cache.t2.medium ",
               "cache.t1.small ",
   	    ], 
   
   	}
   ```

   Para obtener más información consulte [list-allowed-node-type-modifications](https://docs.aws.amazon.com/cli/latest/reference/elasticache/list-allowed-node-type-modifications.html) en la *Referencia de la AWS CLI*.

1. Modifique el clúster existente especificando el clúster que desea ampliarse y el nuevo tipo de nodo, de mayor tamaño, mediante el AWS CLI`modify-cache-cluster` comando y los siguientes parámetros.
   + `--cache-cluster-id`: nombre del clúster que está escalando verticalmente. 
   + `--cache-node-type`: tipo de nodo nuevo al que desea escalar el clúster. Este valor debe ser uno de los tipos de nodos devueltos por el comando `list-allowed-node-type-modifications` en el paso 1.
   + `--cache-parameter-group-name`: [Opcional] Utilice este parámetro si va a utilizar `reserved-memory` para administrar la memoria reservada de su clúster. Especifique un grupo de parámetros de caché personalizado que reserve la cantidad correcta de memoria para el nuevo tipo de nodo. Si va a utilizar `reserved-memory-percent`, puede omitir este parámetro.
   + `--apply-immediately`: hace que el proceso de escalado vertical se aplique de inmediato. Para aplazar el proceso de ampliación al siguiente periodo de mantenimiento del clúster, utilice el parámetro `--no-apply-immediately`.

   Para Linux, macOS o Unix:

   ```
   aws elasticache modify-cache-cluster \
   	    --cache-cluster-id my-redis-cache-cluster \
   	    --cache-node-type cache.m3.xlarge \
   	    --cache-parameter-group-name redis32-m2-xl \
   	    --apply-immediately
   ```

   Para Windows:

   ```
   aws elasticache modify-cache-cluster ^
   	    --cache-cluster-id my-redis-cache-cluster ^
   	    --cache-node-type cache.m3.xlarge ^
   	    --cache-parameter-group-name redis32-m2-xl ^
   	    --apply-immediately
   ```

   La salida del comando anterior es similar a la siguiente (formato JSON).

   ```
   {
   	    "CacheCluster": {
   	        "Engine": "redis", 
   	        "CacheParameterGroup": {
   	            "CacheNodeIdsToReboot": [], 
   	            "CacheParameterGroupName": "default.redis6.x", 
   	            "ParameterApplyStatus": "in-sync"
   	        }, 
   	        "SnapshotRetentionLimit": 1, 
   	        "CacheClusterId": "my-redis-cache-cluster", 
   	        "CacheSecurityGroups": [], 
   	        "NumCacheNodes": 1, 
   	        "SnapshotWindow": "00:00-01:00", 
   	        "CacheClusterCreateTime": "2017-02-21T22:34:09.645Z", 
   	        "AutoMinorVersionUpgrade": true, 
   	        "CacheClusterStatus": "modifying", 
   	        "PreferredAvailabilityZone": "us-west-2a", 
   	        "ClientDownloadLandingPage": "https://console.aws.amazon.com/elasticache/home#client-download:", 
   	        "CacheSubnetGroupName": "default", 
   	        "EngineVersion": "6.0", 
   	        "PendingModifiedValues": {
   	            "CacheNodeType": "cache.m3.2xlarge"
   	        }, 
   	        "PreferredMaintenanceWindow": "tue:11:30-tue:12:30", 
   	        "CacheNodeType": "cache.m3.medium",
   	         "DataTiering": "disabled"
   	    }
   	}
   ```

   Para obtener más información consulte [modify-cache-cluster](https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-cache-cluster.html) en la *Referencia de la AWS CLI*.

1. Si utilizó el`--apply-immediately`, compruebe el estado del nuevo clúster mediante el AWS CLI`describe-cache-clusters` comando con el siguiente parámetro. Cuando el estado cambie a *disponible*, podrá comenzar a usar el nuevo clúster de mayor tamaño.
   + `--cache-cluster-id`: nombre del clúster de Valkey o Redis OSS de un solo nodo. Use este parámetro para describir un clúster determinado en lugar de todos los clústeres.

   ```
   aws elasticache describe-cache-clusters --cache-cluster-id my-redis-cache-cluster
   ```

   Para obtener más información consulte [describe-cache-clusters](https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-cache-clusters.html) en la *Referencia de la AWS CLI*.

#### Ampliación de clústeres OSS (API) de Valkey o Redis de un solo nodo ElastiCache
<a name="Scaling.RedisStandalone.ScaleUp.API"></a>

El siguiente procedimiento describe cómo escalar un clúster OSS de Valkey o Redis de un solo nodo mediante la API. ElastiCache Durante este proceso, el clúster de Valkey o Redis OSS seguirá atendiendo solicitudes con un tiempo de inactividad mínimo.

**Para escalar un clúster OSS (API) de Valkey o Redis de un solo nodo ElastiCache**

1. Determine los tipos de nodos a los que puede escalar ejecutando la `ListAllowedNodeTypeModifications` acción de la ElastiCache API con el siguiente parámetro.
   + `CacheClusterId`: nombre del clúster de Valkey o Redis OSS de un solo nodo que desea escalar verticalmente.

   ```
   https://elasticache.us-west-2.amazonaws.com/
   	   ?Action=ListAllowedNodeTypeModifications
   	   &CacheClusterId=MyRedisCacheCluster
   	   &Version=2015-02-02
   	   &SignatureVersion=4
   	   &SignatureMethod=HmacSHA256
   	   &Timestamp=20150202T192317Z
   	   &X-Amz-Credential=<credential>
   ```

   Para obtener más información, consulta [ListAllowedNodeTypeModifications](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ListAllowedNodeTypeModifications.html) la *referencia de la ElastiCache API de Amazon*.

1. Modifique su clúster existente especificando el clúster que desea ampliarse y el nuevo tipo de nodo, de mayor tamaño, mediante la acción de la `ModifyCacheCluster` ElastiCache API y los siguientes parámetros.
   + `CacheClusterId`: nombre del clúster que está escalando verticalmente.
   + `CacheNodeType`: tipo de nodo nuevo, de mayor tamaño, al que desea escalar verticalmente el clúster. Este valor debe ser uno de los tipos de nodos devueltos por la acción `ListAllowedNodeTypeModifications` en el paso anterior.
   + `CacheParameterGroupName`: [Opcional] Utilice este parámetro si va a utilizar `reserved-memory` para administrar la memoria reservada de su clúster. Especifique un grupo de parámetros de caché personalizado que reserve la cantidad correcta de memoria para el nuevo tipo de nodo. Si va a utilizar `reserved-memory-percent`, puede omitir este parámetro.
   + `ApplyImmediately`: establézcalo en `true` para que el proceso de escalado vertical se realice de inmediato. Para aplazar el proceso de ampliación al siguiente periodo de mantenimiento del clúster, utilice `ApplyImmediately``=false`.

   ```
   https://elasticache.us-west-2.amazonaws.com/
   	   ?Action=ModifyCacheCluster
   	   &ApplyImmediately=true
   	   &CacheClusterId=MyRedisCacheCluster
   	   &CacheNodeType=cache.m3.xlarge
   	   &CacheParameterGroupName redis32-m2-xl
   	   &Version=2015-02-02
   	   &SignatureVersion=4
   	   &SignatureMethod=HmacSHA256
   	   &Timestamp=20150202T192317Z
   	   &X-Amz-Credential=<credential>
   ```

   Para obtener más información, consulta [ModifyCacheCluster](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyCacheCluster.html) la *referencia de la ElastiCache API de Amazon*.

1. Si lo utilizaste `ApplyImmediately``=true`, comprueba el estado del nuevo clúster mediante la `DescribeCacheClusters` acción de la ElastiCache API con el siguiente parámetro. Cuando el estado cambie a *disponible*, podrá comenzar a usar el nuevo clúster de mayor tamaño.
   + `CacheClusterId`: nombre del clúster de Valkey o Redis OSS de un solo nodo. Use este parámetro para describir un clúster determinado en lugar de todos los clústeres.

   ```
   https://elasticache.us-west-2.amazonaws.com/
   	   ?Action=DescribeCacheClusters
   	   &CacheClusterId=MyRedisCacheCluster
   	   &Version=2015-02-02
   	   &SignatureVersion=4
   	   &SignatureMethod=HmacSHA256
   	   &Timestamp=20150202T192317Z
   	   &X-Amz-Credential=<credential>
   ```

   Para obtener más información, consulta [DescribeCacheClusters](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeCacheClusters.html) la *referencia de la ElastiCache API de Amazon*.

### Reducción vertical de clústeres de Valkey o Redis OSS de un solo nodo
<a name="Scaling.RedisStandalone.ScaleDown"></a>

En las secciones siguientes, se muestra cómo reducir verticalmente un clúster de Valkey o Redis OSS de un solo nodo a un tipo de nodo más pequeño. Para el éxito a largo plazo de su nuevo clúster de Valkey o Redis OSS, es importante asegurarse de que el nuevo tipo de nodo más pequeño sea lo suficientemente grande para alojar todos los datos, además de asumir la sobrecarga de Valkey o Redis OSS. Para obtener más información, consulte [Forma de garantizar que dispone de memoria suficiente para crear una instantánea de Valkey o Redis OSS](BestPractices.BGSAVE.md).

**nota**  
Para los clústeres que ejecutan el tipo de nodo r6gd, solo puede escalar a tamaños de nodo dentro de la familia de nodos r6gd.

**Topics**
+ [Reducción vertical de clústeres de Valkey o Redis OSS de un solo nodo (consola)](#Scaling.RedisStandalone.ScaleDown.CON)
+ [Reducción vertical de clústeres de Valkey o Redis OSS de un solo nodo (AWS CLI)](#Scaling.RedisStandalone.ScaleUpDown-Modify.CLI)
+ [Reducir el tamaño de los clústeres OSS (API) de Valkey o Redis de un solo nodo ElastiCache](#Scaling.RedisStandalone.ScaleDown.API)

#### Reducción vertical de clústeres de Valkey o Redis OSS de un solo nodo (consola)
<a name="Scaling.RedisStandalone.ScaleDown.CON"></a>

El siguiente procedimiento le explica cómo escalar su clúster OSS de Valkey o Redis de un solo nodo a un tipo de nodo más pequeño mediante la consola. ElastiCache 

**importante**  
Si su grupo de parámetros usa `reserved-memory` para apartar memoria para la capacidad adicional de Valkey o Redis OSS, antes de comenzar el escalado, asegúrese de tener un grupo de parámetros personalizado que reserve la cantidad de memoria adecuada para el nuevo tipo de nodo. De forma alternativa, puede modificar un grupo de parámetros personalizado para que use `reserved-memory-percent` y utilizar ese grupo de parámetros para su nuevo clúster.  
Si va a utilizar `reserved-memory-percent`, esto no es necesario.   
Para obtener más información, consulte [Administración de la memoria reservada para Valkey y Redis OSS](redis-memory-management.md).

**Reducción vertical de un clúster de Valkey o Redis OSS de un solo nodo (consola)**

1. Asegúrese de que el tipo de nodo más pequeño es adecuado para sus necesidades de datos y de capacidad adicional. 

1. Si su grupo de parámetros usa `reserved-memory` para apartar memoria para la sobrecarga de Valkey o Redis OSS, asegúrese de tener un grupo de parámetros personalizado que aparte la cantidad de memoria adecuada para el nuevo tipo de nodo.

   De forma alternativa, puede modificar su grupo de parámetros personalizado para utilizar `reserved-memory-percent`. Para obtener más información, consulte [Administración de la memoria reservada para Valkey y Redis OSS](redis-memory-management.md).

1. Inicie sesión en Consola de administración de AWS y abra la consola en ElastiCache . [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)

1. En la lista de clústeres, seleccione el clúster que desee reducir. Este clúster debe ejecutar el motor de Valkey o Redis OSS y no el motor de Valkey o Redis OSS en clúster.

1. Elija **Modificar**.

1. En el asistente **Modify Cluster**:

   1. Elija el tipo de nodo que desee reducir en la lista **Node type (Tipo de nodo)**.

   1. Si va a utilizar `reserved-memory` para administrar su memoria, en la lista **Parameter Group**, elija el grupo de parámetros personalizado que reserve la cantidad correcta de memoria para su nuevo tipo de nodo.

1. Si desea realizar el proceso de reducción de forma inmediata, elija la casilla de verificación **Apply immediately (Aplicar inmediatamente)**. Si no se deja seleccionada la casilla de verificación **Apply immediately (Aplicar inmediatamente)**, el proceso de reducción se realizará durante el siguiente periodo de mantenimiento de este clúster.

1. Elija **Modificar**.

1. Cuando el estado del clúster cambie de *modifying* a *available*, el clúster se habrá escalado al nuevo tipo de nodo. No es necesario actualizar los puntos de enlace de su aplicación.

#### Reducción vertical de clústeres de Valkey o Redis OSS de un solo nodo (AWS CLI)
<a name="Scaling.RedisStandalone.ScaleUpDown-Modify.CLI"></a>

El siguiente procedimiento describe cómo reducir verticalmente un clúster de Valkey o Redis OSS de un solo nodo mediante la AWS CLI. 

**Cómo reducir verticalmente un clúster de Valkey o Redis OSS de un solo nodo (AWS CLI)**

1. Determine los tipos de nodos a los que puede reducir la escala ejecutando el AWS CLI`list-allowed-node-type-modifications` comando con el siguiente parámetro.
   + `--cache-cluster-id`

   Para Linux, macOS o Unix:

   ```
   aws elasticache list-allowed-node-type-modifications \
   	    --cache-cluster-id my-cache-cluster-id
   ```

   Para Windows:

   ```
   aws elasticache list-allowed-node-type-modifications ^
   	    --cache-cluster-id my-cache-cluster-id
   ```

   La salida del comando anterior es similar a la siguiente (formato JSON).

   ```
   {
   	    "ScaleUpModifications": [
   	        "cache.m3.2xlarge", 
   	        "cache.m3.large", 
   	        "cache.m3.xlarge", 
   	        "cache.m4.10xlarge", 
   	        "cache.m4.2xlarge", 
   	        "cache.m4.4xlarge", 
   	        "cache.m4.large", 
   	        "cache.m4.xlarge", 
   	        "cache.r3.2xlarge", 
   	        "cache.r3.4xlarge", 
   	        "cache.r3.8xlarge", 
   	        "cache.r3.large", 
   	        "cache.r3.xlarge"
   	    ]
   	       "ScaleDownModifications": [
   	        "cache.t2.micro", 
   	        "cache.t2.small ", 
   	        "cache.t2.medium ",
               "cache.t1.small ",
   	    ], 
   
   	}
   ```

   Para obtener más información consulte [list-allowed-node-type-modifications](https://docs.aws.amazon.com/cli/latest/reference/elasticache/list-allowed-node-type-modifications.html) en la *Referencia de la AWS CLI*.

1. Modifique el clúster existente especificando el clúster que desea reducir y el nuevo tipo de nodo más pequeño mediante el AWS CLI`modify-cache-cluster` comando y los siguientes parámetros.
   + `--cache-cluster-id`: nombre del clúster que está reduciendo verticalmente. 
   + `--cache-node-type`: tipo de nodo nuevo al que desea escalar el clúster. Este valor debe ser uno de los tipos de nodos devueltos por el comando `list-allowed-node-type-modifications` en el paso 1.
   + `--cache-parameter-group-name`: [Opcional] Utilice este parámetro si va a utilizar `reserved-memory` para administrar la memoria reservada de su clúster. Especifique un grupo de parámetros de caché personalizado que reserve la cantidad correcta de memoria para el nuevo tipo de nodo. Si va a utilizar `reserved-memory-percent`, puede omitir este parámetro.
   + `--apply-immediately`: hace que el proceso de reducción vertical se aplique de inmediato. Para aplazar el proceso de ampliación al siguiente periodo de mantenimiento del clúster, utilice el parámetro `--no-apply-immediately`.

   Para Linux, macOS o Unix:

   ```
   aws elasticache modify-cache-cluster \
   	    --cache-cluster-id my-redis-cache-cluster \
   	    --cache-node-type cache.m3.xlarge \
   	    --cache-parameter-group-name redis32-m2-xl \
   	    --apply-immediately
   ```

   Para Windows:

   ```
   aws elasticache modify-cache-cluster ^
   	    --cache-cluster-id my-redis-cache-cluster ^
   	    --cache-node-type cache.m3.xlarge ^
   	    --cache-parameter-group-name redis32-m2-xl ^
   	    --apply-immediately
   ```

   La salida del comando anterior es similar a la siguiente (formato JSON).

   ```
   {
   	    "CacheCluster": {
   	        "Engine": "redis", 
   	        "CacheParameterGroup": {
   	            "CacheNodeIdsToReboot": [], 
   	            "CacheParameterGroupName": "default.redis6,x", 
   	            "ParameterApplyStatus": "in-sync"
   	        }, 
   	        "SnapshotRetentionLimit": 1, 
   	        "CacheClusterId": "my-redis-cache-cluster", 
   	        "CacheSecurityGroups": [], 
   	        "NumCacheNodes": 1, 
   	        "SnapshotWindow": "00:00-01:00", 
   	        "CacheClusterCreateTime": "2017-02-21T22:34:09.645Z", 
   	        "AutoMinorVersionUpgrade": true, 
   	        "CacheClusterStatus": "modifying", 
   	        "PreferredAvailabilityZone": "us-west-2a", 
   	        "ClientDownloadLandingPage": "https://console.aws.amazon.com/elasticache/home#client-download:", 
   	        "CacheSubnetGroupName": "default", 
   	        "EngineVersion": "6.0", 
   	        "PendingModifiedValues": {
   	            "CacheNodeType": "cache.m3.2xlarge"
   	        }, 
   	        "PreferredMaintenanceWindow": "tue:11:30-tue:12:30", 
   	        "CacheNodeType": "cache.m3.medium",
   	         "DataTiering": "disabled"
   	    }
   	}
   ```

   Para obtener más información consulte [modify-cache-cluster](https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-cache-cluster.html) en la *Referencia de la AWS CLI*.

1. Si utilizó el`--apply-immediately`, compruebe el estado del nuevo clúster mediante el AWS CLI`describe-cache-clusters` comando con el siguiente parámetro. Cuando el estado cambie a *disponible*, podrá comenzar a usar el nuevo clúster de mayor tamaño.
   + `--cache-cluster-id`: nombre del clúster de Valkey o Redis OSS de un solo nodo. Use este parámetro para describir un clúster determinado en lugar de todos los clústeres.

   ```
   aws elasticache describe-cache-clusters --cache-cluster-id my-redis-cache-cluster
   ```

   Para obtener más información consulte [describe-cache-clusters](https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-cache-clusters.html) en la *Referencia de la AWS CLI*.

#### Reducir el tamaño de los clústeres OSS (API) de Valkey o Redis de un solo nodo ElastiCache
<a name="Scaling.RedisStandalone.ScaleDown.API"></a>

El siguiente procedimiento describe cómo escalar hacia arriba un clúster OSS de Valkey o Redis de un solo nodo mediante la API. ElastiCache 

**Para reducir la escala de un clúster OSS (API) de Valkey o Redis de un solo nodo ElastiCache**

1. Determine los tipos de nodos a los que puede reducir la escala ejecutando la `ListAllowedNodeTypeModifications` acción de la ElastiCache API con el siguiente parámetro.
   + `CacheClusterId`: nombre del clúster de Valkey o Redis OSS de un solo nodo que desea reducir verticalmente.

   ```
   https://elasticache.us-west-2.amazonaws.com/
   	   ?Action=ListAllowedNodeTypeModifications
   	   &CacheClusterId=MyRedisCacheCluster
   	   &Version=2015-02-02
   	   &SignatureVersion=4
   	   &SignatureMethod=HmacSHA256
   	   &Timestamp=20150202T192317Z
   	   &X-Amz-Credential=<credential>
   ```

   Para obtener más información, consulta [ListAllowedNodeTypeModifications](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ListAllowedNodeTypeModifications.html) la *referencia de la ElastiCache API de Amazon*.

1. Modifique su clúster existente especificando el clúster que desea ampliarse y el nuevo tipo de nodo, de mayor tamaño, mediante la acción de la `ModifyCacheCluster` ElastiCache API y los siguientes parámetros.
   + `CacheClusterId`: nombre del clúster que está reduciendo verticalmente.
   + `CacheNodeType`: tipo de nodo nuevo, de mayor tamaño, al que desea reducir verticalmente el clúster. Este valor debe ser uno de los tipos de nodos devueltos por la acción `ListAllowedNodeTypeModifications` en el paso anterior.
   + `CacheParameterGroupName`: [Opcional] Utilice este parámetro si va a utilizar `reserved-memory` para administrar la memoria reservada de su clúster. Especifique un grupo de parámetros de caché personalizado que reserve la cantidad correcta de memoria para el nuevo tipo de nodo. Si va a utilizar `reserved-memory-percent`, puede omitir este parámetro.
   + `ApplyImmediately`: establézcalo en `true` para que el proceso de reducción vertical se realice de inmediato. Para aplazar el proceso de ampliación al siguiente periodo de mantenimiento del clúster, utilice `ApplyImmediately``=false`.

   ```
   https://elasticache.us-west-2.amazonaws.com/
   	   ?Action=ModifyCacheCluster
   	   &ApplyImmediately=true
   	   &CacheClusterId=MyRedisCacheCluster
   	   &CacheNodeType=cache.m3.xlarge
   	   &CacheParameterGroupName redis32-m2-xl
   	   &Version=2015-02-02
   	   &SignatureVersion=4
   	   &SignatureMethod=HmacSHA256
   	   &Timestamp=20150202T192317Z
   	   &X-Amz-Credential=<credential>
   ```

   Para obtener más información, consulta [ModifyCacheCluster](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyCacheCluster.html) la *referencia de la ElastiCache API de Amazon*.

1. Si lo utilizaste `ApplyImmediately``=true`, comprueba el estado del nuevo clúster mediante la `DescribeCacheClusters` acción de la ElastiCache API con el siguiente parámetro. Cuando el estado cambie a *disponible*, puede comenzar con el nuevo clúster de menor tamaño.
   + `CacheClusterId`: nombre del clúster de Valkey o Redis OSS de un solo nodo. Use este parámetro para describir un clúster determinado en lugar de todos los clústeres.

   ```
   https://elasticache.us-west-2.amazonaws.com/
   	   ?Action=DescribeCacheClusters
   	   &CacheClusterId=MyRedisCacheCluster
   	   &Version=2015-02-02
   	   &SignatureVersion=4
   	   &SignatureMethod=HmacSHA256
   	   &Timestamp=20150202T192317Z
   	   &X-Amz-Credential=<credential>
   ```

   Para obtener más información, consulta [DescribeCacheClusters](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeCacheClusters.html) la *referencia de la ElastiCache API de Amazon*.

# Escalado de nodos de réplica para Valkey o Redis OSS (modo de clúster deshabilitado)
<a name="Scaling.RedisReplGrps"></a>

Un clúster de Valkey o Redis OSS con nodos de réplica (lo que se conoce como *grupo de replicación* en la API/CLI) proporciona un alto nivel de disponibilidad a través de la replicación con multi-AZ y la conmutación por error automática habilitadas. Un clúster con nodos de réplica es una recopilación lógica de hasta seis nodos de Valkey o Redis OSS en los que un nodo, el principal, puede atender solicitudes tanto de lectura como de escritura. Todos los demás nodos del clúster son réplicas de solo lectura del principal. Los datos que se escriben en el principal se replican de forma asíncrona en todas las réplicas de lectura del clúster. Puesto que Valkey o Redis OSS (modo de clúster deshabilitado) no admite la partición de los datos entre varios clústeres, cada nodo de un grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) contiene el conjunto de datos de caché completo. Los clústeres de Valkey o Redis OSS (modo de clúster habilitado) admiten la partición de los datos en hasta 500 particiones.

Para cambiar la capacidad de datos de su clúster, debe ampliarlo a un tipo de nodo más grande, o reducirlo a un tipo de nodo más pequeño.

Para cambiar la capacidad de lectura del clúster, agregue más réplicas de lectura, hasta un máximo de 5, o bien elimine réplicas de lectura.

El proceso de ElastiCache ampliación está diseñado para hacer todo lo posible por conservar los datos existentes y requiere una replicación exitosa de Valkey o Redis OSS. Para clústeres de Valkey o Redis OSS con réplicas, recomendamos disponer de suficiente memoria para Valkey o Redis OSS. 

**Topics**
+ [Escalado vertical de clústeres de Valkey o Redis OSS con réplicas](#Scaling.RedisReplGrps.ScaleUp)
+ [Reducción vertical de clústeres de Valkey o Redis OSS con réplicas](#Scaling.RedisReplGrps.ScaleDown)
+ [Aumento de la capacidad de lectura](#Scaling.RedisReplGrps.ScaleOut)
+ [Reducción de la capacidad de lectura](#Scaling.RedisReplGrps.ScaleIn)

**Temas relacionados**
+ [Alta disponibilidad a través de grupos de reproducción](Replication.md)
+ [Replicación: Valkey y Redis OSS en modo de clúster deshabilitado o habilitado](Replication.Redis-RedisCluster.md)
+ [Minimización del tiempo de inactividad en ElastiCache utilizando multi-AZ con Valkey y Redis OSS](AutoFailover.md)
+ [Forma de garantizar que dispone de memoria suficiente para crear una instantánea de Valkey o Redis OSS](BestPractices.BGSAVE.md)

**Topics**
+ [Escalado vertical de clústeres de Valkey o Redis OSS con réplicas](#Scaling.RedisReplGrps.ScaleUp)
+ [Reducción vertical de clústeres de Valkey o Redis OSS con réplicas](#Scaling.RedisReplGrps.ScaleDown)
+ [Aumento de la capacidad de lectura](#Scaling.RedisReplGrps.ScaleOut)
+ [Reducción de la capacidad de lectura](#Scaling.RedisReplGrps.ScaleIn)

## Escalado vertical de clústeres de Valkey o Redis OSS con réplicas
<a name="Scaling.RedisReplGrps.ScaleUp"></a>

Amazon ElastiCache ofrece soporte de consola, CLI y API para escalar su grupo de replicación de Valkey o Redis OSS (modo de clúster deshabilitado) hacia arriba. 

Cuando se inicia el proceso de escalado, ElastiCache hace lo siguiente:

1. Lanza un grupo de reproducción con el nuevo tipo de nodo.

1. Copia todos los datos del nodo principal actual al nuevo nodo principal.

1. Sincroniza las nuevas réplicas de lectura con el nuevo nodo principal.

1. Actualiza los entradas de DNS para que apunten a los nuevos nodos. Por ello, no tiene que actualizar los puntos de enlace de su aplicación. En Valkey 7.2 y versiones posteriores o en Redis OSS 5.0.5 y versiones posteriores, puede escalar clústeres con la conmutación por error habilitada mientras el clúster permanece en línea y atiende solicitudes de entrada. En Redis OSS 4.0.10 y versiones anteriores, puede observar una breve interrupción de las lecturas y escrituras del nodo principal mientras se actualiza la entrada de DNS. 

1. Elimina los nodos antiguos (CLI/API: grupo de reproducción). Observará una breve interrupción (unos segundos) de las operaciones de lectura y escritura de los nodos anteriores porque se desconectarán las conexiones con los nodos anteriores.

El tiempo que tarda este proceso depende de su tipo de nodo y de la cantidad de datos que haya en su clúster.

Tal y como se muestra en la siguiente tabla, la operación de escalado vertical de Valkey o Redis OSS se bloqueará si tiene una actualización de motor programada para el próximo periodo de mantenimiento del clúster.


**Operaciones bloqueadas de Valkey o Redis OSS**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonElastiCache/latest/dg/Scaling.RedisReplGrps.html)

Si hay una operación pendiente que esté bloqueando, tiene las siguientes opciones.
+ Programe la operación de escalado vertical de Valkey o Redis OSS para el siguiente periodo de mantenimiento desactivando la casilla de verificación **Aplicar inmediatamente** (en la CLI: use `--no-apply-immediately`, en la API: use `ApplyImmediately=false`).
+ Espere al siguiente periodo de mantenimiento (o después) para realizar la operación de escalado vertical de Valkey o Redis OSS.
+ Añada la actualización del motor de Valkey o Redis OSS a esta modificación de clúster con la casilla de verificación **Aplicar inmediatamente** activada (en la CLI, use `--apply-immediately` y en la API, `ApplyImmediately=true`). Esto desbloqueará su operación de ampliación, ya que hará que la actualización del motor se realice inmediatamente.

En las siguientes secciones se describe cómo escalar su clúster OSS de Valkey o Redis con réplicas superiores mediante la ElastiCache consola, la API y la AWS CLI API. ElastiCache 

**importante**  
Si su grupo de parámetros usa `reserved-memory` para apartar memoria para la capacidad adicional de Valkey o Redis OSS, antes de comenzar el escalado, asegúrese de tener un grupo de parámetros personalizado que reserve la cantidad de memoria adecuada para el nuevo tipo de nodo. De forma alternativa, puede modificar un grupo de parámetros personalizado para que use `reserved-memory-percent` y utilizar ese grupo de parámetros para su nuevo clúster.  
Si va a utilizar `reserved-memory-percent`, esto no es necesario.   
Para obtener más información, consulte [Administración de la memoria reservada para Valkey y Redis OSS](redis-memory-management.md).

### Escalado vertical de clústeres de Valkey o Redis OSS con réplicas (consola)
<a name="Scaling.RedisReplGrps.ScaleUp.CON"></a>

El tiempo que se tarda en la ampliación a un tipo de nodo más grande varía en función del tipo de nodo y de la cantidad de datos de su clúster actual.

El siguiente proceso escala el clúster con réplicas desde su tipo de nodo actual a un tipo de nodo nuevo y más grande mediante la consola. ElastiCache Durante este proceso, puede haber una breve interrupción en las operaciones de lectura y escritura de otras versiones en el nodo principal mientras se actualiza la entrada de DNS. Es posible que observe un tiempo de inactividad inferior a 1 segundo en los nodos que ejecutan la versión 5.0.6 y posteriores, y de varios segundos en versiones anteriores. 

**Escalado vertical de clústeres de Valkey o Redis OSS con réplicas (consola)**

1. Inicie sesión en la ElastiCache consola Consola de administración de AWS y ábrala en [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. En el panel de navegación, elija **Clústeres de Valkey** o **Clústeres de Redis OSS**.

1. En la lista de clústeres, seleccione el clúster que desea ampliar. Este clúster debe ejecutar el motor de Valkey o Redis OSS y no el motor de Valkey o Redis OSS en clúster.

1. Elija **Modificar**.

1. En el asistente **Modify Cluster**:

   1. Elija el tipo de nodo que desee ampliar en la lista **Node type**. Tenga en cuenta que no todos los tipos de nodos están disponibles para el proceso de reducción.

   1. Si va a utilizar `reserved-memory` para administrar su memoria, en la lista **Parameter Group**, elija el grupo de parámetros personalizado que reserve la cantidad correcta de memoria para su nuevo tipo de nodo.

1. Si desea realizar el proceso de ampliación de forma inmediata, elija la casilla de verificación **Apply immediately**. Si no se deja seleccionada la casilla de verificación **Apply immediately**, el proceso de ampliación se realizará durante el siguiente periodo de mantenimiento de este clúster.

1. Elija **Modificar**.

1. Cuando el estado del clúster cambie de *modifying* a *available*, el clúster se habrá escalado al nuevo tipo de nodo. No es necesario actualizar los puntos de enlace de su aplicación.

### Escalado vertical de un grupo de replicación de Valkey o Redis OSS (AWS CLI)
<a name="Scaling.RedisReplGrps.ScaleUp.CLI"></a>

El siguiente proceso amplía su grupo de reproducción de su tipo de nodo actual a un nuevo tipo de nodo más grande utilizando AWS CLI. Durante este proceso, ElastiCache actualiza las entradas de DNS para que apunten a los nuevos nodos. Por ello, no tiene que actualizar los puntos de enlace de su aplicación. En Valkey 7.2 y versiones posteriores o en Redis OSS 5.0.5 y versiones posteriores, puede escalar clústeres con la conmutación por error habilitada mientras el clúster permanece en línea y atiende solicitudes de entrada. En la versión 4.0.10 y anteriores, puede observar una breve interrupción de las versiones de lectura y escritura del nodo principal mientras se actualiza la entrada de DNS.

El tiempo que se tarda en el escalado vertical a un tipo de nodo más grande varía en función de su tipo de nodo y de la cantidad de datos de su clúster actual.

**Escalado vertical de un grupo de replicación de Valkey o Redis OSS (AWS CLI)**

1. Determine los tipos de nodos a los que puede escalar ejecutando el AWS CLI`list-allowed-node-type-modifications` comando con el siguiente parámetro.
   + `--replication-group-id`: nombre del grupo de replicación. Use este parámetro para describir un determinado grupo de replicación en lugar de todos los grupos de replicación.

   Para Linux, macOS o Unix:

   ```
   aws elasticache list-allowed-node-type-modifications \
   	    --replication-group-id my-repl-group
   ```

   Para Windows:

   ```
   aws elasticache list-allowed-node-type-modifications ^
   	    --replication-group-id my-repl-group
   ```

   La salida de esta operación tiene un aspecto similar al siguiente (formato JSON).

   ```
   {
   	    "ScaleUpModifications": [
   	        "cache.m3.2xlarge", 
   	        "cache.m3.large", 
   	        "cache.m3.xlarge", 
   	        "cache.m4.10xlarge", 
   	        "cache.m4.2xlarge", 
   	        "cache.m4.4xlarge", 
   	        "cache.m4.large", 
   	        "cache.m4.xlarge", 
   	        "cache.r3.2xlarge", 
   	        "cache.r3.4xlarge", 
   	        "cache.r3.8xlarge", 
   	        "cache.r3.large", 
   	        "cache.r3.xlarge"
   	    ]
   	}
   ```

   Para obtener más información consulte [list-allowed-node-type-modifications](https://docs.aws.amazon.com/cli/latest/reference/elasticache/list-allowed-node-type-modifications.html) en la *Referencia de la AWS CLI*.

1. Amplíe su grupo de replicación actual hasta el nuevo tipo de nodo mediante el AWS CLI`modify-replication-group` comando con los siguientes parámetros.
   + `--replication-group-id`: nombre del grupo de replicación.
   + `--cache-node-type`: nuevo tipo de nodo más grande de los clústeres en este grupo de replicación. Este valor debe ser uno de los tipos de instancia devueltos por el comando `list-allowed-node-type-modifications` en el paso anterior.
   + `--cache-parameter-group-name`: [Opcional] Utilice este parámetro si va a utilizar `reserved-memory` para administrar la memoria reservada de su clúster. Especifique un grupo de parámetros de caché personalizado que reserve la cantidad correcta de memoria para el nuevo tipo de nodo. Si va a utilizar `reserved-memory-percent`, puede omitir este parámetro.
   + `--apply-immediately`: hace que el proceso de escalado vertical se aplique de inmediato. Para aplazar la operación de ampliación al siguiente periodo de mantenimiento, utilice `--no-apply-immediately`.

   Para Linux, macOS o Unix:

   ```
   aws elasticache modify-replication-group \
   	    --replication-group-id my-repl-group \
   	    --cache-node-type cache.m3.xlarge \
   	    --cache-parameter-group-name redis32-m3-2xl \
   	    --apply-immediately
   ```

   Para Windows:

   ```
   aws elasticache modify-replication-group ^
   	    --replication-group-id my-repl-group ^
   	    --cache-node-type cache.m3.xlarge ^
   	    --cache-parameter-group-name redis32-m3-2xl \
   	    --apply-immediately
   ```

   La salida de este comando tiene un aspecto similar al siguiente (formato JSON).

   ```
   {
   	"ReplicationGroup": {
   		"Status": "available",
   		"Description": "Some description",
   		"NodeGroups": [{
   			"Status": "available",
   			"NodeGroupMembers": [{
   					"CurrentRole": "primary",
   					"PreferredAvailabilityZone": "us-west-2b",
   					"CacheNodeId": "0001",
   					"ReadEndpoint": {
   						"Port": 6379,
   						"Address": "my-repl-group-001.8fdx4s.0001.usw2.cache.amazonaws.com"
   					},
   					"CacheClusterId": "my-repl-group-001"
   				},
   				{
   					"CurrentRole": "replica",
   					"PreferredAvailabilityZone": "us-west-2c",
   					"CacheNodeId": "0001",
   					"ReadEndpoint": {
   						"Port": 6379,
   						"Address": "my-repl-group-002.8fdx4s.0001.usw2.cache.amazonaws.com"
   					},
   					"CacheClusterId": "my-repl-group-002"
   				}
   			],
   			"NodeGroupId": "0001",
   			"PrimaryEndpoint": {
   				"Port": 6379,
   				"Address": "my-repl-group.8fdx4s.ng.0001.usw2.cache.amazonaws.com"
   			}
   		}],
   		"ReplicationGroupId": "my-repl-group",
   		"SnapshotRetentionLimit": 1,
   		"AutomaticFailover": "disabled",
   		"SnapshotWindow": "12:00-13:00",
   		"SnapshottingClusterId": "my-repl-group-002",
   		"MemberClusters": [
   			"my-repl-group-001",
   			"my-repl-group-002"
   		],
   		"PendingModifiedValues": {}
   	}
   }
   ```

   Para obtener más información consulte [modify-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-replication-group.html) en la *Referencia de la AWS CLI*.

1. Si utilizó el `--apply-immediately` parámetro, supervise el estado del grupo de replicación mediante el AWS CLI`describe-replication-group` comando con el siguiente parámetro. Mientras el estado sea *en modificación*, es posible que observe un tiempo de inactividad de un segundo en los nodos que ejecutan la versión 5.0.6 y posteriores y una breve interrupción de las operaciones de lectura y escritura con las versiones anteriores en el nodo principal mientras se actualiza la entrada de DNS.
   + `--replication-group-id`: nombre del grupo de replicación. Use este parámetro para describir un determinado grupo de replicación en lugar de todos los grupos de replicación.

   Para Linux, macOS o Unix:

   ```
   aws elasticache describe-replication-groups \
   	    --replication-group-id my-replication-group
   ```

   Para Windows:

   ```
   aws elasticache describe-replication-groups ^
   	    --replication-group-id my-replication-group
   ```

   Para obtener más información consulte [describe-replication-groups](https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-replication-groups.html) en la *Referencia de la AWS CLI*.

### Ampliar un grupo de replicación (ElastiCache API) de Valkey o Redis OSS
<a name="Scaling.RedisReplGrps.ScaleUp.API"></a>

El siguiente proceso escala el grupo de replicación desde su tipo de nodo actual a un tipo de nodo nuevo y más grande mediante la ElastiCache API. En Valkey 7.2 y versiones posteriores o en Redis OSS 5.0.5 y versiones posteriores, puede escalar clústeres con la conmutación por error habilitada mientras el clúster permanece en línea y atiende solicitudes de entrada. En Redis OSS 4.0.10 y versiones anteriores, puede observar una breve interrupción de las lecturas y escrituras del nodo principal mientras se actualiza la entrada de DNS.

El tiempo que se tarda en el escalado vertical a un tipo de nodo más grande varía en función de su tipo de nodo y de la cantidad de datos de su clúster actual.

**Para ampliar un grupo de replicación (ElastiCache API) de Valkey o Redis OSS**

1. Determine los tipos de nodos a los que puede escalar mediante la `ListAllowedNodeTypeModifications` acción de la ElastiCache API con el siguiente parámetro.
   + `ReplicationGroupId`: nombre del grupo de replicación. Use este parámetro para describir un grupo de replicación específico en lugar de todos los grupos de replicación.

   ```
   https://elasticache.us-west-2.amazonaws.com/
   	   ?Action=ListAllowedNodeTypeModifications
   	   &ReplicationGroupId=MyReplGroup
   	   &Version=2015-02-02
   	   &SignatureVersion=4
   	   &SignatureMethod=HmacSHA256
   	   &Timestamp=20150202T192317Z
   	   &X-Amz-Credential=<credential>
   ```

   Para obtener más información, consulta [ListAllowedNodeTypeModifications](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ListAllowedNodeTypeModifications.html) la *referencia de la ElastiCache API de Amazon*.

1. Amplíe su grupo de replicación actual hasta el nuevo tipo de nodo mediante la acción de la `ModifyReplicationGroup` ElastiCache API y con los siguientes parámetros.
   + `ReplicationGroupId`: nombre del grupo de replicación.
   + `CacheNodeType`: nuevo tipo de nodo más grande de los clústeres en este grupo de replicación. Este valor debe ser uno de los tipos de instancia devueltos por la acción `ListAllowedNodeTypeModifications` en el paso anterior.
   + `CacheParameterGroupName`: [Opcional] Utilice este parámetro si va a utilizar `reserved-memory` para administrar la memoria reservada de su clúster. Especifique un grupo de parámetros de caché personalizado que reserve la cantidad correcta de memoria para el nuevo tipo de nodo. Si va a utilizar `reserved-memory-percent`, puede omitir este parámetro.
   + `ApplyImmediately`: establézcalo en `true` para que el proceso de escalado vertical se aplique de inmediato. Para aplazar el proceso de ampliación al siguiente periodo de mantenimiento, utilice `ApplyImmediately``=false`.

   ```
   https://elasticache.us-west-2.amazonaws.com/
   	   ?Action=ModifyReplicationGroup
   	   &ApplyImmediately=true
   	   &CacheNodeType=cache.m3.2xlarge
   	   &CacheParameterGroupName=redis32-m3-2xl
   	   &ReplicationGroupId=myReplGroup
   	   &SignatureVersion=4
   	   &SignatureMethod=HmacSHA256
   	   &Timestamp=20141201T220302Z
   	   &Version=2014-12-01
   	   &X-Amz-Algorithm=&AWS;4-HMAC-SHA256
   	   &X-Amz-Date=20141201T220302Z
   	   &X-Amz-SignedHeaders=Host
   	   &X-Amz-Expires=20141201T220302Z
   	   &X-Amz-Credential=<credential>
   	   &X-Amz-Signature=<signature>
   ```

   Para obtener más información, consulta [ModifyReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroup.html) la *referencia de la ElastiCache API de Amazon*.

1. Si lo utilizó `ApplyImmediately``=true`, supervise el estado del grupo de replicación mediante la `DescribeReplicationGroups` acción de la ElastiCache API con los siguientes parámetros. Cuando el estado cambie de *modifying* a *available*, podrá empezar a escribir en su nuevo grupo de replicación ampliado.
   + `ReplicationGroupId`: nombre del grupo de replicación. Use este parámetro para describir un determinado grupo de replicación en lugar de todos los grupos de replicación.

   ```
   https://elasticache.us-west-2.amazonaws.com/
   	   ?Action=DescribeReplicationGroups
   	   &ReplicationGroupId=MyReplGroup
   	   &Version=2015-02-02
   	   &SignatureVersion=4
   	   &SignatureMethod=HmacSHA256
   	   &Timestamp=20150202T192317Z
   	   &X-Amz-Credential=<credential>
   ```

   Para obtener más información, consulta [DescribeReplicationGroups](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeReplicationGroups.html) la *referencia de la ElastiCache API de Amazon*.

## Reducción vertical de clústeres de Valkey o Redis OSS con réplicas
<a name="Scaling.RedisReplGrps.ScaleDown"></a>

En las secciones siguientes, se muestra cómo reducir verticalmente un clúster de Valkey o Redis OSS (modo de clúster deshabilitado) con nodos de réplica a un tipo de nodo más pequeño. Para que el proceso se realice correctamente, es muy importante asegurarse de que el nuevo tipo de nodo más pequeño sea lo suficientemente grande para alojar todos los datos, más la capacidad adicional. Para obtener más información, consulte [Forma de garantizar que dispone de memoria suficiente para crear una instantánea de Valkey o Redis OSS](BestPractices.BGSAVE.md).

**nota**  
Para los clústeres que ejecutan el tipo de nodo r6gd, solo puede escalar a tamaños de nodo dentro de la familia de nodos r6gd.

**importante**  
Si su grupo de parámetros usa `reserved-memory` para apartar memoria para la capacidad adicional de Valkey o Redis OSS, antes de comenzar el escalado, asegúrese de tener un grupo de parámetros personalizado que reserve la cantidad de memoria adecuada para el nuevo tipo de nodo. De forma alternativa, puede modificar un grupo de parámetros personalizado para que use `reserved-memory-percent` y utilizar ese grupo de parámetros para su nuevo clúster.  
Si va a utilizar `reserved-memory-percent`, esto no es necesario.   
Para obtener más información, consulte [Administración de la memoria reservada para Valkey y Redis OSS](redis-memory-management.md).

**Topics**

### Reducción vertical de clústeres de Valkey o Redis OSS con réplicas (consola)
<a name="Scaling.RedisReplGrps.ScaleDown.CON"></a>

El siguiente proceso escala su clúster OSS de Valkey o Redis con nodos de réplica a un tipo de nodo más pequeño mediante la ElastiCache consola.

**Reducción vertical de un clúster de Valkey o Redis OSS con nodos de réplica (consola)**

1. Asegúrese de que el tipo de nodo más pequeño es adecuado para sus necesidades de datos y de capacidad adicional. 

1. Si su grupo de parámetros usa `reserved-memory` para apartar memoria para la sobrecarga de Valkey o Redis OSS, asegúrese de tener un grupo de parámetros personalizado que aparte la cantidad de memoria adecuada para el nuevo tipo de nodo.

   De forma alternativa, puede modificar su grupo de parámetros personalizado para utilizar `reserved-memory-percent`. Para obtener más información, consulte [Administración de la memoria reservada para Valkey y Redis OSS](redis-memory-management.md).

1. Inicie sesión en Consola de administración de AWS y abra la ElastiCache consola en. [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)

1. En la lista de clústeres, seleccione el clúster que desee reducir. Este clúster debe ejecutar el motor de Valkey o Redis OSS y no el motor de Valkey o Redis OSS en clúster.

1. Elija **Modificar**.

1. En el asistente **Modify Cluster**:

   1. Elija el tipo de nodo que desee reducir en la lista **Node type (Tipo de nodo)**.

   1. Si va a utilizar `reserved-memory` para administrar su memoria, en la lista **Parameter Group**, elija el grupo de parámetros personalizado que reserve la cantidad correcta de memoria para su nuevo tipo de nodo.

1. Si desea realizar el proceso de reducción de forma inmediata, elija la casilla de verificación **Apply immediately (Aplicar inmediatamente)**. Si no se deja seleccionada la casilla de verificación **Apply immediately (Aplicar inmediatamente)**, el proceso de reducción se realizará durante el siguiente periodo de mantenimiento de este clúster.

1. Elija **Modificar**.

1. Cuando el estado del clúster cambie de *modifying* a *available*, el clúster se habrá escalado al nuevo tipo de nodo. No es necesario actualizar los puntos de enlace de su aplicación.

### Reducción vertical de un grupo de replicación de Valkey o Redis OSS (AWS CLI)
<a name="Scaling.RedisReplGrps.ScaleUp.CLI"></a>

El siguiente proceso escala su grupo de reproducción de su tipo de nodo actual a un nuevo tipo de nodo más pequeño utilizando AWS CLI. Durante este proceso, ElastiCache actualiza las entradas de DNS para que apunten a los nuevos nodos. Por ello, no tiene que actualizar los puntos de enlace de su aplicación. En Valkey 7.2 y versiones posteriores o en Redis OSS 5.0.5 y versiones posteriores, puede escalar clústeres con la conmutación por error habilitada mientras el clúster permanece en línea y atiende solicitudes de entrada. En la versión 4.0.10 y anteriores, puede observar una breve interrupción de las versiones de lectura y escritura del nodo principal mientras se actualiza la entrada de DNS.

Sin embargo, las lecturas de los clústeres de réplica de lectura continuarán de forma ininterrumpida.

El tiempo que se tarda en la realización del escalado descendente a un tipo de nodo más pequeño varía en función de su tipo de nodo y de la cantidad de datos de su clúster actual.

**Reducción vertical de un grupo de replicación de Valkey o Redis OSS (AWS CLI)**

1. Determine los tipos de nodos a los que puede reducir la escala ejecutando el AWS CLI`list-allowed-node-type-modifications` comando con el siguiente parámetro.
   + `--replication-group-id`: nombre del grupo de replicación. Use este parámetro para describir un determinado grupo de replicación en lugar de todos los grupos de replicación.

   Para Linux, macOS o Unix:

   ```
   aws elasticache list-allowed-node-type-modifications \
   	    --replication-group-id my-repl-group
   ```

   Para Windows:

   ```
   aws elasticache list-allowed-node-type-modifications ^
   	    --replication-group-id my-repl-group
   ```

   La salida de esta operación tiene un aspecto similar al siguiente (formato JSON).

   ```
   {
   	    "ScaleDownModifications": [
   	        "cache.m3.2xlarge", 
   	        "cache.m3.large", 
   	        "cache.m3.xlarge", 
   	        "cache.m4.10xlarge", 
   	        "cache.m4.2xlarge", 
   	        "cache.m4.4xlarge", 
   	        "cache.m4.large", 
   	        "cache.m4.xlarge", 
   	        "cache.r3.2xlarge", 
   	        "cache.r3.4xlarge", 
   	        "cache.r3.8xlarge", 
   	        "cache.r3.large", 
   	        "cache.r3.xlarge"
   	    ]
   	}
   ```

   Para obtener más información consulte [list-allowed-node-type-modifications](https://docs.aws.amazon.com/cli/latest/reference/elasticache/list-allowed-node-type-modifications.html) en la *Referencia de la AWS CLI*.

1. Amplíe su grupo de replicación actual hasta el nuevo tipo de nodo mediante el AWS CLI`modify-replication-group` comando con los siguientes parámetros.
   + `--replication-group-id`: nombre del grupo de replicación.
   + `--cache-node-type`: nuevo tipo de nodo más pequeño de los clústeres en este grupo de replicación. Este valor debe ser uno de los tipos de instancia devueltos por el comando `list-allowed-node-type-modifications` en el paso anterior.
   + `--cache-parameter-group-name`: [Opcional] Utilice este parámetro si va a utilizar `reserved-memory` para administrar la memoria reservada de su clúster. Especifique un grupo de parámetros de caché personalizado que reserve la cantidad correcta de memoria para el nuevo tipo de nodo. Si va a utilizar `reserved-memory-percent`, puede omitir este parámetro.
   + `--apply-immediately`: hace que el proceso de escalado vertical se aplique de inmediato. Para aplazar la operación de ampliación al siguiente periodo de mantenimiento, utilice `--no-apply-immediately`.

   Para Linux, macOS o Unix:

   ```
   aws elasticache modify-replication-group \
   	    --replication-group-id my-repl-group \
   	    --cache-node-type cache.t2.small  \
   	    --cache-parameter-group-name redis32-m3-2xl \
   	    --apply-immediately
   ```

   Para Windows:

   ```
   aws elasticache modify-replication-group ^
   	    --replication-group-id my-repl-group ^
   	    --cache-node-type cache.t2.small  ^
   	    --cache-parameter-group-name redis32-m3-2xl \
   	    --apply-immediately
   ```

   La salida de este comando tiene un aspecto similar al siguiente (formato JSON).

   ```
   {"ReplicationGroup": {
   	        "Status": "available", 
   	        "Description": "Some description", 
   	        "NodeGroups": [
   	            {
   	                "Status": "available", 
   	                "NodeGroupMembers": [
   	                    {
   	                        "CurrentRole": "primary", 
   	                        "PreferredAvailabilityZone": "us-west-2b", 
   	                        "CacheNodeId": "0001", 
   	                        "ReadEndpoint": {
   	                            "Port": 6379, 
   	                            "Address": "my-repl-group-001.8fdx4s.0001.usw2.cache.amazonaws.com"
   	                        }, 
   	                        "CacheClusterId": "my-repl-group-001"
   	                    }, 
   	                    {
   	                        "CurrentRole": "replica", 
   	                        "PreferredAvailabilityZone": "us-west-2c", 
   	                        "CacheNodeId": "0001", 
   	                        "ReadEndpoint": {
   	                            "Port": 6379, 
   	                            "Address": "my-repl-group-002.8fdx4s.0001.usw2.cache.amazonaws.com"
   	                        }, 
   	                        "CacheClusterId": "my-repl-group-002"
   	                    }
   	                ], 
   	                "NodeGroupId": "0001", 
   	                "PrimaryEndpoint": {
   	                    "Port": 6379, 
   	                    "Address": "my-repl-group.8fdx4s.ng.0001.usw2.cache.amazonaws.com"
   	                }
   	            }
   	        ], 
   	        "ReplicationGroupId": "my-repl-group", 
   	        "SnapshotRetentionLimit": 1, 
   	        "AutomaticFailover": "disabled", 
   	        "SnapshotWindow": "12:00-13:00", 
   	        "SnapshottingClusterId": "my-repl-group-002", 
   	        "MemberClusters": [
   	            "my-repl-group-001", 
   	            "my-repl-group-002", 
   	        ], 
   	        "PendingModifiedValues": {}
   	    }
   	}
   ```

   Para obtener más información consulte [modify-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-replication-group.html) en la *Referencia de la AWS CLI*.

1. Si utilizó el `--apply-immediately` parámetro, supervise el estado del grupo de replicación mediante el AWS CLI`describe-replication-group` comando con el siguiente parámetro. Cuando el estado cambie de *modifying* a *available*, podrá empezar a escribir en su nuevo grupo de replicación reducido.
   + `--replication-group-id`: nombre del grupo de replicación. Use este parámetro para describir un determinado grupo de replicación en lugar de todos los grupos de replicación.

   Para Linux, macOS o Unix:

   ```
   aws elasticache describe-replication-group \
   	    --replication-group-id my-replication-group
   ```

   Para Windows:

   ```
   aws elasticache describe-replication-groups ^
   	    --replication-group-id my-replication-group
   ```

   Para obtener más información consulte [describe-replication-groups](https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-replication-groups.html) en la *Referencia de la AWS CLI*.

### Reducir la escala de un grupo de replicación (ElastiCache API) de Valkey o Redis OSS
<a name="Scaling.RedisReplGrps.ScaleDown.API"></a>

El siguiente proceso escala el grupo de replicación desde su tipo de nodo actual a un tipo de nodo nuevo y más pequeño mediante la ElastiCache API. Durante este proceso, ElastiCache actualiza las entradas de DNS para que apunten a los nuevos nodos. Por ello, no tiene que actualizar los puntos de enlace de su aplicación. En Valkey 7.2 y versiones posteriores o en Redis OSS 5.0.5 y versiones posteriores, puede escalar clústeres con la conmutación por error habilitada mientras el clúster permanece en línea y atiende solicitudes de entrada. En Redis OSS 4.0.10 y versiones anteriores, puede observar una breve interrupción de las lecturas y escrituras del nodo principal mientras se actualiza la entrada de DNS. Sin embargo, las lecturas de los clústeres de réplica de lectura continuarán de forma ininterrumpida.

El tiempo que se tarda en la realización del escalado descendente a un tipo de nodo más pequeño varía en función de su tipo de nodo y de la cantidad de datos de su clúster actual.

**Para reducir la escala de un grupo de replicación (ElastiCache API) de OSS de Valkey o Redis**

1. Determine los tipos de nodos a los que puede reducir la escala mediante la `ListAllowedNodeTypeModifications` acción de la ElastiCache API con el siguiente parámetro.
   + `ReplicationGroupId`: nombre del grupo de replicación. Use este parámetro para describir un grupo de replicación específico en lugar de todos los grupos de replicación.

   ```
   https://elasticache.us-west-2.amazonaws.com/
   	   ?Action=ListAllowedNodeTypeModifications
   	   &ReplicationGroupId=MyReplGroup
   	   &Version=2015-02-02
   	   &SignatureVersion=4
   	   &SignatureMethod=HmacSHA256
   	   &Timestamp=20150202T192317Z
   	   &X-Amz-Credential=<credential>
   ```

   Para obtener más información, consulta [ListAllowedNodeTypeModifications](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ListAllowedNodeTypeModifications.html) la *referencia de la ElastiCache API de Amazon*.

1. Amplíe su grupo de replicación actual hasta el nuevo tipo de nodo mediante la acción de la `ModifyReplicationGroup` ElastiCache API y con los siguientes parámetros.
   + `ReplicationGroupId`: nombre del grupo de replicación.
   + `CacheNodeType`: nuevo tipo de nodo más pequeño de los clústeres en este grupo de replicación. Este valor debe ser uno de los tipos de instancia devueltos por la acción `ListAllowedNodeTypeModifications` en el paso anterior.
   + `CacheParameterGroupName`: [Opcional] Utilice este parámetro si va a utilizar `reserved-memory` para administrar la memoria reservada de su clúster. Especifique un grupo de parámetros de caché personalizado que reserve la cantidad correcta de memoria para el nuevo tipo de nodo. Si va a utilizar `reserved-memory-percent`, puede omitir este parámetro.
   + `ApplyImmediately`: establézcalo en `true` para que el proceso de escalado vertical se aplique de inmediato. Para aplazar el proceso de escalado descendente al siguiente periodo de mantenimiento, utilice `ApplyImmediately``=false`.

   ```
   https://elasticache.us-west-2.amazonaws.com/
   	   ?Action=ModifyReplicationGroup
   	   &ApplyImmediately=true
   	   &CacheNodeType=cache.m3.2xlarge
   	   &CacheParameterGroupName=redis32-m3-2xl
   	   &ReplicationGroupId=myReplGroup
   	   &SignatureVersion=4
   	   &SignatureMethod=HmacSHA256
   	   &Timestamp=20141201T220302Z
   	   &Version=2014-12-01
   	   &X-Amz-Algorithm=&AWS;4-HMAC-SHA256
   	   &X-Amz-Date=20141201T220302Z
   	   &X-Amz-SignedHeaders=Host
   	   &X-Amz-Expires=20141201T220302Z
   	   &X-Amz-Credential=<credential>
   	   &X-Amz-Signature=<signature>
   ```

   Para obtener más información, consulta [ModifyReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroup.html) la *referencia de la ElastiCache API de Amazon*.

1. Si lo utilizó `ApplyImmediately``=true`, supervise el estado del grupo de replicación mediante la `DescribeReplicationGroups` acción de la ElastiCache API con los siguientes parámetros. Cuando el estado cambie de *modifying* a *available*, podrá empezar a escribir en su nuevo grupo de replicación reducido.
   + `ReplicationGroupId`: nombre del grupo de replicación. Use este parámetro para describir un determinado grupo de replicación en lugar de todos los grupos de replicación.

   ```
   https://elasticache.us-west-2.amazonaws.com/
   	   ?Action=DescribeReplicationGroups
   	   &ReplicationGroupId=MyReplGroup
   	   &Version=2015-02-02
   	   &SignatureVersion=4
   	   &SignatureMethod=HmacSHA256
   	   &Timestamp=20150202T192317Z
   	   &X-Amz-Credential=<credential>
   ```

   Para obtener más información, consulta [DescribeReplicationGroups](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeReplicationGroups.html) la *referencia de la ElastiCache API de Amazon*.

## Aumento de la capacidad de lectura
<a name="Scaling.RedisReplGrps.ScaleOut"></a>

Para aumentar la capacidad de lectura, añada réplicas de lectura (un máximo de cinco) a su grupo de replicación de Valkey o Redis OSS.

Puede escalar la capacidad de lectura de su clúster OSS de Valkey o Redis mediante la ElastiCache consola AWS CLI, la o la ElastiCache API. Para obtener más información, consulte [Adición de una réplica de lectura para Valkey o Redis OSS (modo de clúster deshabilitado)](Replication.AddReadReplica.md).

## Reducción de la capacidad de lectura
<a name="Scaling.RedisReplGrps.ScaleIn"></a>

Para reducir la capacidad de lectura, elimine una o varias réplicas de lectura de su clúster de Valkey o Redis OSS con réplicas (lo que se conoce como *grupo de replicación* en la API/CLI). Si el clúster tiene habilitado Multi-AZ con conmutación por error automática, no puede eliminar la última réplica de lectura sin deshabilitar primero Multi-AZ. Para obtener más información, consulte [Modificación de un grupo de reproducción](Replication.Modify.md).

Para obtener más información, consulte [Eliminación de una réplica de lectura para Valkey o Redis OSS (modo de clúster deshabilitado)](Replication.RemoveReadReplica.md).

# Escalado de clústeres de Valkey o Redis OSS (modo de clúster habilitado)
<a name="scaling-redis-cluster-mode-enabled"></a>

A medida que cambie la demanda en los clústeres, puede decidir mejorar el rendimiento o reducir los costos al cambiar el número de particiones en su clúster de Valkey o Redis OSS (modo de clúster habilitado). Recomendamos que utilice el escalado horizontal online, ya que permite que el clúster continúe sirviendo las solicitudes durante el proceso de escalado.

Entre las condiciones en las que puede decidir cambiar el escalado de su clúster se incluyen las siguientes:
+ **Presión de memoria:**

  Si los nodos del clúster tienen presión de la memoria, puede decidir realizar un escalado ascendente para tener más recursos con el fin de almacenar los datos y servir las solicitudes mejor.

  Puede determinar si sus nodos están bajo presión de memoria supervisando las siguientes métricas: *FreeableMemory*SwapUsage**, y *BytesUsedForCache*.
+ **Cuello de botella de CPU o de red:**

  Si tu clúster está plagado de latency/throughput problemas, es posible que tengas que ampliarlo para resolverlos.

  Puede supervisar sus niveles de latencia y rendimiento supervisando las siguientes métricas: *CPUUtilization*,, *NetworkBytesIn*NetworkBytesOut*CurrConnections***, y. *NewConnections*
+ **El escalado del clúster es excesivo:**

  La demanda actual en su clúster es tal que el escalado descendente no afecta al rendimiento y reduce los costos.

  Puede supervisar el uso del clúster para determinar si puede ampliarlo de forma segura utilizando las siguientes métricas: *FreeableMemory*, *SwapUsage*, *BytesUsedForCache*CPUUtilization**, *NetworkBytesIn*, *NetworkBytesOut*CurrConnections**, y *NewConnections*.

**Impacto de rendimiento del escalado**  
Cuando escala utilizando el proceso sin conexión, el clúster no está en línea durante una parte importante del proceso y, por tanto, no puede atender las solicitudes. Cuando escala utilizando el método online, como el escalado es una operación que realiza un uso intensivo de computación, se deteriora algo el rendimiento, aunque el clúster sigue atendiendo las solicitudes en toda la operación de escalado. El nivel de deterioro de la experiencia depende del uso normal de la CPU y sus datos.

Existen dos formas de escalar el clúster de Valkey o Redis OSS (modo de clúster deshabilitado): el escalado horizontal y vertical.
+ El escalado horizontal le permite cambiar el número de grupos de nodo (fragmentos) en el grupo de reproducción agregando o eliminando grupos de nodos (fragmentos). El proceso de refragmentación en línea permite escalar in/out mientras el clúster sigue atendiendo las solicitudes entrantes. 

  Configurar las ranuras en el nuevo clúster de forma diferente que en el clúster anterior. Solo método sin conexión.
+ Escalado vertical: cambie el tipo de nodo para cambiar el tamaño del clúster. El escalado vertical en línea permite el escalado up/down mientras el clúster continúa atendiendo las solicitudes entrantes.

Si reduce el tamaño y la capacidad de memoria del clúster mediante la reducción horizontal o vertical, asegúrese de que la nueva configuración disponga de memoria suficiente para sus datos y para asumir la sobrecarga de Valkey o Redis OSS. 

Para obtener más información, consulte [Elección del tamaño del nodo](CacheNodes.SelectSize.md).

**Contents**
+ [Cambio de particiones sin conexión para Valkey o Redis OSS (modo de clúster habilitado)](#redis-cluster-resharding-offline)
+ [Cambio de particiones en línea para Valkey o Redis OSS (modo de clúster habilitado)](#redis-cluster-resharding-online)
  + [Adición de particiones con los cambios de particiones en línea](#redis-cluster-resharding-online-add)
  + [Eliminación de particiones con los cambios de particiones en línea](#redis-cluster-resharding-online-remove)
    + [Eliminación de particiones (consola)](#redis-cluster-resharding-online-remove-console)
    + [Eliminación de particiones (AWS CLI)](#redis-cluster-resharding-online-remove-cli)
    + [Eliminar fragmentos (API) ElastiCache](#redis-cluster-resharding-online-remove-api)
  + [Reequilibrado de particiones en línea](#redis-cluster-resharding-online-rebalance)
    + [Reequilibrado de fragmentos online (consola)](#redis-cluster-resharding-online-rebalance-console)
    + [Reequilibrado de particiones en línea (AWS CLI)](#redis-cluster-resharding-online-rebalance-cli)
    + [Reequilibrio de particiones en línea (API) ElastiCache](#redis-cluster-resharding-online-rebalance-api)
+ [Escalado vertical en línea mediante la modificación del tipo de nodo](redis-cluster-vertical-scaling.md)
  + [Escalado vertical en línea](redis-cluster-vertical-scaling.md#redis-cluster-vertical-scaling-scaling-up)
    + [Escalado vertical de clústeres de Valkey o Redis OSS (consola)](redis-cluster-vertical-scaling.md#redis-cluster-vertical-scaling-console)
    + [Escalado vertical de clústeres de Valkey o Redis OSS (AWS CLI)](redis-cluster-vertical-scaling.md#Scaling.RedisStandalone.ScaleUp.CLI)
    + [Ampliar los clústeres OSS (ElastiCache API) de Valkey o Redis](redis-cluster-vertical-scaling.md#VeticalScaling.RedisReplGrps.ScaleUp.API)
  + [Reducción vertical en línea](redis-cluster-vertical-scaling.md#redis-cluster-vertical-scaling-scaling-down)
    + [Reducción vertical de clústeres de Valkey o Redis OSS (consola)](redis-cluster-vertical-scaling.md#redis-cluster-vertical-scaling-down-console)
    + [Reducción vertical de clústeres de Valkey o Redis OSS (AWS CLI)](redis-cluster-vertical-scaling.md#Scaling.RedisStandalone.ScaleDown.CLI)
    + [Reducir la escala de los clústeres OSS (ElastiCache API) de Valkey o Redis](redis-cluster-vertical-scaling.md#Scaling.Vertical.ScaleDown.API)

## Cambio de particiones sin conexión para Valkey o Redis OSS (modo de clúster habilitado)
<a name="redis-cluster-resharding-offline"></a>

La ventaja principal que obtiene de la reconfiguración de fragmentos sin conexión es que puede hacer algo más que agregar o eliminar fragmentos de su grupo de reproducción. Al hacer cambios de las particiones y reequilibrios sin conexión, además de cambiar el número de particiones en el grupo de replicación, puede hacer lo siguiente:

**nota**  
Los cambios de particiones sin conexión no se admiten en los clústeres de Valkey o Redis OSS con la organización de datos en niveles habilitada. Para obtener más información, consulte [Organización de datos en niveles en ElastiCache](data-tiering.md).
+ Cambiar el tipo de nodo de su grupo de reproducción.
+ Especificar la zona de disponibilidad de cada nodo del grupo de reproducción.
+ Actualizar a una nueva versión del motor.
+ Especificar el número de nodos de réplica de cada fragmento independientemente.
+ Especificar el espacio de claves de cada fragmento.

La desventaja principal de la reconfiguración de particiones sin conexión es que el clúster está sin conexión al comentar la parte de restauración del proceso y así continuará hasta que actualice los puntos de conexión de la aplicación. El tiempo que el clúster está sin conexión varía según la cantidad de datos del clúster.

**Reconfiguración de las particiones del clúster de Valkey o Redis OSS (modo de clúster habilitado) sin conexión**

1. Cree una copia de seguridad manual del clúster de Valkey o Redis OSS existente. Para obtener más información, consulte [Copias de seguridad manuales](backups-manual.md).

1. Cree un nuevo clúster restaurándolo a partir de esta copia de seguridad. Para obtener más información, consulte [Restauración desde una copia de seguridad a una nueva caché](backups-restoring.md).

1. Actualice los puntos de conexión de la aplicación a los puntos de conexión del nuevo clúster. Para obtener más información, consulte [Búsqueda de puntos de conexión en ElastiCache](Endpoints.md).

## Cambio de particiones en línea para Valkey o Redis OSS (modo de clúster habilitado)
<a name="redis-cluster-resharding-online"></a>

Si utiliza la refragmentación y el reequilibrio de fragmentos en línea con ElastiCache Valkey 7.2 o posterior, o con Redis OSS, versión 3.2.10 o posterior, puede escalar su clúster de Valkey o Redis OSS (activado en modo clúster) de forma dinámica y sin tiempo de inactividad. Este enfoque significa que el clúster puede seguir atendiendo las solicitudes, incluso mientras esté en curso el escalado o el reequilibrado.

Se puede hacer lo siguiente:
+ **Escalado horizontal**: aumente la capacidad de lectura y escritura al añadir particiones (grupos de nodos) a su clúster (grupo de replicación) de Valkey o Redis OSS (modo de clúster habilitado).

  Si agrega uno o varios fragmentos a su grupo de reproducción, el número de nodos de cada nuevo fragmento es el mismo que el número de nodos en el menor de los fragmentos existentes.
+ **Reducción horizontal**: reduzca la capacidad de lectura y escritura, y, por lo tanto, los costos, al eliminar particiones del clúster de Valkey o Redis OSS (modo de clúster habilitado).
+ **Reequilibrio**: mueva los espacios de claves entre las particiones de su clúster de Valkey o Redis OSS (modo de clúster habilitado) de modo que se distribuyan de la manera más uniforme posible entre las particiones.

No puede hacer lo siguiente:
+ **Configurar los fragmentos de forma independiente:**

  No puede especificar el espacio de claves para fragmentos de manera independiente. Para ello, debe utilizar el proceso sin conexión.

En la actualidad, se aplican las siguientes limitaciones a la refragmentación y el reequilibrio en línea: ElastiCache 
+ Estos procesos requieren Valkey 7.2 y versiones posteriores o Redis OSS 3.2.10 o posterior. Para obtener información acerca de la actualización de la versión del motor, consulte [Administración de versiones para ElastiCache](VersionManagement.md).
+ Existen limitaciones con ranuras o espacios de claves y grandes elementos:

  Si alguna de las claves de una partición contiene un elemento grande, la clave no se puede migrar a una partición nueva en el escalado ascendente o el reequilibrado. Esta funcionalidad puede provocar particiones desequilibradas.

  Si alguna de las claves de una partición contiene un elemento grande (elementos mayores que 256 MB después de la serialización), esa partición no se elimina en la reducción horizontal. Esta funcionalidad puede provocar que algunas particiones no se eliminen.
+ Al realizar el escalado ascendente, el número de nodos de cualquier fragmento nuevo es igual al número de nodo del fragmento existente más pequeño.
+ Al realizar el escalado ascendente, las etiquetas que son comunes a todos los fragmentos existentes se copian en los fragmentos nuevos.
+ Al ampliar un clúster de almacenamiento de datos global, no ElastiCache replicará automáticamente las funciones de uno de los nodos existentes a los nuevos nodos. Recomendamos cargar las funciones en las particiones nuevas después de escalar horizontalmente el clúster para que todas las particiones tengan las mismas funciones. 

**nota**  
En el caso ElastiCache de Valkey 7.2 y versiones posteriores, y ElastiCache en las versiones 7 y posteriores de Redis OSS: al escalar el clúster, ElastiCache replicará automáticamente las funciones cargadas en uno de los nodos existentes (seleccionadas al azar) en los nuevos nodos. Si la aplicación usa [funciones](https://valkey.io/topics/functions-intro/), recomendamos cargar todas las funciones en todas las particiones antes de escalar horizontalmente para que el clúster no termine con diferentes definiciones de funciones en distintas particiones.

Para obtener más información, consulte [Cambio de tamaño de clústeres online](best-practices-online-resharding.md).

Puede escalar o reequilibrar horizontalmente sus clústeres de Valkey o Redis OSS (modo de clúster activado) mediante la Consola de administración de AWS, la y la AWS CLI API. ElastiCache 

### Adición de particiones con los cambios de particiones en línea
<a name="redis-cluster-resharding-online-add"></a>

Puede añadir fragmentos a su clúster de OSS (modo de clúster activado) de Valkey o Redis mediante la, o la API.Consola de administración de AWSAWS CLI ElastiCache Al añadir particiones a un clúster de Valkey o Redis OSS (modo de clúster habilitado), las etiquetas en las particiones existentes se copian sobre las particiones nuevas.

**Topics**

#### Adición de particiones (consola)
<a name="redis-cluster-resharding-online-add-console"></a>

Puede utilizar el Consola de administración de AWS para añadir uno o más fragmentos a su clúster OSS (modo de clúster activado) de Valkey o Redis. El siguiente procedimiento describe el proceso.

**Adición de particiones a su clúster de Valkey o Redis OSS (modo de clúster habilitado)**

1. Abra la consola en ElastiCache . [https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)

1. En el panel de navegación, elija **Clústeres de Valkey** o **Clústeres de Redis OSS**.

1. Localice y elija el nombre del clúster de Valkey o Redis OSS (modo de clúster habilitado) al que desea añadir particiones, pero no la casilla situada a la izquierda del nombre del clúster.
**sugerencia**  
En Valkey o Redis OSS (modo de clúster habilitado), aparecerá **Valkey en clúster** o **Redis OSS en clúster** en la columna **Modo**

1. Elija **Add shards** (Agregar fragmentos).

   1. Para **Number of shards to be added**, elija el número de fragmentos que desee agregar a este clúster.

   1. En **Availability zone(s)**, elija **No preference** o **Specify availability zones**.

   1. Si ha elegido **Specify availability zones**, por cada nodo de cada fragmento, seleccione la zona de disponibilidad del nodo en la lista de zonas de disponibilidad.

   1. Elija **Añadir**.

#### Adición de particiones (AWS CLI)
<a name="redis-cluster-resharding-online-add-cli"></a>

En el siguiente proceso, se describe cómo reconfigurar las particiones en su clúster de Valkey o Redis OSS (modo de clúster habilitado) al añadir particiones mediante la AWS CLI.

Use los siguientes parámetros con `modify-replication-group-shard-configuration`.

**Parameters**
+ `--apply-immediately`: obligatorio. Especifica que la operación de reconfiguración de fragmentos comience inmediatamente.
+ `--replication-group-id`: obligatorio. Especifica en qué grupo de replicación (clúster) se debe realizar la operación de reconfiguración de fragmentos.
+ `--node-group-count`: obligatorio. Especifica el número de fragmentos (grupos de nodos) que deben existir cuando se complete la operación. Al añadir fragmentos, el valor de `--node-group-count` debe ser mayor que el número actual de fragmentos.

  Si lo desea, puede especificar la zona de disponibilidad de cada nodo en el grupo de replicación con `--resharding-configuration`.
+ `--resharding-configuration`: opcional. Una lista de zonas de disponibilidad preferidas para cada nodo en cada fragmento en el grupo de replicación. Utilice este parámetro solo si el valor de `--node-group-count` es mayor que el número actual de fragmentos. Si se omite este parámetro al añadir fragmentos, Amazon ElastiCache selecciona las zonas de disponibilidad para los nuevos nodos.

En el siguiente ejemplo, se reconfiguran los espacios de claves en cuatro particiones en el clúster de Valkey o Redis OSS (modo de clúster habilitado) denominado `my-cluster`. El ejemplo también especifica la zona de disponibilidad de cada nodo en cada fragmento. La operación comienza inmediatamente.

**Example - Adición de fragmentos**  
Para Linux, macOS o Unix:  

```
aws elasticache modify-replication-group-shard-configuration \
    --replication-group-id my-cluster \
    --node-group-count 4 \
    --resharding-configuration \
        "PreferredAvailabilityZones=us-east-2a,us-east-2c" \
        "PreferredAvailabilityZones=us-east-2b,us-east-2a" \
        "PreferredAvailabilityZones=us-east-2c,us-east-2d" \
        "PreferredAvailabilityZones=us-east-2d,us-east-2c" \
    --apply-immediately
```
Para Windows:  

```
aws elasticache modify-replication-group-shard-configuration ^
    --replication-group-id my-cluster ^
    --node-group-count 4 ^
    --resharding-configuration ^
        "PreferredAvailabilityZones=us-east-2a,us-east-2c" ^
        "PreferredAvailabilityZones=us-east-2b,us-east-2a" ^
        "PreferredAvailabilityZones=us-east-2c,us-east-2d" ^
        "PreferredAvailabilityZones=us-east-2d,us-east-2c" ^
    --apply-immediately
```

Para obtener más información, consulte [modify-replication-group-shard-configuration en la documentación](https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-replication-group-shard-configuration.html).AWS CLI

#### Añadir fragmentos (API) ElastiCache
<a name="redis-cluster-resharding-online-add-api"></a>

Puede usar la ElastiCache API para reconfigurar los fragmentos de su clúster OSS (modo de clúster habilitado) de Valkey o Redis en línea mediante la operación. `ModifyReplicationGroupShardConfiguration`

Use los siguientes parámetros con `ModifyReplicationGroupShardConfiguration`.

**Parameters**
+ `ApplyImmediately=true`: obligatorio. Especifica que la operación de reconfiguración de fragmentos comience inmediatamente.
+ `ReplicationGroupId`: obligatorio. Especifica en qué grupo de replicación (clúster) se debe realizar la operación de reconfiguración de fragmentos.
+ `NodeGroupCount`: obligatorio. Especifica el número de fragmentos (grupos de nodos) que deben existir cuando se complete la operación. Al añadir fragmentos, el valor de `NodeGroupCount` debe ser mayor que el número actual de fragmentos.

  Si lo desea, puede especificar la zona de disponibilidad de cada nodo en el grupo de replicación con `ReshardingConfiguration`.
+ `ReshardingConfiguration`: opcional. Una lista de zonas de disponibilidad preferidas para cada nodo en cada fragmento en el grupo de replicación. Utilice este parámetro solo si el valor de `NodeGroupCount` es mayor que el número actual de fragmentos. Si se omite este parámetro al añadir fragmentos, Amazon ElastiCache selecciona las zonas de disponibilidad para los nuevos nodos.

El siguiente proceso describe cómo volver a configurar los fragmentos de su clúster OSS (modo de clúster habilitado) de Valkey o Redis añadiendo fragmentos mediante la API. ElastiCache 

**Example - Adición de fragmentos**  
En el siguiente ejemplo, se añaden grupos de nodos al clúster de Valkey o Redis OSS (modo de clúster habilitado) `my-cluster`, por lo que hay un total de cuatro grupos de nodos cuando se completa la operación. El ejemplo también especifica la zona de disponibilidad de cada nodo en cada fragmento. La operación comienza inmediatamente.  

```
https://elasticache.us-east-2.amazonaws.com/
    ?Action=ModifyReplicationGroupShardConfiguration
    &ApplyImmediately=true
    &NodeGroupCount=4
    &ReplicationGroupId=my-cluster
    &ReshardingConfiguration.ReshardingConfiguration.1.PreferredAvailabilityZones.AvailabilityZone.1=us-east-2a 
    &ReshardingConfiguration.ReshardingConfiguration.1.PreferredAvailabilityZones.AvailabilityZone.2=us-east-2c 
    &ReshardingConfiguration.ReshardingConfiguration.2.PreferredAvailabilityZones.AvailabilityZone.1=us-east-2b 
    &ReshardingConfiguration.ReshardingConfiguration.2.PreferredAvailabilityZones.AvailabilityZone.2=us-east-2a 
    &ReshardingConfiguration.ReshardingConfiguration.3.PreferredAvailabilityZones.AvailabilityZone.1=us-east-2c 
    &ReshardingConfiguration.ReshardingConfiguration.3.PreferredAvailabilityZones.AvailabilityZone.2=us-east-2d 
    &ReshardingConfiguration.ReshardingConfiguration.4.PreferredAvailabilityZones.AvailabilityZone.1=us-east-2d 
    &ReshardingConfiguration.ReshardingConfiguration.4.PreferredAvailabilityZones.AvailabilityZone.2=us-east-2c 
    &Version=2015-02-02
    &SignatureVersion=4
    &SignatureMethod=HmacSHA256
    &Timestamp=20171002T192317Z
    &X-Amz-Credential=<credential>
```

Para obtener más información, consulta la referencia de la API [ModifyReplicationGroupShardConfiguration](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroupShardConfiguration.html). ElastiCache 

### Eliminación de particiones con los cambios de particiones en línea
<a name="redis-cluster-resharding-online-remove"></a>

Puede eliminar fragmentos de su clúster OSS (modo de clúster activado) de Valkey o Redis mediante la API Consola de administración de AWSAWS CLI, o. ElastiCache 

**Topics**
+ [Eliminación de particiones (consola)](#redis-cluster-resharding-online-remove-console)
+ [Eliminación de particiones (AWS CLI)](#redis-cluster-resharding-online-remove-cli)
+ [Eliminar fragmentos (API) ElastiCache](#redis-cluster-resharding-online-remove-api)

#### Eliminación de particiones (consola)
<a name="redis-cluster-resharding-online-remove-console"></a>

En el siguiente proceso, se describe cómo reconfigurar las particiones en su clúster de Valkey o Redis OSS (modo de clúster habilitado) al eliminar particiones mediante la Consola de administración de AWS.

Antes de eliminar grupos de nodos (fragmentos) del grupo de replicación, ElastiCache asegúrese de que todos los datos quepan en los fragmentos restantes. Si los datos caben, los fragmentos especificados se eliminan del grupo de reproducción según lo solicitado. Si los datos no van a caber en los grupos de nodos restantes, el proceso se termina y el grupo de reproducción se deja con la misma configuración de nodo de antes de que se hiciera la solicitud.

Puede utilizarlos Consola de administración de AWS para eliminar uno o más fragmentos de su clúster de Valkey o Redis OSS (modo de clúster activado). No puede eliminar todos los fragmentos de un grupo de replicación. En su lugar, debe eliminar el grupo de reproducción. Para obtener más información, consulte [Eliminación de un grupo de reproducción](Replication.DeletingRepGroup.md). El siguiente procedimiento describe el proceso para eliminar uno o varios fragmentos.

**Eliminación de particiones de su clúster de Valkey o Redis OSS (modo de clúster habilitado)**

1. Abra la consola en ElastiCache . [https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)

1. En el panel de navegación, elija **Clústeres de Valkey** o **Clústeres de Redis OSS**.

1. Localice y elija el nombre del clúster de Valkey o Redis OSS (modo de clúster habilitado) del que desea eliminar particiones, pero no la casilla situada a la izquierda del nombre del clúster.
**sugerencia**  
Los clústeres de Valkey o Redis OSS (modo de clúster habilitado) tienen un valor de 1 o superior en la columna **Particiones**.

1. En la lista de fragmentos, elija la casilla situada a la izquierda del nombre de cada fragmento que desee eliminar.

1. Elija **Delete shard (Eliminar fragmentos)**.

#### Eliminación de particiones (AWS CLI)
<a name="redis-cluster-resharding-online-remove-cli"></a>

En el siguiente proceso, se describe cómo reconfigurar las particiones en su clúster de Valkey o Redis OSS (modo de clúster habilitado) al eliminar particiones mediante la AWS CLI.

**importante**  
Antes de eliminar grupos de nodos (fragmentos) del grupo de replicación, ElastiCache asegúrese de que todos los datos quepan en los fragmentos restantes. Si los datos caben, los fragmentos especificados (`--node-groups-to-remove`) se eliminan del grupo de reproducción según lo solicitado y sus espacios de clave se asignan a los fragmentos restantes. Si los datos no van a caber en los grupos de nodos restantes, el proceso se termina y el grupo de reproducción se deja con la misma configuración de nodo de antes de que se hiciera la solicitud.

Puede utilizarlos AWS CLI para eliminar uno o más fragmentos de su clúster de Valkey o Redis OSS (modo de clúster activado). No puede eliminar todos los fragmentos de un grupo de replicación. En su lugar, debe eliminar el grupo de reproducción. Para obtener más información, consulte [Eliminación de un grupo de reproducción](Replication.DeletingRepGroup.md).

Use los siguientes parámetros con `modify-replication-group-shard-configuration`.

**Parameters**
+ `--apply-immediately`: obligatorio. Especifica que la operación de reconfiguración de fragmentos comience inmediatamente.
+ `--replication-group-id`: obligatorio. Especifica en qué grupo de replicación (clúster) se debe realizar la operación de reconfiguración de fragmentos.
+ `--node-group-count`: obligatorio. Especifica el número de fragmentos (grupos de nodos) que deben existir cuando se complete la operación. Al eliminar fragmentos, el valor de `--node-group-count` debe ser menor que el número actual de fragmentos.

  
+ `--node-groups-to-remove`: obligatorio cuando `--node-group-count` es menor que el número actual de grupos de nodos (particiones). Una lista de fragmentos (grupo de nodos) IDs para eliminarlos del grupo de replicación.

El siguiente procedimiento describe el proceso para eliminar uno o varios fragmentos.

**Example - Eliminación de fragmentos**  
En el siguiente ejemplo, se eliminan dos grupos de nodos del clúster `my-cluster` de Valkey o Redis OSS (modo de clúster habilitado), por lo que hay un total de dos grupos de nodos cuando se completa la operación. Los espacios de claves de los fragmentos eliminados se distribuyen de manera uniforme en los fragmentos restantes.  
Para Linux, macOS o Unix:  

```
aws elasticache modify-replication-group-shard-configuration \
    --replication-group-id my-cluster \
    --node-group-count 2 \
    --node-groups-to-remove "0002" "0003" \
    --apply-immediately
```
Para Windows:  

```
aws elasticache modify-replication-group-shard-configuration ^
    --replication-group-id my-cluster ^
    --node-group-count 2 ^
    --node-groups-to-remove "0002" "0003" ^
    --apply-immediately
```

#### Eliminar fragmentos (API) ElastiCache
<a name="redis-cluster-resharding-online-remove-api"></a>

Puede usar la ElastiCache API para reconfigurar los fragmentos de su clúster OSS (modo de clúster habilitado) de Valkey o Redis en línea mediante la operación. `ModifyReplicationGroupShardConfiguration`

El siguiente proceso describe cómo reconfigurar los fragmentos de su clúster de OSS (modo de clúster habilitado) de Valkey o Redis mediante la eliminación de los fragmentos mediante la API. ElastiCache 

**importante**  
Antes de eliminar grupos de nodos (fragmentos) del grupo de replicación, ElastiCache asegúrese de que todos los datos quepan en los fragmentos restantes. Si los datos caben, los fragmentos especificados (`NodeGroupsToRemove`) se eliminan del grupo de reproducción según lo solicitado y sus espacios de clave se asignan a los fragmentos restantes. Si los datos no van a caber en los grupos de nodos restantes, el proceso se termina y el grupo de reproducción se deja con la misma configuración de nodo de antes de que se hiciera la solicitud.

Puede usar la ElastiCache API para eliminar uno o más fragmentos de su clúster de Valkey o Redis OSS (modo de clúster activado). No puede eliminar todos los fragmentos de un grupo de replicación. En su lugar, debe eliminar el grupo de reproducción. Para obtener más información, consulte [Eliminación de un grupo de reproducción](Replication.DeletingRepGroup.md).

Use los siguientes parámetros con `ModifyReplicationGroupShardConfiguration`.

**Parameters**
+ `ApplyImmediately=true`: obligatorio. Especifica que la operación de reconfiguración de fragmentos comience inmediatamente.
+ `ReplicationGroupId`: obligatorio. Especifica en qué grupo de replicación (clúster) se debe realizar la operación de reconfiguración de fragmentos.
+ `NodeGroupCount`: obligatorio. Especifica el número de fragmentos (grupos de nodos) que deben existir cuando se complete la operación. Al eliminar fragmentos, el valor de `NodeGroupCount` debe ser menor que el número actual de fragmentos.
+ `NodeGroupsToRemove`: obligatorio cuando `--node-group-count` es menor que el número actual de grupos de nodos (particiones). Una lista de fragmentos (grupo de nodos) IDs para eliminarlos del grupo de replicación.

El siguiente procedimiento describe el proceso para eliminar uno o varios fragmentos.

**Example - Eliminación de fragmentos**  
En el siguiente ejemplo, se eliminan dos grupos de nodos del clúster `my-cluster` de Valkey o Redis OSS (modo de clúster habilitado), por lo que hay un total de dos grupos de nodos cuando se completa la operación. Los espacios de claves de los fragmentos eliminados se distribuyen de manera uniforme en los fragmentos restantes.  

```
https://elasticache.us-east-2.amazonaws.com/
    ?Action=ModifyReplicationGroupShardConfiguration
    &ApplyImmediately=true
    &NodeGroupCount=2
    &ReplicationGroupId=my-cluster
    &NodeGroupsToRemove.member.1=0002
    &NodeGroupsToRemove.member.2=0003
    &Version=2015-02-02
    &SignatureVersion=4
    &SignatureMethod=HmacSHA256
    &Timestamp=20171002T192317Z
    &X-Amz-Credential=<credential>
```

### Reequilibrado de particiones en línea
<a name="redis-cluster-resharding-online-rebalance"></a>

Puede reequilibrar los fragmentos de su clúster OSS de Valkey o Redis (activado en modo de clúster) mediante la, o la Consola de administración de AWS API.AWS CLI ElastiCache 

**Topics**
+ [Reequilibrado de fragmentos online (consola)](#redis-cluster-resharding-online-rebalance-console)
+ [Reequilibrado de particiones en línea (AWS CLI)](#redis-cluster-resharding-online-rebalance-cli)
+ [Reequilibrio de particiones en línea (API) ElastiCache](#redis-cluster-resharding-online-rebalance-api)

#### Reequilibrado de fragmentos online (consola)
<a name="redis-cluster-resharding-online-rebalance-console"></a>

En el siguiente proceso, se describe cómo reconfigurar las particiones en su clúster de Valkey o Redis OSS (modo de clúster habilitado) al reequilibrar particiones mediante la Consola de administración de AWS.

**Reequilibrado de espacios de claves entre las particiones de su clúster de Valkey o Redis OSS (modo de clúster habilitado)**

1. Abra la ElastiCache consola en [https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/).

1. En el panel de navegación, elija **Clústeres de Valkey** o **Clústeres de Redis OSS**.

1. Elija el nombre del clúster de Valkey o Redis OSS (modo de clúster habilitado) que desee reequilibrar, pero no la casilla situada a la izquierda del nombre del clúster.
**sugerencia**  
Los clústeres de Valkey o Redis OSS (modo de clúster habilitado) tienen un valor de 1 o superior en la columna **Particiones**.

1. Elija **Rebalance**.

1. Cuando se solicite, elija **Rebalance**. Es posible que veas un mensaje similar a este:*Slots in the replication group are uniformly distributed. Nothing to do. (Service: AmazonElastiCache; Status Code: 400; Error Code: InvalidReplicationGroupState; Request ID: 2246cebd-9721-11e7-8d5b-e1b0f086c8cf)*. Si lo ve, elija **Cancel**.

#### Reequilibrado de particiones en línea (AWS CLI)
<a name="redis-cluster-resharding-online-rebalance-cli"></a>

Use los siguientes parámetros con `modify-replication-group-shard-configuration`.

**Parameters**
+ `-apply-immediately`: obligatorio. Especifica que la operación de reconfiguración de fragmentos comience inmediatamente.
+ `--replication-group-id`: obligatorio. Especifica en qué grupo de replicación (clúster) se debe realizar la operación de reconfiguración de fragmentos.
+ `--node-group-count`: obligatorio. Para reequilibrar los espacios de claves en todos los fragmentos del clúster, este valor debe ser igual que el número de fragmentos.

En el siguiente proceso, se describe cómo reconfigurar las particiones en su clúster de Valkey o Redis OSS (modo de clúster habilitado) al reequilibrar particiones mediante la AWS CLI.

**Example - Reequilibrado de los fragmentos en un clúster**  
En el siguiente ejemplo, se reequilibran las ranuras en el clúster `my-cluster` de Valkey o Redis OSS (modo de clúster habilitado) para que las ranuras se distribuyan del modo más uniforme posible. El valor de `--node-group-count` (`4`) es el número de fragmentos que hay actualmente en el clúster.  
Para Linux, macOS o Unix:  

```
aws elasticache modify-replication-group-shard-configuration \
    --replication-group-id my-cluster \
    --node-group-count 4 \
    --apply-immediately
```
Para Windows:  

```
aws elasticache modify-replication-group-shard-configuration ^
    --replication-group-id my-cluster ^
    --node-group-count 4 ^
    --apply-immediately
```

#### Reequilibrio de particiones en línea (API) ElastiCache
<a name="redis-cluster-resharding-online-rebalance-api"></a>

Puede usar la ElastiCache API para reconfigurar los fragmentos de su clúster OSS (modo de clúster habilitado) de Valkey o Redis en línea mediante la operación. `ModifyReplicationGroupShardConfiguration`

Use los siguientes parámetros con `ModifyReplicationGroupShardConfiguration`.

**Parameters**
+ `ApplyImmediately=true`: obligatorio. Especifica que la operación de reconfiguración de fragmentos comience inmediatamente.
+ `ReplicationGroupId`: obligatorio. Especifica en qué grupo de replicación (clúster) se debe realizar la operación de reconfiguración de fragmentos.
+ `NodeGroupCount`: obligatorio. Para reequilibrar los espacios de claves en todos los fragmentos del clúster, este valor debe ser igual que el número de fragmentos.

El siguiente proceso describe cómo reconfigurar los fragmentos de su clúster de OSS (modo de clúster habilitado) de Valkey o Redis mediante el reequilibrio de los fragmentos mediante la API. ElastiCache 

**Example - Reequilibrado de un clúster**  
En el siguiente ejemplo, se reequilibran las ranuras en el clúster `my-cluster` de Valkey o Redis OSS (modo de clúster habilitado) para que las ranuras se distribuyan del modo más uniforme posible. El valor de `NodeGroupCount` (`4`) es el número de fragmentos que hay actualmente en el clúster.  

```
https://elasticache.us-east-2.amazonaws.com/
    ?Action=ModifyReplicationGroupShardConfiguration
    &ApplyImmediately=true
    &NodeGroupCount=4
    &ReplicationGroupId=my-cluster
    &Version=2015-02-02
    &SignatureVersion=4
    &SignatureMethod=HmacSHA256
    &Timestamp=20171002T192317Z
    &X-Amz-Credential=<credential>
```

# Escalado vertical en línea mediante la modificación del tipo de nodo
<a name="redis-cluster-vertical-scaling"></a>

Al utilizar el escalado vertical en línea con Valkey versión 7.2 o posteriores, o Redis OSS versión 3.2.10 o posteriores, puede escalar sus clústeres de Valkey o Redis OSS dinámicamente con el tiempo de inactividad mínimo. Esto permite que el clúster de Valkey o Redis OSS atienda solicitudes incluso mientras se escala.

**nota**  
No se admite el escalado entre un clúster de organización de datos en niveles (por ejemplo, un clúster que utiliza un tipo de nodo r6gd) y un clúster que no utiliza la organización de datos en niveles (por ejemplo, un clúster que utiliza un tipo de nodo r6g). Para obtener más información, consulte [Organización de datos en niveles en ElastiCache](data-tiering.md).

Se puede hacer lo siguiente:
+ **Escalado vertical**: aumente la capacidad de lectura y escritura ajustando el tipo de nodo del clúster de Valkey o Redis OSS para utilizar un tipo de nodo más grande.

  ElastiCache cambia el tamaño de su clúster de forma dinámica mientras permanece en línea y atiende las solicitudes.
+ **Reducción vertical**: reduzca verticalmente la capacidad de lectura y escritura al ajustar el tipo de nodo para utilizar un nodo más pequeño. De nuevo, cambia el tamaño del clúster de ElastiCache forma dinámica mientras permanece en línea y atiende las solicitudes. En este caso, reduzca los costos reduciendo el tamaño del nodo. 

**nota**  
Los procesos de escalado ascendente y descendente dependen de la creación de clústeres con tipos de nodo seleccionados recientemente y la sincronización de los nuevos nodos con los anteriores. Para garantizar un up/down flujo de escalado fluido, haga lo siguiente:  
Asegúrese de tener suficiente capacidad ENI (Elastic Network Interface, interfaz de red elástica). Si se aplica el escalado descendiente, asegúrese de que el nodo de tamaño más reducido tenga suficiente memoria para absorber el tráfico esperado.   
Consulte [Administración de la memoria reservada para Valkey y Redis OSS](redis-memory-management.md) para conocer las prácticas recomendadas sobre la administración de memoria. 
Aunque el proceso de escalado vertical está diseñado para que sea completamente online, se basa en la sincronización de datos entre el nodo antiguo y el nuevo. Recomendamos que inicie el escalado ascendente/descendente durante las horas en las que espera que el tráfico de datos sea mínimo. 
Pruebe el comportamiento de la aplicación durante el escalado en un entorno de ensayo, si es posible. 

**Contents**
+ [Escalado vertical en línea](#redis-cluster-vertical-scaling-scaling-up)
  + [Escalado vertical de clústeres de Valkey o Redis OSS (consola)](#redis-cluster-vertical-scaling-console)
  + [Escalado vertical de clústeres de Valkey o Redis OSS (AWS CLI)](#Scaling.RedisStandalone.ScaleUp.CLI)
  + [Ampliar los clústeres OSS (ElastiCache API) de Valkey o Redis](#VeticalScaling.RedisReplGrps.ScaleUp.API)
+ [Reducción vertical en línea](#redis-cluster-vertical-scaling-scaling-down)
  + [Reducción vertical de clústeres de Valkey o Redis OSS (consola)](#redis-cluster-vertical-scaling-down-console)
  + [Reducción vertical de clústeres de Valkey o Redis OSS (AWS CLI)](#Scaling.RedisStandalone.ScaleDown.CLI)
  + [Reducir la escala de los clústeres OSS (ElastiCache API) de Valkey o Redis](#Scaling.Vertical.ScaleDown.API)

## Escalado vertical en línea
<a name="redis-cluster-vertical-scaling-scaling-up"></a>

**Topics**
+ [Escalado vertical de clústeres de Valkey o Redis OSS (consola)](#redis-cluster-vertical-scaling-console)
+ [Escalado vertical de clústeres de Valkey o Redis OSS (AWS CLI)](#Scaling.RedisStandalone.ScaleUp.CLI)
+ [Ampliar los clústeres OSS (ElastiCache API) de Valkey o Redis](#VeticalScaling.RedisReplGrps.ScaleUp.API)

### Escalado vertical de clústeres de Valkey o Redis OSS (consola)
<a name="redis-cluster-vertical-scaling-console"></a>

El siguiente procedimiento describe cómo escalar un clúster OSS de Valkey o Redis mediante la consola ElastiCache de administración. Durante este proceso, el clúster seguirá atendiendo solicitudes con un tiempo de inactividad mínimo.

**Escalado vertical de un clúster de Valkey o Redis OSS (consola)**

1. Inicie sesión en la ElastiCache consola Consola de administración de AWS y ábrala en. [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)

1. En el panel de navegación, elija **Clústeres de Valkey** o **Clústeres de Redis OSS**.

1. En la lista de clústeres, elija el clúster. 

1. Elija **Modificar**.

1. En el asistente **Modify Cluster**:

   1. Elija el tipo de nodo que desee ampliar en la lista **Node type**. Para aplicar el escalado ascendente, seleccione un tipo de nodo superior a su nodo existente. 

1. Si desea realizar el proceso de escalado ascendente de forma inmediata, elija el cuadro **Apply immediately** (Aplicar inmediatamente). Si no selecciona el cuadro **Apply immediately**, el proceso de ampliación se realizará durante el siguiente periodo de mantenimiento de este clúster.

1. Elija **Modify** (Modificar).

   Si eligió **Apply immediately (Aplicar inmediatamente)** en el paso anterior, el estado del clúster cambiará a *modifying (en modificación)*. Cuando el estado cambie a *available (disponible)*, la modificación se habrá completado y podrá empezar a utilizar el nuevo clúster.

### Escalado vertical de clústeres de Valkey o Redis OSS (AWS CLI)
<a name="Scaling.RedisStandalone.ScaleUp.CLI"></a>

El siguiente procedimiento describe cómo escalar verticalmente un clúster de Valkey o Redis OSS mediante la AWS CLI. Durante este proceso, el clúster seguirá atendiendo solicitudes con un tiempo de inactividad mínimo.

**Cómo escalar verticalmente un clúster de Valkey o Redis OSS (AWS CLI)**

1. Determine los tipos de nodos a los que puede escalar ejecutando el AWS CLI`list-allowed-node-type-modifications` comando con el siguiente parámetro.

   Para Linux, macOS o Unix:

   ```
   aws elasticache list-allowed-node-type-modifications \
   	    --replication-group-id my-replication-group-id
   ```

   Para Windows:

   ```
   aws elasticache list-allowed-node-type-modifications ^
   	    --replication-group-id my-replication-group-id
   ```

   La salida del comando anterior es similar a la siguiente (formato JSON).

   ```
   {
   	    "ScaleUpModifications": [
   	        "cache.m3.2xlarge", 
   	        "cache.m3.large", 
   	        "cache.m3.xlarge", 
   	        "cache.m4.10xlarge", 
   	        "cache.m4.2xlarge", 
   	        "cache.m4.4xlarge", 
   	        "cache.m4.large", 
   	        "cache.m4.xlarge", 
   	        "cache.r3.2xlarge", 
   	        "cache.r3.4xlarge", 
   	        "cache.r3.8xlarge", 
   	        "cache.r3.large", 
   	        "cache.r3.xlarge"
   	    ]
   	       "ScaleDownModifications": [
   	        "cache.t2.micro", 
   	        "cache.t2.small ", 
   	        "cache.t2.medium",
   	       	"cache.t1.small "
   	    ], 
   }
   ```

   Para obtener más información consulte [list-allowed-node-type-modifications](https://docs.aws.amazon.com/cli/latest/reference/elasticache/list-allowed-node-type-modifications.html) en la *Referencia de la AWS CLI*.

1. Modifique el grupo de replicación para ampliarlo hasta el nuevo tipo de nodo más grande mediante el AWS CLI`modify-replication-group` comando y los siguientes parámetros.
   + `--replication-group-id`: el nombre del grupo de reproducción al que va a escalar verticalmente. 
   + `--cache-node-type`: tipo de nodo nuevo al que desea escalar el clúster. Este valor debe ser uno de los tipos de nodos devueltos por el comando `list-allowed-node-type-modifications` en el paso 1.
   + `--cache-parameter-group-name`: [Opcional] Utilice este parámetro si va a utilizar `reserved-memory` para administrar la memoria reservada de su clúster. Especifique un grupo de parámetros de caché personalizado que reserve la cantidad correcta de memoria para el nuevo tipo de nodo. Si va a utilizar `reserved-memory-percent`, puede omitir este parámetro.
   + `--apply-immediately`: hace que el proceso de escalado vertical se aplique de inmediato. Para aplazar el proceso de ampliación al siguiente periodo de mantenimiento del clúster, utilice el parámetro `--no-apply-immediately`.

   Para Linux, macOS o Unix:

   ```
   aws elasticache modify-replication-group  \
   	    --replication-group-id my-redis-cluster \
   	    --cache-node-type cache.m3.xlarge \	    
   	    --apply-immediately
   ```

   Para Windows:

   ```
   aws elasticache modify-replication-group ^
   	    --replication-group-id my-redis-cluster ^
   	    --cache-node-type cache.m3.xlarge ^	   
   	    --apply-immediately
   ```

   La salida del comando anterior es similar a la siguiente (formato JSON).

   ```
   {
   		"ReplicationGroup": {
           "Status": "modifying",
           "Description": "my-redis-cluster",
           "NodeGroups": [
               {
                   "Status": "modifying",
                   "Slots": "0-16383",
                   "NodeGroupId": "0001",
                   "NodeGroupMembers": [
                       {
                           "PreferredAvailabilityZone": "us-east-1f",
                           "CacheNodeId": "0001",
                           "CacheClusterId": "my-redis-cluster-0001-001"
                       },
                       {
                           "PreferredAvailabilityZone": "us-east-1d",
                           "CacheNodeId": "0001",
                           "CacheClusterId": "my-redis-cluster-0001-002"
                       }
                   ]
               }
           ],
           "ConfigurationEndpoint": {
               "Port": 6379,
               "Address": "my-redis-cluster.r7gdfi.clustercfg.use1.cache.amazonaws.com"
           },
           "ClusterEnabled": true,
           "ReplicationGroupId": "my-redis-cluster",
           "SnapshotRetentionLimit": 1,
           "AutomaticFailover": "enabled",
           "SnapshotWindow": "07:30-08:30",
           "MemberClusters": [
               "my-redis-cluster-0001-001",
               "my-redis-cluster-0001-002"
           ],
           "CacheNodeType": "cache.m3.xlarge",
            "DataTiering": "disabled"
           "PendingModifiedValues": {}
       }
   }
   ```

   Para obtener más información consulte [modify-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-replication-group.html) en la *Referencia de la AWS CLI*.

1. Si utilizó el`--apply-immediately`, compruebe el estado del clúster mediante el AWS CLI`describe-cache-clusters` comando con el siguiente parámetro. Cuando el estado cambie a *disponible*, podrá comenzar a usar el nuevo nodo de clúster de la caché de mayor tamaño.

### Ampliar los clústeres OSS (ElastiCache API) de Valkey o Redis
<a name="VeticalScaling.RedisReplGrps.ScaleUp.API"></a>

El siguiente proceso escala el clúster desde su tipo de nodo actual a un tipo de nodo nuevo y más grande mediante la ElastiCache API. Durante este proceso, ElastiCache actualiza las entradas de DNS para que apunten a los nuevos nodos. Por ello, no tiene que actualizar los puntos de enlace de su aplicación. En Valkey 7.2 y versiones posteriores y en Redis OSS 5.0.5 y versiones posteriores, puede escalar clústeres con la conmutación por error habilitada mientras el clúster permanece en línea y atiende solicitudes de entrada. En Redis OSS 4.0.10 y versiones anteriores, puede observar una breve interrupción de las lecturas y escrituras del nodo principal mientras se actualiza la entrada de DNS.

El tiempo que se tarda en el escalado vertical a un tipo de nodo más grande varía en función de su tipo de nodo y de la cantidad de datos de su clúster actual.

**Para ampliar un clúster de caché OSS (ElastiCache API) de Valkey o Redis**

1. Determine los tipos de nodos a los que puede escalar mediante la `ListAllowedNodeTypeModifications` acción de la ElastiCache API con el siguiente parámetro.
   + `ReplicationGroupId`: nombre del grupo de replicación. Use este parámetro para describir un grupo de replicación específico en lugar de todos los grupos de replicación.

   ```
   https://elasticache.us-west-2.amazonaws.com/
   	   ?Action=ListAllowedNodeTypeModifications
   	   &ReplicationGroupId=MyReplGroup
   	   &Version=2015-02-02
   	   &SignatureVersion=4
   	   &SignatureMethod=HmacSHA256
   	   &Timestamp=20150202T192317Z
   	   &X-Amz-Credential=<credential>
   ```

   Para obtener más información, consulta [ListAllowedNodeTypeModifications](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ListAllowedNodeTypeModifications.html) la *referencia de la ElastiCache API de Amazon*.

1. Amplíe su grupo de replicación actual hasta el nuevo tipo de nodo mediante la acción de la `ModifyReplicationGroup` ElastiCache API y con los siguientes parámetros.
   + `ReplicationGroupId`: nombre del grupo de replicación.
   + `CacheNodeType`: nuevo tipo de nodo más grande de los clústeres en este grupo de replicación. Este valor debe ser uno de los tipos de instancia devueltos por la acción `ListAllowedNodeTypeModifications` en el paso anterior.
   + `CacheParameterGroupName`: [Opcional] Utilice este parámetro si va a utilizar `reserved-memory` para administrar la memoria reservada de su clúster. Especifique un grupo de parámetros de caché personalizado que reserve la cantidad correcta de memoria para el nuevo tipo de nodo. Si va a utilizar `reserved-memory-percent`, puede omitir este parámetro.
   + `ApplyImmediately`: establézcalo en `true` para que el proceso de escalado vertical se aplique de inmediato. Para aplazar el proceso de ampliación al siguiente periodo de mantenimiento, utilice `ApplyImmediately``=false`.

   ```
   https://elasticache.us-west-2.amazonaws.com/
   	   ?Action=ModifyReplicationGroup
   	   &ApplyImmediately=true
   	   &CacheNodeType=cache.m3.2xlarge
   	   &CacheParameterGroupName=redis32-m3-2xl
   	   &ReplicationGroupId=myReplGroup
   	   &SignatureVersion=4
   	   &SignatureMethod=HmacSHA256
   	   &Timestamp=20141201T220302Z
   	   &Version=2014-12-01
   	   &X-Amz-Algorithm=&AWS;4-HMAC-SHA256
   	   &X-Amz-Date=20141201T220302Z
   	   &X-Amz-SignedHeaders=Host
   	   &X-Amz-Expires=20141201T220302Z
   	   &X-Amz-Credential=<credential>
   	   &X-Amz-Signature=<signature>
   ```

   Para obtener más información, consulta [ModifyReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroup.html) la *referencia de la ElastiCache API de Amazon*.

1. Si lo utilizó `ApplyImmediately``=true`, supervise el estado del grupo de replicación mediante la `DescribeReplicationGroups` acción de la ElastiCache API con los siguientes parámetros. Cuando el estado cambie de *modifying* a *available*, podrá empezar a escribir en su nuevo grupo de replicación ampliado.
   + `ReplicationGroupId`: nombre del grupo de replicación. Use este parámetro para describir un determinado grupo de replicación en lugar de todos los grupos de replicación.

   ```
   https://elasticache.us-west-2.amazonaws.com/
   	   ?Action=DescribeReplicationGroups
   	   &ReplicationGroupId=MyReplGroup
   	   &Version=2015-02-02
   	   &SignatureVersion=4
   	   &SignatureMethod=HmacSHA256
   	   &Timestamp=20150202T192317Z
   	   &X-Amz-Credential=<credential>
   ```

   Para obtener más información, consulta [DescribeReplicationGroups](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeReplicationGroups.html) la *referencia de la ElastiCache API de Amazon*.

## Reducción vertical en línea
<a name="redis-cluster-vertical-scaling-scaling-down"></a>

**Topics**
+ [Reducción vertical de clústeres de Valkey o Redis OSS (consola)](#redis-cluster-vertical-scaling-down-console)
+ [Reducción vertical de clústeres de Valkey o Redis OSS (AWS CLI)](#Scaling.RedisStandalone.ScaleDown.CLI)
+ [Reducir la escala de los clústeres OSS (ElastiCache API) de Valkey o Redis](#Scaling.Vertical.ScaleDown.API)

### Reducción vertical de clústeres de Valkey o Redis OSS (consola)
<a name="redis-cluster-vertical-scaling-down-console"></a>

El siguiente procedimiento describe cómo reducir la escala de un clúster OSS de Valkey o Redis mediante la consola ElastiCache de administración. Durante este proceso, el clúster de Valkey o Redis OSS seguirá atendiendo solicitudes con un tiempo de inactividad mínimo.

**Reducción vertical de un clúster de Valkey o Redis OSS (consola)**

1. Inicie sesión en la ElastiCache consola Consola de administración de AWS y ábrala en. [ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)

1. En el panel de navegación, elija **Clústeres de Valkey** o **Clústeres de Redis OSS**.

1. En la lista de clústeres, elija el clúster preferido. 

1. Elija **Modificar**.

1. En el asistente **Modify Cluster**:

   1. Elija el tipo de nodo que desee ampliar en la lista **Node type**. Para aplicar el escalado descendente, seleccione un tipo de nodo inferior a su nodo existente. Tenga en cuenta que no todos los tipos de nodos están disponibles para el proceso de reducción.

1. Si desea realizar el proceso de escalado descendente de forma inmediata, elija el cuadro **Apply immediately** (Aplicar inmediatamente). Si no selecciona el cuadro **Apply immediately** (Aplicar inmediatamente), el proceso de escalado descendente se realizará durante el siguiente periodo de mantenimiento de este clúster.

1. Elija **Modify** (Modificar).

   Si eligió **Apply immediately (Aplicar inmediatamente)** en el paso anterior, el estado del clúster cambiará a *modifying (en modificación)*. Cuando el estado cambie a *available (disponible)*, la modificación se habrá completado y podrá empezar a utilizar el nuevo clúster.

### Reducción vertical de clústeres de Valkey o Redis OSS (AWS CLI)
<a name="Scaling.RedisStandalone.ScaleDown.CLI"></a>

El siguiente procedimiento describe cómo reducir verticalmente un clúster de Valkey o Redis OSS mediante la AWS CLI. Durante este proceso, el clúster seguirá atendiendo solicitudes con un tiempo de inactividad mínimo.

**Cómo reducir verticalmente un clúster de Valkey o Redis OSS (AWS CLI)**

1. Determine los tipos de nodos a los que puede reducir la escala ejecutando el AWS CLI`list-allowed-node-type-modifications` comando con el siguiente parámetro.

   Para Linux, macOS o Unix:

   ```
   aws elasticache list-allowed-node-type-modifications \
   	    --replication-group-id my-replication-group-id
   ```

   Para Windows:

   ```
   aws elasticache list-allowed-node-type-modifications ^
   	    --replication-group-id my-replication-group-id
   ```

   La salida del comando anterior es similar a la siguiente (formato JSON).

   ```
   {
   	    "ScaleUpModifications": [
   	        "cache.m3.2xlarge", 
   	        "cache.m3.large", 
   	        "cache.m3.xlarge", 
   	        "cache.m4.10xlarge", 
   	        "cache.m4.2xlarge", 
   	        "cache.m4.4xlarge", 
   	        "cache.m4.large", 
   	        "cache.m4.xlarge", 
   	        "cache.r3.2xlarge", 
   	        "cache.r3.4xlarge", 
   	        "cache.r3.8xlarge", 
   	        "cache.r3.large", 
   	        "cache.r3.xlarge"
   	    ]
   	
   	       "ScaleDownModifications": [
   	        "cache.t2.micro", 
   	        "cache.t2.small ", 
   	        "cache.t2.medium ",
     	      "cache.t1.small"
   	    ]
   }
   ```

   Para obtener más información consulte [list-allowed-node-type-modifications](https://docs.aws.amazon.com/cli/latest/reference/elasticache/list-allowed-node-type-modifications.html) en la *Referencia de la AWS CLI*.

1. Modifique el grupo de replicación para reducirlo al nuevo tipo de nodo más pequeño mediante el AWS CLI`modify-replication-group` comando y los siguientes parámetros.
   + `--replication-group-id`: el nombre del grupo de reproducción al que va a reducir verticalmente. 
   + `--cache-node-type`: tipo de nodo nuevo al que desea escalar el clúster. Este valor debe ser uno de los tipos de nodos devueltos por el comando `list-allowed-node-type-modifications` en el paso 1.
   + `--cache-parameter-group-name`: [Opcional] Utilice este parámetro si va a utilizar `reserved-memory` para administrar la memoria reservada de su clúster. Especifique un grupo de parámetros de caché personalizado que reserve la cantidad correcta de memoria para el nuevo tipo de nodo. Si va a utilizar `reserved-memory-percent`, puede omitir este parámetro.
   + `--apply-immediately`: hace que el proceso de escalado vertical se aplique de inmediato. Para aplazar el proceso de reducción al siguiente periodo de mantenimiento del clúster, utilice el parámetro `--no-apply-immediately`.

   Para Linux, macOS o Unix:

   ```
   aws elasticache modify-replication-group  \
   	    --replication-group-id my-redis-cluster \
   	    --cache-node-type cache.t2.micro \	    
   	    --apply-immediately
   ```

   Para Windows:

   ```
   aws elasticache modify-replication-group ^
   	    --replication-group-id my-redis-cluster ^
   	    --cache-node-type cache.t2.micro ^	   
   	    --apply-immediately
   ```

   La salida del comando anterior es similar a la siguiente (formato JSON).

   ```
   {	
   		"ReplicationGroup": {
           "Status": "modifying",
           "Description": "my-redis-cluster",
           "NodeGroups": [
               {
                   "Status": "modifying",
                   "Slots": "0-16383",
                   "NodeGroupId": "0001",
                   "NodeGroupMembers": [
                       {
                           "PreferredAvailabilityZone": "us-east-1f",
                           "CacheNodeId": "0001",
                           "CacheClusterId": "my-redis-cluster-0001-001"
                       },
                       {
                           "PreferredAvailabilityZone": "us-east-1d",
                           "CacheNodeId": "0001",
                           "CacheClusterId": "my-redis-cluster-0001-002"
                       }
                   ]
               }
           ],
           "ConfigurationEndpoint": {
               "Port": 6379,
               "Address": "my-redis-cluster.r7gdfi.clustercfg.use1.cache.amazonaws.com"
           },
           "ClusterEnabled": true,
           "ReplicationGroupId": "my-redis-cluster",
           "SnapshotRetentionLimit": 1,
           "AutomaticFailover": "enabled",
           "SnapshotWindow": "07:30-08:30",
           "MemberClusters": [
               "my-redis-cluster-0001-001",
               "my-redis-cluster-0001-002"
           ],
           "CacheNodeType": "cache.t2.micro",
            "DataTiering": "disabled"
           "PendingModifiedValues": {}
       }
   }
   ```

   Para obtener más información consulte [modify-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-replication-group.html) en la *Referencia de la AWS CLI*.

1. Si utilizó el`--apply-immediately`, compruebe el estado del clúster mediante el AWS CLI`describe-cache-clusters` comando con el siguiente parámetro. Cuando el estado cambie a *disponible*, puede comenzar con el nuevo nodo de clúster de menor tamaño.

### Reducir la escala de los clústeres OSS (ElastiCache API) de Valkey o Redis
<a name="Scaling.Vertical.ScaleDown.API"></a>

El siguiente proceso escala el grupo de replicación desde su tipo de nodo actual a un tipo de nodo nuevo y más pequeño mediante la ElastiCache API. Durante este proceso, el clúster de Valkey o Redis OSS seguirá atendiendo solicitudes con un tiempo de inactividad mínimo.

El tiempo que se tarda en la realización del escalado descendente a un tipo de nodo más pequeño varía en función de su tipo de nodo y de la cantidad de datos de su clúster actual.

**Reducción de escala (ElastiCache API)**

1. Determina los tipos de nodos a los que puedes reducir la escala mediante la `ListAllowedNodeTypeModifications` acción de la ElastiCache API con el siguiente parámetro.
   + `ReplicationGroupId`: nombre del grupo de replicación. Use este parámetro para describir un grupo de replicación específico en lugar de todos los grupos de replicación.

   ```
   https://elasticache.us-west-2.amazonaws.com/
   	   ?Action=ListAllowedNodeTypeModifications
   	   &ReplicationGroupId=MyReplGroup
   	   &Version=2015-02-02
   	   &SignatureVersion=4
   	   &SignatureMethod=HmacSHA256
   	   &Timestamp=20150202T192317Z
   	   &X-Amz-Credential=<credential>
   ```

   Para obtener más información, consulta [ListAllowedNodeTypeModifications](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ListAllowedNodeTypeModifications.html) la *referencia de la ElastiCache API de Amazon*.

1. Reduzca su grupo de replicación actual al nuevo tipo de nodo mediante la acción de la `ModifyReplicationGroup` ElastiCache API y con los siguientes parámetros.
   + `ReplicationGroupId`: nombre del grupo de replicación.
   + `CacheNodeType`: nuevo tipo de nodo más pequeño de los clústeres en este grupo de replicación. Este valor debe ser uno de los tipos de instancia devueltos por la acción `ListAllowedNodeTypeModifications` en el paso anterior.
   + `CacheParameterGroupName`: [Opcional] Utilice este parámetro si va a utilizar `reserved-memory` para administrar la memoria reservada de su clúster. Especifique un grupo de parámetros de caché personalizado que reserve la cantidad correcta de memoria para el nuevo tipo de nodo. Si va a utilizar `reserved-memory-percent`, puede omitir este parámetro.
   + `ApplyImmediately`: establézcalo en `true` para que el proceso de reducción vertical se aplique de inmediato. Para aplazar el proceso de escalado descendente al siguiente periodo de mantenimiento, utilice `ApplyImmediately``=false`.

   ```
   https://elasticache.us-west-2.amazonaws.com/
   	   ?Action=ModifyReplicationGroup
   	   &ApplyImmediately=true
   	   &CacheNodeType=cache.t2.micro
   	   &CacheParameterGroupName=redis32-m3-2xl
   	   &ReplicationGroupId=myReplGroup
   	   &SignatureVersion=4
   	   &SignatureMethod=HmacSHA256
   	   &Timestamp=20141201T220302Z
   	   &Version=2014-12-01
   	   &X-Amz-Algorithm=&AWS;4-HMAC-SHA256
   	   &X-Amz-Date=20141201T220302Z
   	   &X-Amz-SignedHeaders=Host
   	   &X-Amz-Expires=20141201T220302Z
   	   &X-Amz-Credential=<credential>
   	   &X-Amz-Signature=<signature>
   ```

   Para obtener más información, consulta [ModifyReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroup.html) la *referencia de la ElastiCache API de Amazon*.

# Introducción a los filtros de Bloom
<a name="BloomFilters"></a>

ElastiCache admite la estructura de datos del filtro Bloom, que proporciona una estructura de datos probabilística eficiente desde el punto de vista del espacio para comprobar si un elemento es miembro de un conjunto. Cuando se utilizan filtros de Bloom, es posible que se generen falsos positivos: un filtro puede indicar incorrectamente la existencia de un elemento, aunque ese elemento no se haya añadido al conjunto. Sin embargo, el uso de los filtros de Bloom evitará los falsos *negativos*, es decir, indicaciones incorrectas de que un elemento *no* existe aunque se haya añadido al conjunto. 

Puede establecer el porcentaje de posibles falsos positivos en la tasa que prefiera para la carga de trabajo ajustando la tasa de fp. También puede configurar la capacidad (la cantidad de elementos que puede contener un filtro de Bloom), las propiedades escalables y no escalables, y mucho más. 

Después de crear un clúster con una versión de motor compatible, el tipo de datos Bloom y los comandos asociados están disponibles de forma automática. El tipo de datos `bloom` es compatible a nivel de las API con la sintaxis de comandos del filtro de Bloom de las bibliotecas de cliente oficiales de Valkey, incluidas `valkey-py`, `valkey-java` y `valkey-go`. Puede migrar fácilmente las aplicaciones OSS Valkey y Redis existentes basadas en Bloom a ellas. ElastiCache Para obtener una lista completa de los comandos, consulte [Comandos de filtros de Bloom](#SupportedCommandsBloom).

Las métricas `BloomFilterBasedCmds` relacionadas con Bloom y `BloomFilterBasedCmdsECPUs` se incorporan CloudWatch para monitorear el uso de este tipo de datos. `BloomFilterBasedCmdsLatency` Para obtener más información, consulte [Métricas de Valkey y Redis OSS](CacheMetrics.Redis.md).

**nota**  
Para utilizar los filtros Bloom, debe utilizar ElastiCache Valkey 8.1 y versiones posteriores.
El tipo de datos Bloom no es compatible a nivel de las RDB con otras ofertas de Bloom que no estén basadas en Valkey.

## Información general del tipo de datos de los filtros de Bloom
<a name="BloomFilters.datatype"></a>

Los filtros de Bloom son una estructura de datos probabilística que ahorra espacio y que permite añadir elementos y comprobar si existen elementos. Pueden darse falsos positivos si un filtro indica incorrectamente que un elemento existe, aunque no se haya añadido. Sin embargo, los filtros de Bloom garantizan que no se produzcan falsos negativos (es decir, que se indique incorrectamente que un elemento no existe aunque se haya añadido).

La principal fuente de documentación de los filtros de Bloom está en la página de documentación de valkey.io. Aquí se incluye la siguiente información:
+ [Casos de uso habituales de los filtros de Bloom](https://valkey.io/topics/bloomfilters/#common-use-cases-for-bloom-filters)
  + Desduplicación de anuncios o eventos
  + Detección de fraudes
  + Filtrado de contenido nocivo o spam
  + Detección única de usuarios
+ [Diferencias entre los filtros de Bloom escalables y no escalables](https://valkey.io/topics/bloomfilters/#scaling-and-non-scaling-bloom-filters)
  + Cómo decidirse entre los filtros de Bloom escalables y no escalables
+ [Propiedades de Bloom](https://valkey.io/topics/bloomfilters/#bloom-properties)
  + Obtenga información sobre las propiedades ajustables de los filtros de Bloom. Esto incluye la ratio de falsos positivos, la capacidad, las propiedades de escalado y no escalado, y mucho más.
+ [Rendimiento de los comandos de Bloom](https://valkey.io/topics/bloomfilters/#performance)
+ [Supervisión de las estadísticas generales de los filtros de Bloom](https://valkey.io/topics/bloomfilters/#monitoring)
+ [Gestión de filtros de Bloom de gran tamaño](https://valkey.io/topics/bloomfilters/#handling-large-bloom-filters)
  + Recomendaciones y detalles sobre cómo comprobar si un filtro de Bloom está alcanzando su límite de uso de memoria y si puede escalarse para alcanzar la capacidad deseada.
  + Puede comprobar la cantidad de memoria que consume un documento de filtro de Bloom mediante el uso del comando [BF.INFO](https://valkey.io/commands/bf.info/).

## Límite del tamaño de Bloom
<a name="BloomFilters.size"></a>

El consumo de memoria de un único objeto de filtro de Bloom está limitado a 128 MB. Puede comprobar la cantidad de memoria que consume un filtro de Bloom mediante el uso del comando `BF.INFO <key> SIZE`.

## Bloom ACLs
<a name="BloomFilters.ACL"></a>

De forma similar a las categorías existentes por tipo de datos (@string, @hash, etc.), se añade una nueva categoría @bloom para simplificar la administración del acceso a los comandos y datos de Bloom. Ningún otro comando de Valkey o Redis OSS existente es miembro de la categoría @bloom. 

Existen tres categorías de ACL que se actualizan para incluir los nuevos comandos de Bloom: @read, @write y @fast. La siguiente tabla indica la asignación de los comandos de Bloom a las categorías apropiadas.


| Comando de Bloom | @read | @write | @fast | @bloom | 
| --- | --- | --- | --- | --- | 
|  BF.ADD  |    |  y  |  y  |  y  | 
|  BF.CARD  |  y  |    |  y  |  y  | 
|  BF.EXISTS  |  y  |    |  y  |  y  | 
|  BF.INFO  |  y  |    |  y  |  y  | 
|  BF.INSERT  |    |  y  |  y  |  y  | 
|  BF.MADD  |    |  y  |  y  |  y  | 
|  BF.MEXISTS  |  y  |    |  y  |  y  | 
|  BF.RESERVE  |  y  |    |  y  |  y  | 

## Métricas relacionadas con el filtro de Bloom
<a name="BloomFilters.Metrics"></a>

Se proporcionan las siguientes CloudWatch métricas relacionadas con las estructuras de datos de Bloom:


| Métricas de CW | Unidad | Sin servidor/basado en nodos | Description (Descripción) | 
| --- | --- | --- | --- | 
|  BloomFilterBasedCmds  |  Recuento  |  Ambos  |  Número total de comandos de Bloom, incluidos los comandos de lectura y escritura.  | 
|  BloomFilterBasedCmdsLatency  |  Microsegundos  |  Autoadministrada  |  Latencia de todos los comandos de filtros de Bloom, incluidos los comandos de lectura y escritura.  | 
|  BloomFilterBasedCmdsECPUs  |  Recuento  |  Sin servidor  |  ECPUs consumidos por todos los comandos del filtro Bloom, incluidos los comandos de lectura y escritura.  | 

## Comandos de filtros de Bloom
<a name="SupportedCommandsBloom"></a>

Los [comandos de filtros de Bloom](https://valkey.io/commands/#bloom) se documentan en el sitio web [Valkey.io](https://valkey.io/). Cada página de comandos proporciona una descripción completa de los comandos de Bloom, incluida su sintaxis, comportamiento, valores de retorno y posibles condiciones de error.


| Name | Description (Descripción) | 
| --- | --- | 
| [BF.ADD](https://valkey.io/commands/bf.add/) |  Añade un único elemento a un filtro de Bloom. Si el filtro aún no existe, se crea.  | 
| [BF.CARD](https://valkey.io/commands/bf.card/) | Devuelve la cardinalidad de un filtro de Bloom. | 
| [BF.EXISTS](https://valkey.io/commands/bf.exists/) | Determina si el filtro de Bloom contiene el elemento especificado.  | 
| [BF.INFO](https://valkey.io/commands/bf.info/) | Devuelve la información de uso y las propiedades de un filtro de Bloom específico. | 
| [BF.INSERT](https://valkey.io/commands/bf.insert/) | Crea un filtro de Bloom con cero o más elementos, o añade elementos a un filtro de Bloom existente. | 
| [BF.MADD](https://valkey.io/commands/bf.madd/) | Añade uno o más elementos a un filtro de Bloom. | 
| [BF.MEXISTS](https://valkey.io/commands/bf.mexists/) | Determina si el filtro de Bloom contiene uno o más elementos. | 
| [BF.RESERVE](https://valkey.io/commands/bf.reserve/) | Crea un filtro de Bloom vacío con las propiedades especificadas. | 

**nota**  
**BF.LOAD** no es compatible con. ElastiCache Solo es relevante para el uso de AOF, que ElastiCache no es compatible.

# Cómo empezar a usar Watch in Serverless
<a name="ServerlessWatch"></a>

ElastiCache admite el `WATCH` comando, que le permite monitorear las claves para detectar cambios y ejecutar [transacciones](https://valkey.io/topics/transactions/) condicionales. El `WATCH` comando es particularmente útil para aplicaciones que requieren un control de simultaneidad optimista, ya que garantiza que las transacciones solo se ejecuten si las claves monitoreadas no se han modificado. Esto incluye las modificaciones realizadas por un cliente, como la escritura de comandos, y por la propia Valkey, como la caducidad o el desalojo. Si las claves se modificaron desde el momento en que se establecieron `WATCH` y antes de que `EXEC` se reciban, se cancelará toda la transacción. 

En el ElastiCache caso de Serverless, se introducen las siguientes restricciones: 

ElastiCache Serverless `WATCH` está limitado a una sola ranura de hash. Esto significa que solo las claves que se asignan a la misma ranura de hash se pueden ver al mismo tiempo mediante la misma conexión, y la transacción que sigue los comandos de observación solo puede funcionar en la misma ranura de hash. Cuando una aplicación intenta ver claves de diferentes ranuras de hash o ejecutar comandos de transacción que funcionan con claves asignadas a una ranura de hash diferente a la de las claves observadas, se `CROSSSLOT` produce un error. [Las etiquetas hash](https://valkey.io/topics/cluster-spec/#hash-tags) se pueden utilizar para garantizar que se asignen varias claves a la misma ranura hash.

Además, `SCAN` el comando no se puede ejecutar dentro de una conexión con claves vigiladas y devolverá un `command not supported during watch state` error. 

La transacción se cancelará (como si se tocaran claves vigiladas) cuando ElastiCache Serverless no tenga la certeza de si se ha modificado una clave. Por ejemplo, cuando se ha migrado una ranura y las claves vigiladas no se encuentran en el mismo nodo.

**Ejemplos de código**

## Observe y maneje las llaves de diferentes ranuras
<a name="w2aac24c33c15b1"></a>

En el siguiente ejemplo, la clave observada y la clave especificada en el `SET` comando se asignan a diferentes ranuras de hash. La ejecución devuelve un`CROSSSLOT ERROR`.

```
> WATCH foo:{005119} 
OK 
> MULTI 
OK 
> SET bar:{011794} 1234 
QUEUED 
> EXEC 
CROSSSLOT Keys in request don't hash to the same slot
```

## Observe y opere las teclas de la misma ranura
<a name="w2aac24c33c15b3"></a>

En el siguiente ejemplo, se muestra una transacción exitosa, ya que la clave ingresada `WATCH` no se ha cambiado.

```
> WATCH foo:{005119} 
OK 
> MULTI 
OK 
> SET bar:{005119} 1234 
QUEUED 
> EXEC 
1) OK
```

## Mira las llaves de diferentes máquinas tragamonedas
<a name="w2aac24c33c15b5"></a>

En el siguiente ejemplo, si se intenta introducir `WATCH` claves de diferentes ranuras simultáneamente dentro de la misma conexión de cliente, se obtiene un`CROSSSLOT ERROR`.

```
> WATCH foo:{005119} 
OK 
> WATCH bar:{123455}  
CROSSSLOT Keys in request don't hash to the same slot
```

## Límite de visualización
<a name="ServerlessWatch.size"></a>

Cada conexión de cliente puede ver hasta 1000 claves al mismo tiempo.

## Comandos compatibles relacionados con Watch
<a name="SupportedCommandsWatch"></a>

Los comandos [WATCH](https://valkey.io/commands/watch/) y [UNWATCH](https://valkey.io/commands/unwatch/) están documentados en el sitio web [Valkey.io](https://valkey.io/). Proporciona una descripción completa de los comandos, incluida su sintaxis, comportamiento, valores de retorno y posibles condiciones de error.

# Introducción a la búsqueda vectorial
<a name="vector-search"></a>

Amazon ElastiCache for Valkey admite la búsqueda vectorial, lo que le permite almacenar, buscar y actualizar miles de millones de incrustaciones vectoriales de alta dimensión en la memoria con latencias tan bajas como microsegundos y una recuperación superior al 99%. ElastiCache for Valkey ofrece capacidades para indexar, buscar y actualizar miles de millones de incrustaciones vectoriales de alta dimensión de proveedores populares como Amazon Bedrock, Amazon, SageMaker Anthropic u OpenAI para una búsqueda y recuperación rápidas. La búsqueda vectorial para Amazon ElastiCache es ideal para casos de uso en los que el máximo rendimiento y la escalabilidad son los criterios de selección más importantes. Esto incluye el almacenamiento en caché semántico, la generación aumentada de recuperación, las recomendaciones en tiempo real, la personalización y la detección de anomalías. 

La búsqueda vectorial se puede utilizar junto con otras ElastiCache funciones para mejorar sus aplicaciones. ElastiCache La búsqueda vectorial está disponible en la versión 8.2 de Valkey en clústeres basados en nodos de todas [AWS las regiones](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/) sin coste adicional. Para empezar, crea un nuevo clúster de Valkey 8.2 con el [Consola de administración de AWS](https://console.aws.amazon.com/elasticache/)SDK o.AWSAWS CLI También puede utilizar la búsqueda vectorial en el clúster existente actualizándolo desde cualquier versión de Valkey, o Redis OSS, a Valkey 8.2, con [unos pocos clics y sin tiempo de inactividad](VersionManagement.HowTo.md).

# Información general de la búsqueda vectorial
<a name="vector-search-overview"></a>

ElastiCache for Valkey proporciona capacidades para indexar, buscar y actualizar miles de millones de incrustaciones vectoriales de alta dimensión. La búsqueda vectorial le permite crear, mantener y usar índices secundarios para una búsqueda eficiente y escalable. Cada operación de búsqueda vectorial se aplica a un único índice. Las operaciones de índice se aplican únicamente al índice especificado. Se puede realizar cualquier número de operaciones con cualquier índice en cualquier momento, a excepción de las operaciones de creación y eliminación de índices. En el clúster es posible que se realicen simultáneamente varias operaciones con varios índices.

En este documento, los términos clave, fila y registro son idénticos y se usan indistintamente. Del mismo modo, los términos columna, campo, ruta y miembro también se usan indistintamente.

El comando `FT.CREATE` se puede utilizar para crear un índice para un subconjunto de claves con los tipos de índice especificados. `FT.SEARCH` realiza consultas en los índices creados y `FT.DROPINDEX` elimina un índice existente y todos los datos asociados. No existen comandos especiales para añadir, eliminar o modificar los datos indexados. Los comandos `HASH` o `JSON` existentes que modifican una clave que está en un índice también lo actualizan automáticamente.

**Topics**
+ [Los índices y el espacio de claves de Valkey OSS](#indexes-keyspace)
+ [El campo de índice escribe](#index-field-types)
+ [Algoritmos de índice vectorial](#vector-index-algorithms)
+ [Seguridad de búsqueda vectorial](#vector-search-security)

## Los índices y el espacio de claves de Valkey OSS
<a name="indexes-keyspace"></a>

Los índices se construyen y mantienen en un subconjunto del espacio de claves de Valkey OSS. Durante la creación del índice se proporciona una lista de prefijos clave que definen el espacio de claves de cada índice. La lista de prefijos es opcional y, si se omite, todo el espacio de claves formará parte de ese índice. Los índices múltiples pueden elegir subconjuntos disociados o superpuestos del espacio de claves sin limitación alguna.

Los índices también están tipificados en el sentido de que solo incluyen las claves de tipo coincidente. Actualmente, solo se admiten los índices de los tipos `JSON` y `HASH`. Un índice `HASH` solo indexa las claves `HASH` incluidas en su lista de prefijos y, de manera semejante, un índice `JSON` solo indexa las claves `JSON` incluidas en su lista de prefijos. Las claves incluidas en la lista de prefijos del espacio de claves de un índice que no poseen el tipo designado se ignoran y no afectan a las operaciones de búsqueda.

Cuando un comando modifica una clave que se encuentra dentro del espacio de claves de un índice, dicho índice se actualiza. Valkey extrae automáticamente los campos declarados para cada índice y actualiza el índice con el nuevo valor. El proceso de actualización consta de tres pasos. En el primer paso, se modifica la clave HASH o JSON y se bloquea el cliente solicitante. El segundo paso se realiza en segundo plano y actualiza cada uno de los índices que contienen la clave modificada. En el tercer paso, se desbloquea el cliente. Por lo tanto, en el caso de las operaciones de consulta realizadas en la misma conexión que una mutación, ese cambio es visible inmediatamente en los resultados de la búsqueda. 

La creación de un índice es un proceso de varios pasos. El primer paso es ejecutar el comando FT.CREATE que define el índice. Al ejecutarse correctamente el comando create, se inicia automáticamente el segundo paso: la reposición. El proceso de reposición se ejecuta en un subproceso en segundo plano y analiza el espacio de claves en busca de claves que estén dentro de la lista de prefijos del nuevo índice. Cada clave que se encuentra se agrega al índice. Finalmente, se analiza todo el espacio de claves y se completa el proceso de creación del índice. Tenga en cuenta que mientras el proceso de relleno está en marcha, se permiten las mutaciones de las claves indexadas, no hay restricciones y el proceso de relleno del índice no finalizará hasta que todas las claves estén indexadas correctamente. No se permiten las operaciones de consulta realizadas mientras se está rellenando un índice y se las finaliza con un error. El comando FT.INFO devuelve el estado del proceso de relleno en el campo “backfill\$1status”.

## El campo de índice escribe
<a name="index-field-types"></a>

Cada índice tiene un tipo específico que se declara cuando se crea el índice junto con la ubicación dentro de un campo (columna) que se va a indexar. En claves `HASH`, la ubicación es el nombre del campo dentro del `HASH`. En claves `JSON`, la ubicación es una descripción de la ruta JSON. Al modificar una clave, los datos asociados a los campos declarados se extraen, se convierten al tipo declarado y se almacenan en el índice. Si faltan los datos o no se pueden convertir correctamente al tipo declarado, ese campo se omite del índice. Hay cuatro tipos de campo, según se explica a continuación:
+ Los **campos vectoriales** contienen un vector de números, también conocido como incrustación de vectores. Los campos vectoriales se pueden usar para filtrar vectores en función de métricas de distancia específicas que miden la similitud. En índices `HASH`, el campo debe contener todo el vector codificado en formato binario (IEEE 754 del tipo little-endian). En claves `JSON`, la ruta debe hacer referencia a una matriz del tamaño correcto llena de números. Tenga en cuenta que cuando se utiliza una matriz JSON como campo vectorial, la representación interna de la matriz dentro de la clave JSON se convierte al formato exigido por el algoritmo seleccionado, lo que reduce el consumo y la precisión de memoria. Las operaciones de lectura posteriores con los comandos JSON darán como resultado el valor de precisión reducido.
+ **Los campos numéricos** contienen un solo número. Los campos numéricos se pueden utilizar con el operador de búsqueda por rangos. En `HASH`, se espera que el campo contenga el texto ASCII de un número escrito en el formato estándar para números de punto fijo o flotante. En campos `JSON`, se deben seguir las reglas numéricas de los números JSON. Independientemente de la representación que contenga la clave, este campo se convierte en un número de punto flotante de 64 bits para almacenarlo en el índice. Como los números subyacentes se almacenan en punto flotante con sus limitaciones de precisión, se aplican las reglas habituales sobre las comparaciones numéricas de números de punto flotante.
+ **Los campos de etiquetas** contienen cero o más valores de etiqueta codificados como una sola cadena UTF-8. Los campos de etiquetas se pueden usar para filtrar las consultas y determinar la equivalencia de los valores de las etiquetas mediante una comparación que distinga entre mayúsculas y minúsculas o que no distinga entre mayúsculas y minúsculas. La cadena se analiza en valores de etiqueta mediante un carácter separador (el valor predeterminado es una coma, pero se puede anular) y se eliminan los espacios en blanco iniciales y finales. Se puede incluir cualquier número de valores de etiqueta en un único campo de etiqueta.

## Algoritmos de índice vectorial
<a name="vector-index-algorithms"></a>

Valkey admite dos algoritmos de índice vectorial:
+ **FLAT**: el algoritmo Flat es un procesamiento lineal de fuerza bruta de cada vector del índice, que da como resultado respuestas exactas dentro de los límites de la precisión de los cálculos de distancia. Debido al procesamiento lineal del índice, los tiempos de ejecución de este algoritmo pueden ser muy altos para índices grandes. Los índices planos admiten velocidades de ingesta más altas.
+ **Pequeño mundo navegable jerárquico (HNSW)**: el algoritmo HNSW es una alternativa que proporciona una aproximación de las coincidencias vectoriales más cercanas a cambio de tiempos de ejecución considerablemente más bajos. El algoritmo está controlado por tres parámetros, `M` `EF_CONSTRUCTION` y `EF_RUNTIME`. Los dos primeros parámetros se especifican en el momento de la creación del índice y no se pueden cambiar. El parámetro `EF_RUNTIME` tiene un valor predeterminado que se especifica al crear el índice, pero se puede anular posteriormente en cualquier operación de consulta individual. Estos tres parámetros interactúan para equilibrar el consumo de memoria y de CPU durante las operaciones de incorporación y consulta, así como para controlar la calidad de la aproximación de una búsqueda KNN exacta (conocida como relación de recuperación).

En HNSW, el parámetro M controla el número máximo de vecinos a los que se puede conectar cada nodo, lo que da forma a la densidad del índice. Una M más alta, de 32 o superior, produce un gráfico más conectado, lo que mejora la velocidad de recuperación y consulta, ya que existen más rutas para llegar a los vecinos pertinentes. Sin embargo, aumenta el tamaño del índice y del uso de memoria y ralentiza la indexación. Una M más baja, como 8 o inferior, produce un faster-to-build índice más pequeño con un menor uso de memoria, pero la recuperación disminuye y las consultas pueden tardar más debido al menor número de conexiones.

El parámetro EF\$1construction indica cuántas conexiones candidatas se evalúan al crear el índice. Un EF\$1construction más alto, de 400 o superior, significa que el indexador considera más rutas antes de seleccionar los vecinos, lo que se traduce en un gráfico que mejora la eficiencia tanto de la recuperación como de las consultas en el futuro, pero a costa de una indexación más lenta y un mayor uso de CPU y memoria durante la construcción. Un EF\$1construction bajo, de entre 64 y 120, acelera la indexación y reduce el uso de recursos, pero el gráfico resultante puede reducir la recuperación y la lentitud de las consultas, incluso si EF\$1runtime tiene un valor alto.

Por último, EF\$1runtime regula la amplitud de la búsqueda durante la consulta, controlando el número de vecinos candidatos que se explora en tiempo de ejecución. Si se establece en un valor alto, aumenta la recuperación y la precisión, pero a costa de la latencia de las consultas y del uso de la CPU. Un EF\$1runtime bajo hace que las consultas sean más rápidas y ligeras, pero con una menor capacidad de recuperación. A diferencia de M o EF\$1construction, este parámetro no afecta al tamaño del índice ni al tiempo de creación, por lo que se convierte en el parámetro para ajustar las compensaciones entre recuperación y latencia una vez creado un índice.

Ambos algoritmos de búsqueda vectorial (FLAT y HNSW) admiten un parámetro `INITIAL_CAP` opcional. Si se especifica, este parámetro asigna previamente memoria a los índices, lo que da como resultado una reducción de la sobrecarga de administración de la memoria y aumenta las tasas de incorporación vectorial. Los índices planos admiten mejores velocidades de ingesta que HNSW.

Es posible que los algoritmos de búsqueda vectorial, como el HNSW, no gestionen de manera eficiente la eliminación o la sobrescritura de los vectores previamente insertados. El uso de estas operaciones puede provocar un consumo excesivo de memoria indexada y and/or degradar la calidad de la recuperación. La reindexación es un método para restaurar la recuperación del uso óptimo de la memoria. and/or 

## Seguridad de búsqueda vectorial
<a name="vector-search-security"></a>

Los mecanismos de seguridad de [ACL (listas de control de acceso) de Valkey](https://valkey.io/topics/acl/) para el acceso a los comandos y a los datos se han ampliado para controlar la función de búsqueda. El control ACL de los comandos de búsqueda individuales es totalmente compatible. Se proporciona una nueva categoría de ACL, `@search`, y muchas de las categorías existentes (`@fast`, `@read`, `@write`, etc.) se actualizan para incluir los nuevos comandos. Los comandos de búsqueda no modifican los datos clave, lo que significa que se conserva la maquinaria ACL existente para el acceso de escritura. La presencia de un índice no modifica las reglas de acceso para las operaciones `HASH` y `JSON`; se sigue aplicando el control de acceso normal en la clave a estos comandos.

El acceso de los comandos de búsqueda con un índice también se controla mediante la ACL. Las comprobaciones de acceso se realizan a nivel de índice completo, no al nivel de la clave. Esto significa que el acceso a un índice se garantiza a un usuario solo si ese usuario tiene permiso para acceder a todas las claves posibles de la lista de prefijos del espacio de claves de ese índice. En otras palabras, el contenido real de un índice no controla el acceso. Más bien, es el contenido teórico de un índice, tal como se define en la lista de prefijos, el que se utiliza para el control de seguridad. Es posible que se produzcan situaciones en las que un usuario tenga acceso de lectura y and/or escritura a una clave, pero no pueda acceder a un índice que contiene esa clave. Tenga en cuenta que solo se requiere acceso de lectura al espacio de claves para crear o usar un índice; no se tiene en cuenta la presencia o ausencia del acceso de escritura.

# Características y límites de la búsqueda vectorial
<a name="vector-search-features-limits"></a>

## Disponibilidad de búsqueda vectorial
<a name="vector-search-availability"></a>

La búsqueda vectorial para Amazon ElastiCache está disponible con la versión 8.2 de Valkey en clústeres basados en nodos de todas AWS las regiones sin coste adicional. También puede utilizar la búsqueda vectorial en los clústeres existentes actualizándolos desde cualquier versión de Valkey o Redis OSS a Valkey 8.2 con [unos pocos clics y sin tiempo de inactividad](VersionManagement.HowTo.md).

La búsqueda vectorial está disponible actualmente en todos los tipos de ElastiCache instancias, excepto en los nodos con niveles de datos. El uso de la búsqueda vectorial en las instancias t2, t3 y t4g requiere aumentar la reserva de memoria al menos al 50 % para las instancias micro y al 30 % para las instancias pequeñas. Consulte [esta página](redis-memory-management.md) para obtener más información.

## Restricciones paramétricas
<a name="parametric-restrictions"></a>

En la siguiente tabla se muestran los límites de varios elementos de búsqueda vectorial:


**Límites de la búsqueda vectorial**  

| Elemento | Valor máximo | 
| --- | --- | 
| Cantidad de dimensiones de un vector | 32768 | 
| Cantidad de índices que se pueden crear | 10 | 
| Cantidad de campos de un índice | 50 | 
| Cláusula FT.SEARCH TIMEOUT (milisegundos) | 60000 | 
| Número máximo de prefijos permitido por índice | 16 | 
| Longitud máxima de un campo de etiqueta | 10000 | 
| Longitud máxima de un campo numérico | 256 | 
| Parámetro HNSW M | 2000000 | 
| Parámetro HNSW EF\$1CONSTRUCTION | 4096 | 
| Parámetro HNSW EF\$1RUNTIME | 4096 | 

## Restricciones operativas
<a name="operational-restrictions"></a>

### Persistencia y reposición de índices
<a name="index-persistence-backfilling"></a>

El proceso de actualización consta de tres pasos. En el primer paso, se modifica la clave HASH o JSON y se bloquea el cliente solicitante. El segundo paso se realiza en segundo plano y actualiza cada uno de los índices que contienen la clave modificada. En el tercer paso, se desbloquea el cliente. Por lo tanto, en el caso de las operaciones de consulta realizadas en la misma conexión que una mutación, ese cambio es visible inmediatamente en los resultados de la búsqueda. Por lo tanto, la inserción o actualización de una clave no será visible en los resultados de búsqueda para otros clientes durante un breve período de tiempo. Durante los períodos de alta carga del sistema and/or y una fuerte mutación de los datos, el retraso en la visibilidad puede prolongarse.

La característica de búsqueda vectorial conserva la definición de los índices y el contenido de los índices. Los índices de los campos vectoriales se guardan, pero los índices de TAGS y NUMERIC no, por lo que deben reconstruirse cuando se cargan externamente (sincronización completa o recarga). Esto significa que, durante cualquier solicitud o evento operativo que provoque el inicio o el reinicio de un nodo, la definición y el contenido del índice para los vectores se restauran a partir de la última instantánea. Para iniciar esta operación no se requiere ninguna acción por parte del usuario. Sin embargo, para los índices TAGS y NUMERIC, la reconstrucción se realiza como una operación de rellenado en cuanto se restauran los datos. Esto equivale funcionalmente a que el sistema ejecute automáticamente un comando FT.CREATE para cada índice definido. Tenga en cuenta que el nodo estará disponible para las operaciones de la aplicación tan pronto como se restauren los datos, pero probablemente antes de que se complete el rellenado del índice, lo que significa que las operaciones de rellenado volverán a estar visibles para las aplicaciones.

La finalización de la reposición del índice no se sincroniza entre una reposición principal y una réplica. Esta falta de sincronización puede pasar a ser visible para las aplicaciones de forma inesperada, por lo que se recomienda que las aplicaciones verifiquen que esté finalizada el relleno en las principales y todas las réplicas antes de iniciar las operaciones de búsqueda.

### Límites de escalado
<a name="scaling-limits"></a>

Durante los eventos de escalado, es posible que el índice se rellene a medida que se migran los datos. Esto se traduce en una menor recuperación de las consultas de búsqueda.

### Migración instantánea import/export y en vivo
<a name="snapshot-import-export"></a>

Los archivos RDB de un clúster con índices de búsqueda se pueden importar a otro clúster de ElastiCache Valkey con la versión 8.2 o superior. El nuevo clúster reconstruirá el contenido del índice al cargar el archivo RDB. Sin embargo, la presencia de índices de búsqueda en un archivo RDB limita la compatibilidad de esos datos con las versiones anteriores de Valkey. El formato de los índices de búsqueda definido por la funcionalidad de búsqueda vectorial solo lo entiende otro ElastiCache clúster con Valkey en la versión 8.2 o superior. Sin embargo, los archivos RDB que no contienen índices no están restringidos de esta manera.

### Falta de memoria durante la reposición
<a name="out-of-memory-backfill"></a>

Al igual que las operaciones de escritura del OSS de Valkey, el relleno de índices está sujeto a limitaciones. out-of-memory Si la memoria del motor se llena mientras hay una reposición en curso, todas las reposiciones se pausan. Si queda memoria disponible, se reanuda el proceso de reposición. También se puede eliminar un índice cuando el relleno está en pausa por falta de memoria.

### Transacciones
<a name="transactions"></a>

Los comandos `FT.CREATE`, `FT.DROPINDEX`, `FT.ALIASADD`, `FT.ALIASDEL` y `FT.ALIASUPDATE` no se pueden ejecutar en un contexto transaccional, es decir, no dentro de un bloque `MULTI/EXEC` ni dentro de un script LUA o FUNCTION.

# Selección de la configuración adecuada
<a name="choosing-configuration"></a>

Dentro de la experiencia de la consola, ElastiCache ofrece una forma sencilla de elegir el tipo de instancia correcto en función de los requisitos de memoria y CPU de su carga de trabajo vectorial.

## Consumo de memoria
<a name="memory-consumption"></a>

El consumo de memoria se basa en el número de vectores, el número de dimensiones, el valor M y la cantidad de datos no vectoriales, como los metadatos asociados al vector u otros datos almacenados en la instancia. La memoria total necesaria es una combinación del espacio necesario para los datos vectoriales reales y el espacio necesario para los índices vectoriales. El espacio necesario para los datos vectoriales se calcula midiendo la capacidad real necesaria para almacenar los vectores dentro de las estructuras de datos `HASH` o `JSON` y la sobrecarga a los slabs de memoria más cercanos, para lograr asignaciones de memoria óptimas. Cada uno de los índices vectoriales utiliza referencias a los datos vectoriales almacenados en estas estructuras de datos, así como una copia adicional del vector del índice. Se recomienda planificar este consumo de espacio adicional mediante el índice.

El número de vectores depende de cómo se decida representar los datos como vectores. Por ejemplo, puede elegir representar un único documento en varios fragmentos, donde cada fragmento represente un vector. Como alternativa, puede optar por representar todo el documento como un único vector. El número de dimensiones de los vectores depende del modelo de incrustación que se elija. Por ejemplo, si eliges usar el modelo de incrustación AWS Titan, el número de dimensiones sería 1536. Tenga en cuenta que debe probar el tipo de instancia para asegurarse de que se ajuste a sus requisitos.

## Escalado de la carga de trabajo
<a name="scaling-workload"></a>

La búsqueda vectorial admite tres métodos de escalado: horizontal, vertical y réplicas. Al escalar por capacidad, la búsqueda vectorial se comporta igual que en Valkey, es decir, si se aumenta la memoria de los nodos individuales (escalado vertical) o se incrementa el número de nodos (escalado horizontal) crece la capacidad total. En el modo de clúster, el comando `FT.CREATE` se puede enviar a cualquier nodo principal del clúster y el sistema distribuirá automáticamente la nueva definición del índice a todos los miembros del clúster.

Sin embargo, desde el punto de vista del rendimiento, la búsqueda vectorial se comporta de forma muy diferente a la de Valkey normal. La implementación multiproceso de la búsqueda vectorial significa que el CPUs rendimiento adicional aumenta de forma lineal tanto en el rendimiento de las consultas como en el de la ingestión. El escalado horizontal produce aumentos lineales en el rendimiento de la ingesta, pero podría reducir el rendimiento de las consultas. Si se requiere un rendimiento de consultas adicional, es necesario escalarlo mediante réplicas o más. CPUs 

# Comandos de búsqueda vectorial
<a name="vector-search-commands"></a>

A continuación se muestra una lista de comandos compatibles para la búsqueda vectorial.

**Topics**
+ [FT.CREATE](vector-search-commands-ft.create.md)
+ [FT.SEARCH](vector-search-commands-ft.search.md)
+ [FT.DROPINDEX](vector-search-commands-ft.dropindex.md)
+ [FT.INFO](vector-search-commands-ft.info.md)
+ [FT.\$1LIST](vector-search-commands-ft.list.md)

# FT.CREATE
<a name="vector-search-commands-ft.create"></a>

El comando `FT.CREATE` crea un índice vacío e inicia el proceso de relleno. Cada índice consta de una serie de definiciones de campo. Cada definición de campo especifica un nombre de campo, un tipo de campo y una ruta dentro de cada clave indexada para localizar un valor del tipo declarado. Algunas definiciones de tipos de campo tienen especificadores de subtipos adicionales.

Para los índices de las claves HASH, la ruta es la misma que el nombre del miembro hash. Si lo desea, puede utilizar la cláusula `AS` opcional para cambiar el nombre del campo. El cambio de nombre de los campos es especialmente útil cuando el nombre del miembro contiene caracteres especiales.

En el caso de los índices de claves JSON, la ruta es una ruta JSON a los datos del tipo declarado. Como la ruta JSON siempre contiene caracteres especiales, la cláusula `AS` es obligatoria.

**Sintaxis**

```
FT.CREATE <index-name>
ON HASH | JSON
[PREFIX <count> <prefix1> [<prefix2>...]]
SCHEMA 
(<field-identifier> [AS <alias>] 
| VECTOR [HNSW|FLAT] <attr_count> [<attribute_name> <attribute_value>])
| TAG [SEPARATOR <sep>] [CASESENSITIVE] 
| NUMERIC 
)+
```

**<index-name> (obligatorio):** es el nombre que le asigna al índice. Si ya existe un índice con el mismo nombre, se devuelve un error.

**ON HASH \$1 JSON (opcional):** en este índice solo se incluyen las claves que coinciden con el tipo especificado. Si se omite, se toma HASH.

**PREFIX <prefix-count> <prefix> (opcional):** si se especifica esta cláusula, solo se incluirán en este índice las claves que comiencen con los mismos bytes que uno o más de los prefijos especificados. Si se omite esta cláusula, se incluirán todas las claves del tipo correcto. Un prefijo de longitud cero también coincidiría con todas las claves del tipo correcto.

**Tipos de campo:**
+ TAG: un campo de etiqueta es una cadena que contiene uno o más valores de etiqueta. 
  + SEPARATOR <sep> (opcional): es uno de los caracteres `,.<>{}[]"':;!@#$%^&*()-+=~` que se utiliza para delimitar etiquetas individuales. Si se omite, el valor predeterminado es `,`.
  + CASESENSITIVE (opcional): si está presente, las comparaciones de etiquetas distinguirán entre mayúsculas y minúsculas. De forma predeterminada, las comparaciones de etiquetas NO distinguen entre mayúsculas y minúsculas.
+ NUMERIC: un campo numérico contiene un número.
+ VECTOR: un campo vectorial contiene un vector. Actualmente se admiten dos algoritmos de indexación vectorial: HNSW (pequeño mundo navegable jerárquico) y FLAT (fuerza bruta). Cada algoritmo tiene un conjunto de atributos adicionales, algunos obligatorios y otros opcionales.
  + FLAT: el algoritmo Flat proporciona respuestas exactas, pero tiene un tiempo de ejecución proporcional al número de vectores indexados y, por lo tanto, puede no ser apropiado para conjuntos de datos de gran tamaño.
    + DIM <number> (obligatorio): especifica el número de dimensiones de un vector.
    + TIPO FLOAT32 (obligatorio): tipo de datos, actualmente solo FLOAT32 se admite.
    + DISTANCE\$1METRIC [L2 \$1 IP \$1 COSINE] (obligatorio): especifica el algoritmo de distancia.
    + INITIAL\$1CAP <size> (opcional): tamaño del índice inicial.
  + HNSW: el algoritmo HNSW proporciona respuestas aproximadas, pero funciona mucho más rápido que el FLAT.
    + DIM <number> (obligatorio): especifica el número de dimensiones de un vector. 
    + TIPO FLOAT32 (obligatorio): tipo de datos, actualmente solo FLOAT32 se admite.
    + DISTANCE\$1METRIC [L2 \$1 IP \$1 COSINE] (obligatorio): especifica el algoritmo de distancia.
    + INITIAL\$1CAP <size> (opcional): tamaño del índice inicial.
    + M <number> (opcional): número máximo de periferias salientes permitido para cada nodo del gráfico en cada capa. En la capa cero, el número máximo de periferias salientes será de 2\$1M. El valor predeterminado es 16 y el máximo es 512.
    + EF\$1CONSTRUCTION <number> (opcional): controla la cantidad de vectores examinados durante la construcción del índice. Los valores más altos de este parámetro mejorarán la tasa de recuperación a costa de prolongar los tiempos de creación del índice. El valor predeterminado es 200. El valor máximo es 4096.
    + EF\$1RUNTIME <number> (opcional): controla el número de vectores que se va a examinar durante una operación de consulta. El valor predeterminado es 10 y el máximo es 4096. Puede establecer este valor de parámetro para cada consulta que ejecute. Los valores más altos aumentan los tiempos de consulta, pero mejoran la recuperación de las consultas.

**RESPONSE:** OK o error.

# FT.SEARCH
<a name="vector-search-commands-ft.search"></a>

Realiza una búsqueda en el índice especificado. Se devuelven las claves que coinciden con la expresión de la consulta.

```
FT.SEARCH <index-name> <query>
[NOCONTENT]
[RETURN <token_count> (<field-identifier> [AS <alias>])+]
[TIMEOUT timeout] 
[PARAMS <count> <name> <value> [<name> <value>]]
[LIMIT <offset> <count>]
```
+ <index> (obligatorio): es el nombre del índice que desea consultar.
+ <query> (obligatorio): es la cadena de consulta. Vea la información que aparece a continuación.
+ NOCONTENT (opcional): si está presente, solo se devuelven los nombres de clave resultantes y no se incluyen los valores clave.
+ TIMEOUT <timeout> (opcional): permite establecer un valor de tiempo de espera para el comando de búsqueda. Debe ser un número entero en milisegundos.
+ PARAMS <count> <name1> <value1> <name2> <value2> ... (opcional): `count` es el número de argumentos, es decir, el doble del número de pares de nombres de valores. Observe la cadena de consulta para obtener información detallada sobre el uso.
+ RETURN <count> <field1> <field2> ... (opcional): es el recuento del número de campos que se va a devolver. Especifica los campos que desea recuperar de los documentos, junto con los alias de los valores devueltos. De forma predeterminada, se devuelven todos los campos a menos que se establezca la opción NOCONTENT, en cuyo caso no se devuelve ningún campo. Si el recuento se establece en 0, se comporta igual que NOCONTENT.
+ LIMIT: <offset> <count>: permite elegir una parte del resultado. Se omiten las primeras claves <offset> y solo se incluye un máximo de <count> claves. El valor predeterminado es LIMIT 0 10, que devuelve como máximo 10 claves.
+ PARAMS: dos veces la cantidad de pares de valores clave. Se puede hacer referencia a los key/value pares de parámetros desde la expresión de consulta. Para obtener más información, consulte [Expresión de consulta de búsqueda vectorial](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-overview.html#vector-search-query-expression).
+ DIALECT: <dialect> (opcional): especifica el dialecto. El único dialecto admitido es el 2.

**RESPONSE**

El comando devuelve una matriz si tiene éxito o se trata de un error.

En caso de éxito, la primera entrada de la matriz de respuesta representa el recuento de claves coincidentes, seguida de una entrada de matriz por cada clave coincidente. Tenga en cuenta que si se especifica la opción `LIMIT`, solo controlará el número de claves devueltas y no afectará al valor de la primera entrada.

Cuando se especifica `NOCONTENT`, cada entrada de la respuesta solo contiene el nombre clave coincidente. De lo contrario, cada entrada incluye el nombre clave coincidente, seguido de una matriz de los campos devueltos. Los campos de resultados de una clave constan de un conjunto de name/value pares. El primer name/value par corresponde a la distancia calculada. El nombre de este par se construye a partir del nombre del campo vectorial al que se añade “\$1\$1” delante y “\$1score” detrás. El valor es la distancia calculada. Los name/value pares restantes son los miembros y los valores de la clave controlados por la `RETURN` cláusula. 

La cadena de consulta se ajusta a la siguiente sintaxis:

```
<filtering>=>[ KNN <K> @<vector_field_name> $<vector_parameter_name> <query-modifiers> ]
```

Donde:
+ <filtering>: es un \$1 o una expresión de filtro. Un asterisco (\$1) significa que no se filtra y, por lo tanto, se buscan todos los vectores del índice. Se puede proporcionar una expresión de filtro para designar un subconjunto de los vectores que se van a buscar.
+ <vector\$1field\$1name>: es el nombre de un campo vectorial dentro del índice especificado.
+ <K>: es el número de vectores vecinos más cercanos que se va a devolver.
+ <vector\$1parameter\$1name>: es un nombre PARAM cuyo valor correspondiente proporciona el vector de consulta para el algoritmo KNN. Tenga en cuenta que este parámetro debe codificarse como punto flotante binario IEEE 754 de 32 bits en formato little-endian.
+ <query-modifiers>: (Opcional) Una lista de keyword/value pares que modifican esta búsqueda de KNN en particular. Actualmente, se admiten dos palabras clave:
  + EF\$1RUNTIME: esta palabra clave va acompañada de un valor entero que anula el valor predeterminado de EF\$1RUNTIME especificado cuando se creó el índice.
  + AS: esta palabra clave va acompañada de un valor de cadena que se convierte en el nombre del campo de puntuación del resultado y anula el algoritmo de generación de nombres de campo de puntuación predeterminado.

**Expresión de filtro**

Una expresión de filtro se crea como una combinación lógica de los operadores de búsqueda numéricos y de etiquetas incluidos entre paréntesis.

**Etiqueta**

El operador de búsqueda de etiquetas se especifica con una o más cadenas separadas por el carácter \$1. Una clave satisfará al operador de búsqueda de etiquetas si el campo indicado contiene alguna de las cadenas especificadas.

```
@<field_name>:{<tag>}
or
@<field_name>:{<tag1> | <tag2>}
or
@<field_name>:{<tag1> | <tag2> | ...}
```

Por ejemplo, la siguiente consulta devolverá los documentos de color azul O negro O verde.

`@color:{blue | black | green}`

En otro ejemplo, la siguiente consulta devolverá documentos que contengan “hello world” o “hello universe”.

`@description:{hello world | hello universe}`

**Rango numérico**

El operador de rango numérico permite filtrar las consultas para que solo devuelvan valores que se encuentren entre un valor inicial y un valor final determinados. Se admiten consultas de rango inclusivas y exclusivas. Para realizar comparaciones relacionales sencillas, se puede usar \$1inf o -inf con una consulta de rango. La sintaxis de una búsqueda por rango es la siguiente:

```
@<field_name>:[ [(] <bound> [(] <bound>]
```

...donde <bound> es un número o \$1inf o -inf. Los límites sin un padre abierto principal son inclusivos, mientras que los límites con el padre abierto principal son exclusivos. 

Utilice la siguiente tabla como guía para asignar expresiones matemáticas a las consultas de filtrado:

```
min <= field <= max         @field:[min max]
min < field <= max          @field:[(min max]
min <= field < max            @field:[min (max]
min < field < max            @field:[(min (max]
field >= min                @field:[min +inf]
field > min                    @field:[(min +inf]
field <= max                @field:[-inf max]
field < max                    @field:[-inf (max]
field == val                @field:[val val]
```

**Logical operators** (Operadores lógicos)

Se pueden utilizar varias etiquetas y operadores de búsqueda numérica para crear consultas complejas mediante operadores lógicos.

**Y lógico**

Para establecer un AND lógico, utilice un espacio entre los predicados. Por ejemplo:

`query1 query2 query3`

**O lógico**

Para establecer un OR lógico, utilice un espacio entre los predicados. Por ejemplo:

`query1 | query2 | query3`

**Negación lógica**

Se puede negar cualquier consulta anteponiendo el carácter `-` a cada consulta. Las consultas negativas devuelven todas las entradas que no coinciden con la consulta. Esto también incluye las claves que no tienen el campo.

Por ejemplo, una consulta negativa en @genre:\$1comedy\$1 devolverá todos los libros que no sean comedia Y todos los libros que no tengan un campo de género.

La siguiente consulta devolverá todos los libros del género “comedy” que no se hayan publicado entre 2015 y 2024 o que no tengan ningún campo de año: @genre:[comedy] -@year:[2015 2024]

**Jerarquía de los operadores**

Se aplican las reglas típicas de prioridad de los operadores, es decir, NEGATE es la prioridad más alta, seguida de la lógica AND y, a continuación, la lógica OR con la prioridad más baja. Para invalidar las reglas de prioridad predeterminadas, puede utilizar paréntesis.

*Ejemplos de operadores lógicos combinados*

Los operadores lógicos se pueden combinar para formar expresiones de filtro complejas.

La siguiente consulta devolverá todos los libros del género “comedy” o “horror” (AND) publicados entre 2015 y 2024: `@genre:[comedy|horror] @year:[2015 2024]`.

La siguiente consulta devolverá todos los libros del género “comedy” o “horror” (OR) publicados entre 2015 y 2024: `@genre:[comedy|horror] | @year:[2015 2024]`.

La siguiente consulta devolverá todos los libros que no tengan ningún campo de género o que tengan un campo de género distinto de “comedy” y que se hayan publicado entre 2015 y 2024: `-@genre:[comedy] @year:[2015 2024]`

# FT.DROPINDEX
<a name="vector-search-commands-ft.dropindex"></a>

**Sintaxis**

```
FT.DROPINDEX <index-name>
```

Se elimina el índice especificado. Si el índice no existe, devuelve OK o un error.
+ <index-name> (obligatorio): el nombre del índice que se va a eliminar.

# FT.INFO
<a name="vector-search-commands-ft.info"></a>

**Sintaxis**

```
FT.INFO <index-name>
```

La búsqueda vectorial amplía el comando [FT.INFO](https://valkey.io/commands/info/) con varias secciones adicionales de estadísticas y contadores. Al solicitar la recuperación de la sección SEARCH, se recuperarán todas las estadísticas siguientes:


| Nombre de la clave | Tipo de valor | Description (Descripción) | 
| --- | --- | --- | 
| index\$1name | cadena | Nombre del índice | 
| index\$1options | cadena | Reservado. Actualmente está establecido en 0. | 
| index\$1definition | array | Consulte a continuación la definición de estos elementos de la matriz. | 
| attributes | matriz de información de atributos | Hay un elemento de esta matriz definido para cada atributo; consulte a continuación la definición de la información de atributo. | 
| num\$1docs | entero | Número de claves que contiene actualmente el índice | 
| num\$1terms | entero | Reservado. Actualmente está establecido en 0. | 
| record\$1count | entero | Es la suma del campo “size” de cada atributo. | 
| hash\$1indexing\$1failures | entero | Número de veces que un atributo no se ha podido convertir al tipo de atributo declarado. A pesar del nombre, esto también se aplica a las claves JSON. | 
| backfill\$1in\$1progress | entero | Si hay un relleno en curso, será un 1; de lo contrario, será un 0. | 
| backfill\$1percent\$1complete | float | Estimación de la finalización del relleno, que es un número en fracciones en el rango [0.. 1]. | 
| mutation\$1queue\$1size | entero | Número de claves en espera para actualizar el índice. | 
| recent\$1mutations\$1queue\$1delay | entero | Estimación del retraso (en segundos) de la actualización del índice. 0 es el valor si no hay actualizaciones en curso. | 
| estado | cadena | Estado de relleno: “ready” indica que el relleno se ha completado correctamente. “backfill\$1in\$1progress” indica que se está rellenando. “backfill\$1paused\$1by\$1oom” significa que el proceso de rellenado se ha pausado debido a que la memoria es insuficiente. Cuando se resuelva el problema de la falta de memoria, el proceso de relleno continuará. | 

La estructura index\$1definition es una matriz de key/value pares definida como:


| Nombre de la clave | Tipo de valor | Description (Descripción) | 
| --- | --- | --- | 
| key\$1type | cadena | La cadena JSON o la cadena HASH. | 
| prefixes | array | Cada elemento de la matriz es un prefijo definido para el índice. Si no se ha especificado ningún prefijo al crear el índice, esta matriz tendrá 0 entradas. | 
| default\$1score | cadena | Reservado. Actualmente está establecido en 1. | 

Información de los atributos: la información de los atributos es específica del tipo.

Atributos numéricos:


| Key | Tipo de valor | Description (Descripción) | 
| --- | --- | --- | 
| identificador | cadena | Ubicación del atributo dentro de una clave. Nombre del miembro Hash o ruta JSON. | 
| alias | cadena | Nombre del atributo utilizado en las descripciones de las consultas. | 
| type | cadena | Es la cadena NUMERIC. | 
| tamaño | entero | Es el número de claves con valores numéricos válidos en este atributo. | 

Atributos de las etiquetas:


| Nombre de la clave | Tipo de valor | Description (Descripción) | 
| --- | --- | --- | 
| identificador | cadena | Ubicación del atributo dentro de una clave. Nombre del miembro Hash o ruta JSON. | 
| alias | cadena | Nombre del atributo utilizado en las descripciones de las consultas. | 
| type | cadena | Es la cadena TAG. | 
| SEPARATOR | character | Es el carácter separador definido cuando se creó el índice. | 
| CASESENSITIVE | n/a | Esta clave no tiene ningún valor asociado. Solo está presente si el atributo se ha creado con esta opción. | 
| tamaño | entero | Es el número de claves con valores de etiqueta válidos en este atributo. | 

Atributos de los vectores:


| Nombre de la clave | Tipo de valor | Description (Descripción) | 
| --- | --- | --- | 
| identificador | cadena | Ubicación del atributo dentro de una clave. Nombre del miembro Hash o ruta JSON. | 
| alias | cadena | Nombre del atributo utilizado en las descripciones de las consultas. | 
| type | cadena | Es la cadena VECTOR. | 
| índice | character | Para obtener una descripción más detallada del índice vectorial, consulte lo que sigue. | 

Descripción del índice vectorial:


| Nombre de la clave | Tipo de valor | Description (Descripción) | 
| --- | --- | --- | 
| capacidad | cadena | Es la capacidad actual del índice. | 
| dimensiones | cadena | Es el número de elementos de cada vector. | 
| distance\$1metric | cadena | Una de las siguientes: COSINE, L2 o IP | 
| tamaño | array  | Para obtener una descripción más detallada del índice vectorial, consulte lo que sigue. | 
| data\$1type | cadena | Tipo de datos declarado. Actualmente, solo se FLOAT32 admite "». | 
| algoritmo | array  | Descripción más detallada del algoritmo de búsqueda vectorial. | 

Descripción del algoritmo de búsqueda vectorial FLAT:


| Nombre de la clave | Tipo de valor | Description (Descripción) | 
| --- | --- | --- | 
| name (nombre) | cadena | Nombre del algoritmo: FLAT | 
| block\$1size | número | Tamaño de un bloque del índice FLAT. | 

Descripción del índice vectorial HNSW:


| Nombre de la clave | Tipo de valor | Description (Descripción) | 
| --- | --- | --- | 
| name (nombre) | cadena | Nombre del algoritmo: HNSW | 
| m | número | Parámetro M para HNSW | 
| ef\$1construction | número | Parámetro “ef\$1construction” para HNSW | 
| ef\$1runtime | número | Parámetro “ef\$1runtime” para HNSW | 

# FT.\$1LIST
<a name="vector-search-commands-ft.list"></a>

Enumera todos los índices.

**Sintaxis**

```
FT._LIST 
```

Devuelve una matriz de cadenas que son los nombres del índice definido actualmente.

# Introducción a JSON para Valkey y Redis OSS
<a name="json-gs"></a>

ElastiCache admite el formato nativo JavaScript Object Notation (JSON), que es una forma sencilla y sin esquemas de codificar conjuntos de datos complejos dentro de clústeres de Valkey y Redis OSS. Puede almacenar datos de forma nativa y acceder a ellos utilizando el formato JavaScript Object Notation (JSON) dentro de clústeres, y actualizar los datos de JSON almacenados en esos clústeres; sin necesidad de administrar un código personalizado para serializarlo y deserializarlo.

Además de usar operaciones de API de Valkey y Redis OSS para las aplicaciones que funcionan sobre JSON, ahora puede recuperar y actualizar de manera eficiente partes específicas de un documento de JSON sin necesidad de manipular todo el objeto. Esto puede mejorar el rendimiento y reducir los costos. También puede buscar en el contenido de su documento JSON mediante la consulta [Estilo Goessner](https://goessner.net/articles/JsonPath/)`JSONPath`. 

Después de crear un clúster con una versión de motor compatible, el tipo de datos JSON y los comandos asociados están disponibles automáticamente. API compatible y RDB compatible con la versión 2 del módulo de JSON, por lo que puede migrar fácilmente las aplicaciones de Valkey y Redis OSS basadas en JSON existentes a ElastiCache. Para obtener más información acerca de los comandos admitidos, consulte [Comandos de Valkey y Redis OSS compatiblesComandos JSON](json-list-commands.md).

Las métricas relacionadas con JSON `JsonBasedCmds` y `JsonBasedCmdsLatency` se incorporan a CloudWatch para supervisar el uso de este tipo de datos. Para obtener más información, consulte [Métricas de Valkey y Redis OSS](CacheMetrics.Redis.md).

**nota**  
Para utilizar JSON, debe ejecutar Valkey 7.2 y versiones posteriores o Redis OSS 6.2.6 o versiones posteriores.

**Topics**
+ [Información general del tipo de datos JSON](json-document-overview.md)
+ [Comandos de Valkey y Redis OSS compatibles](json-list-commands.md)

# Información general del tipo de datos JSON
<a name="json-document-overview"></a>

ElastiCache admite una serie de comandos de Valkey y Redis OSS para trabajar con el tipo de datos JSON. A continuación, se presenta información general del tipo de datos JSON y una lista detallada de los comandos admitidos.

## Terminología
<a name="json-terminology"></a>


****  

| Plazo | Descripción | 
| --- | --- | 
|  Documento JSON | Hace referencia al valor de una clave de JSON. | 
|  Valor JSON | Hace referencia a un subconjunto de un JSON, incluida la raíz que representa a todo el documento. Un valor podría ser un contenedor o una entrada dentro de un contenedor. | 
|  Elemento JSON | Equivalente al valor JSON. | 

## Estándares JSON admitidos
<a name="Supported-JSON-Standard"></a>

El formato JSON es compatible con el estándar de intercambio de datos JSON [RFC 7159](https://www.ietf.org/rfc/rfc7159.txt) y [ECMA-404](https://www.ietf.org/rfc/rfc7159.txt). Se admite UTF-8 [Unicode](https://www.unicode.org/standard/WhatIsUnicode.html) en texto JSON.

## Elemento raíz
<a name="json-root-element"></a>

El elemento raíz puede ser de cualquier tipos de datos de JSON. Tenga en cuenta que en la RFC 4627 anterior, solo se permitían objetos o matrices como valores raíz. Desde la actualización a RFC 7159, la raíz de un documento JSON puede ser de cualquier tipo de datos JSON.

## Límite de tamaño del documento
<a name="json-document-size-limit"></a>

Los documentos JSON se almacenan de manera interna en un formato que se optimiza para lograr un acceso y modificación rápidos. Este formato suele consumir algo más de memoria que la representación serializada equivalente del mismo documento. 

El consumo de memoria de un solo documento JSON está limitado a 64 MB, que es el tamaño de la estructura de datos en memoria, no la cadena JSON. Puede comprobar la cantidad de memoria que consume un documento JSON mediante el uso del comando `JSON.DEBUG MEMORY`.

## JSON ACL
<a name="json-acls"></a>
+ Similar a las categorías existentes por tipo de datos (@string, @hash, etc.), se agrega una nueva categoría @json para simplificar la administración del acceso a los comandos y datos JSON. Ningún otro comando de Valkey o Redis OSS existente es miembro de la categoría @json. Todos los comandos JSON aplican cualquier restricción y permiso de espacio de teclas o comandos.
+ Existen cinco categorías de ACL de Valkey o Redis OSS que se han actualizado para incluir los nuevos comandos de JSON: @read, @write, @fast, @slow y @admin. La siguiente tabla indica la asignación de los comandos JSON a las categorías apropiadas.


**ACL**  

| Comando JSON | @read | @write | @fast | @slow | @admin | 
| --- | --- | --- | --- | --- | --- | 
|  JSON.ARRAPPEND |  | y | y |  |  | 
|  JSON.ARRINDEX | y |  | y |  |  | 
|  JSON.ARRINSERT |  | y | y |  |  | 
|  JSON.ARRLEN | y |  | y |  |  | 
|  JSON.ARRPOP |  | y | y |  |  | 
|  JSON.ARRTRIM |  | y | y |  |  | 
|  JSON.CLEAR |  | y | y |  |  | 
|  JSON.DEBUG | y |  |  | y | y | 
|  JSON.DEL |  | y | y |  |  | 
|  JSON.FORGET |  | y | y |  |  | 
|  JSON.GET | y |  | y |  |  | 
|  JSON.MGET | y |  | y |  |  | 
|  JSON.NUMINCRBY |  | y | y |  |  | 
|  JSON.NUMMULTBY |  | y | y |  |  | 
|  JSON.OBJKEYS | y |  | y |  |  | 
|  JSON.OBJLEN | y |  | y |  |  | 
|  JSON.RESP | y |  | y |  |  | 
|  JSON.SET |  | y |  | y |  | 
|  JSON.STRAPPEND |  | y | y |  |  | 
|  JSON.STRLEN | y |  | y |  |  | 
|  JSON.STRLEN | y |  | y |  |  | 
|  JSON.TOGGLE |  | y | y |  |  | 
|  JSON.TYPE | y |  | y |  |  | 
|  JSON.NUMINCRBY |  | y | y |  |  | 

## Límite de profundidad de anidado
<a name="json-nesting-depth-limit"></a>

Cuando un objeto o matriz JSON tiene un elemento que es otro objeto o matriz JSON, se dice que ese objeto o matriz interior se “anida” dentro del objeto o matriz exterior. El límite máximo de profundidad de anidamiento es 128. Cualquier intento de crear un documento que contenga una profundidad de anidamiento superior a 128 se rechazará con un error.

## Sintaxis de comandos
<a name="json-command-syntax"></a>

La mayoría de los comandos requieren un nombre de clave como primer argumento. Algunos comandos también tienen un argumento ruta. El argumento ruta se establece por defecto en la raíz si es opcional y no proporcionado.

 Notación:
+ Los argumentos obligatorios se incluyen entre corchetes angulares. Por ejemplo: <key>
+ Los argumentos opcionales deben ir entre corchetes. Por ejemplo: [path]
+ Los argumentos opcionales adicionales se indican mediante puntos suspensivos (“...”). Por ejemplo: [json ...]

## Sintaxis de ruta
<a name="json-path-syntax"></a>

Redis JSON admite dos tipos de sintaxis de rutas:
+ **Sintaxis mejorada**: sigue la sintaxis JSONPath descrita por [Goessner](https://goessner.net/articles/JsonPath/), como se muestra en la siguiente tabla. Hemos reordenado y modificado las descripciones de la tabla para mayor claridad.
+ **Sintaxis restringida**: tiene capacidades de consulta limitadas.

**nota**  
Los resultados de algunos comandos son sensibles al tipo de sintaxis de ruta que se utiliza.

 Si una ruta de consulta comienza por '\$1', utiliza la sintaxis mejorada. De lo contrario, se utiliza la sintaxis restringida.

**Sintaxis mejorada**


****  

| Símbolo o expresión | Descripción | 
| --- | --- | 
|  \$1 | El elemento raíz. | 
|  . o bien [] | Operador secundario. | 
|  .. | Descenso recursivo. | 
|  \$1 | Comodín. Todos los elementos de un objeto o matriz. | 
|  [] | Operador de subíndice de matriz. El índice se basa en 0. | 
|  [,] | Operador de unión. | 
|  [start:end:step] | Operador de Slice de la matriz. | 
|  ?() | Aplica una expresión de filtro (script) a la matriz u objeto actual. | 
|  () | Expresión de filtro. | 
|  @ | Se usa en expresiones de filtro que hacen referencia al nodo actual que se está procesando. | 
|  == | Igual a, se utiliza en las expresiones de filtro. | 
|  \$1= | No es igual a, se utiliza en las expresiones de filtro. | 
|  > | Mayor que, se utiliza en las expresiones de filtro. | 
|  >= | Mayor o igual que, se utiliza en las expresiones de filtro.  | 
|  < | Menor que, se utiliza en expresiones de filtro. | 
|  <= | Menor o igual que, se utiliza en las expresiones de filtro.  | 
|  && | Lógico Y, que se utiliza para combinar múltiples expresiones de filtro. | 
|  \$1\$1 | Lógico O, se utiliza para combinar múltiples expresiones de filtro. | 

**Ejemplos**

Los siguientes ejemplos se basan en los datos XML del ejemplo de [Goessner](https://goessner.net/articles/JsonPath/), que hemos modificado agregando matrices adicionales.

```
{ "store": {
    "book": [ 
      { "category": "reference",
        "author": "Nigel Rees",
        "title": "Sayings of the Century",
        "price": 8.95,
        "in-stock": true,
        "sold": true
      },
      { "category": "fiction",
        "author": "Evelyn Waugh",
        "title": "Sword of Honour",
        "price": 12.99,
        "in-stock": false,
        "sold": true
      },
      { "category": "fiction",
        "author": "Herman Melville",
        "title": "Moby Dick",
        "isbn": "0-553-21311-3",
        "price": 8.99,
        "in-stock": true,
        "sold": false
      },
      { "category": "fiction",
        "author": "J. R. R. Tolkien",
        "title": "The Lord of the Rings",
        "isbn": "0-395-19395-8",
        "price": 22.99,
        "in-stock": false,
        "sold": false
      }
    ],
    "bicycle": {
      "color": "red",
      "price": 19.95,
      "in-stock": true,
      "sold": false
    }
  }
}
```


****  

| Ruta | Descripción | 
| --- | --- | 
|  \$1.store.book[\$1].author | Los autores de todos los libros de la tienda. | 
|  \$1..author | Todos los autores. | 
|  \$1.store.\$1 | Todos los miembros de la tienda. | 
|  \$1.store.\$1 | Todos los miembros de la tienda. | 
|  \$1.store..price | El precio de todo lo que hay en la tienda. | 
|  \$1..\$1 | Todos los miembros recursivos de la estructura JSON. | 
|  \$1..book[\$1] | Todos los libros. | 
|  \$1..book[0] | El primer libro. | 
|  \$1..book[-1] | El último libro. | 
|  \$1..book[0:2] | Los dos primeros libros. | 
|  \$1..book[0,1] | Los dos primeros libros. | 
|  \$1..book[0:4] | Los libros del índice 0 al 3 (el índice final no está incluido). | 
|  \$1..book[0:4:2] | Los libros en el índice 0, 2. | 
|  \$1..book[?(@.isbn)] | Todos los libros con un número de ISBN. | 
|  \$1..book[?(@.price<10)] | Todos los libros que cuestan menos de 10 dólares. | 
|  '\$1..book[?(@.price < 10)]' | Todos los libros que cuestan menos de 10 dólares. (La ruta debe estar entre comillas si contiene espacios en blanco). | 
|  '\$1..book[?(@["price"] < 10)]' | Todos los libros que cuestan menos de 10 dólares. | 
|  '\$1..book[?(@.["price"] < 10)]' | Todos los libros que cuestan menos de 10 dólares. | 
|  \$1..book[?(@.price>=10&&@.price<=100)] | Todos los libros en el rango de precios de 10 a 100 dólares, incluidos. | 
|  '\$1..book[?(@.price>=10 && @.price<=100)]' | Todos los libros en el rango de precios de 10 a 100 dólares, incluidos. (La ruta debe estar entre comillas si contiene espacios en blanco). | 
|  \$1..book[?(@.sold==true\$1\$1@.in-stock==false)] | Todos los libros vendidos o agotados. | 
|  '\$1..book[?(@.sold == true \$1\$1 @.in-stock == false)]' | Todos los libros vendidos o agotados. (La ruta debe estar entre comillas si contiene espacios en blanco). | 
|  '\$1.store.book[?(@.["category"] == "fiction")]' | Todos los libros de la categoría Ficción. | 
|  '\$1.store.book[?(@.["category"] \$1= "fiction")]' | Todos los libros de las categorías que no sean ficción. | 

Ejemplos de expresiones de filtro adicionales:

```
127.0.0.1:6379> JSON.SET k1 . '{"books": [{"price":5,"sold":true,"in-stock":true,"title":"foo"}, {"price":15,"sold":false,"title":"abc"}]}'
OK
127.0.0.1:6379> JSON.GET k1 $.books[?(@.price>1&&@.price<20&&@.in-stock)]
"[{\"price\":5,\"sold\":true,\"in-stock\":true,\"title\":\"foo\"}]"
127.0.0.1:6379> JSON.GET k1 '$.books[?(@.price>1 && @.price<20 && @.in-stock)]'
"[{\"price\":5,\"sold\":true,\"in-stock\":true,\"title\":\"foo\"}]"
127.0.0.1:6379> JSON.GET k1 '$.books[?((@.price>1 && @.price<20) && (@.sold==false))]'
"[{\"price\":15,\"sold\":false,\"title\":\"abc\"}]"
127.0.0.1:6379> JSON.GET k1 '$.books[?(@.title == "abc")]'
[{"price":15,"sold":false,"title":"abc"}]

127.0.0.1:6379> JSON.SET k2 . '[1,2,3,4,5]'
127.0.0.1:6379> JSON.GET k2 $.*.[?(@>2)]
"[3,4,5]"
127.0.0.1:6379> JSON.GET k2 '$.*.[?(@ > 2)]'
"[3,4,5]"

127.0.0.1:6379> JSON.SET k3 . '[true,false,true,false,null,1,2,3,4]'
OK
127.0.0.1:6379> JSON.GET k3 $.*.[?(@==true)]
"[true,true]"
127.0.0.1:6379> JSON.GET k3 '$.*.[?(@ == true)]'
"[true,true]"
127.0.0.1:6379> JSON.GET k3 $.*.[?(@>1)]
"[2,3,4]"
127.0.0.1:6379> JSON.GET k3 '$.*.[?(@ > 1)]'
"[2,3,4]"
```

**Sintaxis restringida**


****  

| Símbolo o expresión | Descripción | 
| --- | --- | 
|  . o bien [] | Operador secundario. | 
|  [] | Operador de subíndice de matriz. El índice se basa en 0. | 

**Ejemplos**


****  

| Ruta | Descripción | 
| --- | --- | 
|  .store.book[0].author | El autor del primer libro. | 
|  .store.book[-1].author | El autor del último libro. | 
|  .address.city | Nombre de la ciudad. | 
|  ["store"]["book"][0]["title"] | El título del primer libro. | 
|  ["store"]["book"][-1]["title"] | El título del último libro. | 

**nota**  
Todo el contenido de [Goessner](https://goessner.net/articles/JsonPath/) citado en esta documentación está sujeto a la [Licencia de Creative Commons](https://creativecommons.org/licenses/by/2.5/).

## Prefijos comunes de errores
<a name="json-error-prefixes"></a>

Cada mensaje de error tiene un prefijo. A continuación se muestra una lista de prefijos comunes de errores.


****  

| Prefix | Descripción | 
| --- | --- | 
|  ERR | Un error general. | 
|  LIMIT | Un error que se produce cuando se excede el límite de tamaño. Por ejemplo, cuando se excede el límite de tamaño del documento o el límite de profundidad de anidación. | 
|  INEXISTENTE | Una clave o ruta no existe. | 
|  FUERA DE LOS LÍMITES | Un índice de matrices fuera de los límites. | 
|  SYNTAXERR | Error de sintaxis. | 
|  WRONGTYPE | Tipo de valor incorrecto. | 

## Métricas relacionadas con JSON
<a name="json-info-metrics"></a>

Se proporcionan las siguientes métricas de información JSON:


****  

| Información | Descripción | 
| --- | --- | 
|  json\$1total\$1memory\$1bytes | Memoria total asignada a objetos JSON. | 
|  json\$1num\$1documents | El número total de documentos en Valkey o Redis OSS. | 

Para consultar las métricas principales, ejecute el siguiente comando:

```
info json_core_metrics
```

## Cómo interacciona ElastiCache para Valkey y Redis OSS con JSON
<a name="json-differences"></a>

En la siguiente sección, se describe cómo interactúa ElastiCache para Valkey y Redis OSS con el tipo de datos JSON.

### Jerarquía de los operadores
<a name="json-operator-precedence"></a>

Al evaluar las expresiones condicionales para el filtrado, las &&s tienen prioridad y, a continuación, se evalúan las \$1\$1s, como es común en la mayoría de los idiomas. Las operaciones entre paréntesis se ejecutan primero. 

### Comportamiento del límite máximo de anidación
<a name="json-max-path"></a>

 El límite de anidación máximo de la ruta en ElastiCache para Redis OSS es 128. Así que un valor como `$.a.b.c.d...` solo puede alcanzar 128 niveles. 

### Administración de valores numéricos
<a name="json-about-numbers"></a>

JSON no tiene tipos de datos separados para números enteros y de coma flotante. Todos se llaman números.

Representaciones numéricas:

Cuando se recibe un número JSON en la entrada, se convierte en una de las dos representaciones binarias internas: un número entero firmado de 64 bits o un punto flotante de doble precisión IEEE de 64 bit. No se retiene la cadena original ni nada de su formato. Por lo tanto, cuando se genera un número como parte de una respuesta JSON, se convierte de la representación binaria interna a una cadena imprimible que utiliza reglas de formato genérico. Estas reglas podrían dan como resultado que se genere una cadena diferente de la que se recibió.

Comandos aritméticos `NUMINCRBY` y `NUMMULTBY`:
+ Si ambos números son números enteros y el resultado está fuera del rango de `int64`, automáticamente se convierte en un número IEEE de punto flotante de doble precisión de 64 bits.
+ Si al menos uno de los números es un punto flotante, el resultado es un número IEEE de punto flotante de doble precisión de 64 bits.
+ Si el resultado supera el rango de doble IEEE de 64 bits, el comando regresa un error `OVERFLOW`.

Para obtener una lista de los comandos disponibles, consulte el [Comandos de Valkey y Redis OSS compatiblesComandos JSON](json-list-commands.md).

### Filtrado de matrices directas
<a name="json-direct-array-filtering"></a>

ElastiCache para Valkey y Redis OSS filtra los objetos de matriz directamente.

Para datos como `[0,1,2,3,4,5,6]` y una consulta de ruta como `$[?(@<4)]`, o datos como `{"my_key":[0,1,2,3,4,5,6]}` y una consulta de ruta como `$.my_key[?(@<4)]`, ElastiCache devolvería [1,2,3] en ambas circunstancias. 

### Comportamiento de indexación de matrices
<a name="json-direct-array-indexing"></a>

ElastiCache para Valkey o Redis OSS permite índices de respuestas positivas y negativas para matrices. Para una matriz de longitud cinco, 0 consultaría el primer elemento, 1 el segundo y, así, sucesivamente. Los números negativos comienzan al final de la matriz, por lo que -1 consultaría el quinto elemento, -2 el cuarto elemento, y así sucesivamente.

Para garantizar un comportamiento predecible para los clientes, ElastiCache no redondea los índices de matriz hacia abajo o hacia arriba, por lo que si tiene una matriz con una longitud de 5, que llama al índice 5 o superior, o -6 o inferior, no se generaría ningún resultado.

### Evaluación de sintaxis estricta
<a name="json-strict-syntax-evaluation"></a>

MemoryDB no permite rutas JSON con sintaxis no válida, incluso si un subconjunto de la ruta contiene una ruta válida. Esto es para mantener un comportamiento correcto para nuestros clientes.

# Comandos de Valkey y Redis OSS compatibles
<a name="json-list-commands"></a>

ElastiCache admite los siguientes comandos de JSON en Valkey y Redis OSS:

**Topics**
+ [JSON.ARRAPPEND](json-arrappend.md)
+ [JSON.ARRINDEX](json-arrindex.md)
+ [JSON.ARRINSERT](json-arrinsert.md)
+ [JSON.ARRLEN](json-arrlen.md)
+ [JSON.ARRPOP](json-arrpop.md)
+ [JSON.ARRTRIM](json-arrtrim.md)
+ [JSON.CLEAR](json-clear.md)
+ [JSON.DEBUG](json-debug.md)
+ [JSON.DEL](json-del.md)
+ [JSON.FORGET](json-forget.md)
+ [JSON.GET](json-get.md)
+ [JSON.MGET](json-mget.md)
+ [JSON.MSET](json-mset.md)
+ [JSON.NUMINCRBY](json-numincrby.md)
+ [JSON.NUMMULTBY](json-nummultby.md)
+ [JSON.OBJLEN](json-objlen.md)
+ [JSON.OBJKEYS](json-objkeys.md)
+ [JSON.RESP](json-resp.md)
+ [JSON.SET](json-set.md)
+ [JSON.STRAPPEND](json-strappend.md)
+ [JSON.STRLEN](json-strlen.md)
+ [JSON.TOGGLE](json-toggle.md)
+ [JSON.TYPE](json-type.md)

# JSON.ARRAPPEND
<a name="json-arrappend"></a>

Adjunta uno o más valores a los valores de la matriz en la ruta.

Sintaxis

```
JSON.ARRAPPEND <key> <path> <json> [json ...]
```
+ key (obligatorio): una clave de Valkey o Redis OSS del tipo de documento JSON.
+ ruta (obligatorio): una ruta JSON.
+ json (obligatorio): el valor JSON que se agregará a la matriz.

**Return**

Si la ruta es de sintaxis mejorada:
+ Matriz de números enteros que representan la nueva longitud de la matriz en cada ruta.
+ Si un valor no es una matriz, su valor devuelto correspondiente es nulo.
+ `NONEXISTENT`Error si la ruta no existe.

Si la ruta es de sintaxis restringida:
+ Entero, la nueva longitud de la matriz.
+ Si se seleccionan varios valores de matriz, el comando devuelve la nueva longitud de la primera matriz actualizada.
+ Error `WRONGTYPE` si el valor de la ruta no es una matriz.
+ Error `SYNTAXERR` si uno de los argumentos json de entrada no es una cadena JSON válida.
+ Error `NONEXISTENT` si la ruta no existe.

**Ejemplos**

 Sintaxis de la ruta mejorada:

```
127.0.0.1:6379> JSON.SET k1 . '[[], ["a"], ["a", "b"]]'
OK
127.0.0.1:6379> JSON.ARRAPPEND  k1 $[*] '"c"'
1) (integer) 1
2) (integer) 2
3) (integer) 3
127.0.0.1:6379> JSON.GET k1
"[[\"c\"],[\"a\",\"c\"],[\"a\",\"b\",\"c\"]]"
```

 Sintaxis de la ruta restringida:

```
127.0.0.1:6379> JSON.SET k1 . '[[], ["a"], ["a", "b"]]'
OK
127.0.0.1:6379> JSON.ARRAPPEND  k1 [-1] '"c"'
(integer) 3
127.0.0.1:6379> JSON.GET k1
"[[],[\"a\"],[\"a\",\"b\",\"c\"]]"
```

# JSON.ARRINDEX
<a name="json-arrindex"></a>

Busca la primera aparición de un valor JSON escalar en las matrices de la ruta.
+ Los errores fuera de rango se tratan redondeando el índice al principio y al final de la matriz.
+ Si inicio > fin, devuelve -1 (no encontrado).

Sintaxis

```
JSON.ARRINDEX <key> <path> <json-scalar> [start [end]]
```
+ key (obligatorio): una clave de Valkey o Redis OSS del tipo de documento JSON.
+ ruta (obligatorio): una ruta JSON.
+ json-scalar (obligatorio): el valor escalar para buscar . El escalar JSON se refiere a valores que no son objetos ni matrices. Es decir, cadena, número, Booleano y nulo son valores escalares.
+ inicio (opcional): el índice de inicio, inclusivo. Toma 0 como valor predeterminado si no se proporciona.
+ final (opcional): el índice final, exclusivo. Toma 0 como valor predeterminado si no se proporciona, lo que significa que se incluye el último elemento. 0 o -1 significa que se incluye el último elemento.

**Return**

Si la ruta es de sintaxis mejorada:
+ Matriz de números enteros. Cada valor es el índice del elemento coincidente de la matriz en la ruta. El valor es -1 si no se encuentra.
+ Si un valor no es una matriz, su valor devuelto correspondiente es nulo.

Si la ruta es de sintaxis restringida:
+ Entero, el índice del elemento coincidente o -1 si no se encuentra.
+ Error `WRONGTYPE` si el valor de la ruta no es una matriz.

**Ejemplos**

 Sintaxis de la ruta mejorada:

```
127.0.0.1:6379> JSON.SET k1 . '[[], ["a"], ["a", "b"], ["a", "b", "c"]]'
OK
127.0.0.1:6379> JSON.ARRINDEX k1 $[*] '"b"'
1) (integer) -1
2) (integer) -1
3) (integer) 1
4) (integer) 1
```

 Sintaxis de la ruta restringida:

```
127.0.0.1:6379> JSON.SET k1 . '{"children": ["John", "Jack", "Tom", "Bob", "Mike"]}'
OK
127.0.0.1:6379> JSON.ARRINDEX k1 .children '"Tom"'
(integer) 2
```

# JSON.ARRINSERT
<a name="json-arrinsert"></a>

Inserta uno o varios valores en los valores de la matriz en la ruta antes del índice.

Sintaxis

```
JSON.ARRINSERT <key> <path> <index> <json> [json ...]
```
+ key (obligatorio): una clave de Valkey o Redis OSS del tipo de documento JSON.
+ ruta (obligatorio): una ruta JSON.
+ índice (obligatorio): un índice de matriz antes del cual se insertan los valores.
+ json (obligatorio): el valor JSON que se agregará a la matriz.

**Return**

Si la ruta es de sintaxis mejorada:
+ Matriz de números enteros que representan la nueva longitud de la matriz en cada ruta.
+ Si un valor es una matriz vacía, su valor devuelto correspondiente es nulo.
+ Si un valor no es una matriz, su valor devuelto correspondiente es nulo.
+ Error `OUTOFBOUNDARIES` si el argumento índice está fuera de los límites.

Si la ruta es de sintaxis restringida:
+ Entero, la nueva longitud de la matriz.
+ Error `WRONGTYPE` si el valor de la ruta no es una matriz.
+ Error `OUTOFBOUNDARIES` si el argumento índice está fuera de los límites.

**Ejemplos**

 Sintaxis de la ruta mejorada:

```
127.0.0.1:6379> JSON.SET k1 . '[[], ["a"], ["a", "b"]]'
OK
127.0.0.1:6379> JSON.ARRINSERT k1 $[*] 0 '"c"'
1) (integer) 1
2) (integer) 2
3) (integer) 3
127.0.0.1:6379> JSON.GET k1
"[[\"c\"],[\"c\",\"a\"],[\"c\",\"a\",\"b\"]]"
```

 Sintaxis de la ruta restringida:

```
127.0.0.1:6379> JSON.SET k1 . '[[], ["a"], ["a", "b"]]'
OK
127.0.0.1:6379> JSON.ARRINSERT k1 . 0 '"c"'
(integer) 4
127.0.0.1:6379> JSON.GET k1
"[\"c\",[],[\"a\"],[\"a\",\"b\"]]"
```

# JSON.ARRLEN
<a name="json-arrlen"></a>

Consigue la longitud de los valores de la matriz en la ruta.

Sintaxis

```
JSON.ARRLEN <key> [path] 
```
+ key (obligatorio): una clave de Valkey o Redis OSS del tipo de documento JSON.
+ ruta (opcional): una ruta JSON. Toma el valor predeterminado raíz si no se proporciona.

**Return**

Si la ruta es de sintaxis mejorada:
+ Matriz de números enteros que representa la longitud de la matriz en cada ruta.
+ Si un valor no es una matriz, su valor devuelto correspondiente es nulo.
+ Es nulo si la clave del documento no existe.

Si la ruta es de sintaxis restringida:
+ Entero, longitud de matriz.
+ Si hay varios objetos seleccionados, el comando devuelve la longitud de la primera matriz.
+ Error `WRONGTYPE` si el valor de la ruta no es una matriz.
+ `NONEXISTENT JSON`Error si la ruta no existe.
+ Es nulo si la clave del documento no existe.

**Ejemplos**

 Sintaxis de la ruta mejorada:

```
127.0.0.1:6379> JSON.SET k1 . '[[], ["a"], ["a", "b"], ["a", "b", "c"]]'
OK
127.0.0.1:6379> JSON.ARRLEN k1 $[*]
1) (integer) 0
2) (integer) 1
3) (integer) 2
4) (integer) 3

127.0.0.1:6379> JSON.SET k2 . '[[], "a", ["a", "b"], ["a", "b", "c"], 4]'
OK
127.0.0.1:6379> JSON.ARRLEN k2 $[*]
1) (integer) 0
2) (nil)
3) (integer) 2
4) (integer) 3
5) (nil)
```

 Sintaxis de la ruta restringida:

```
127.0.0.1:6379> JSON.SET k1 . '[[], ["a"], ["a", "b"], ["a", "b", "c"]]' 
OK 
127.0.0.1:6379> JSON.ARRLEN k1 [*] 
(integer) 0 
127.0.0.1:6379> JSON.ARRLEN k1 [1] 
(integer) 1 
127.0.0.1:6379> JSON.ARRLEN k1 [2] 
(integer) 2

127.0.0.1:6379> JSON.SET k2 . '[[], "a", ["a", "b"], ["a", "b", "c"], 4]' 
OK
127.0.0.1:6379> JSON.ARRLEN k2 [1] 
(error) WRONGTYPE JSON element is not an array 
127.0.0.1:6379> JSON.ARRLEN k2 [0] 
(integer) 0
127.0.0.1:6379> JSON.ARRLEN k2 [6] 
(error) OUTOFBOUNDARIES Array index is out of bounds
127.0.0.1:6379> JSON.ARRLEN k2 a.b 
(error) NONEXISTENT JSON path does not exist
```

# JSON.ARRPOP
<a name="json-arrpop"></a>

Elimina y devuelve elemento en el índice de la matriz. Al emerger una matriz vacía, se devuelve nulo.

Sintaxis

```
JSON.ARRPOP <key> [path [index]]
```
+ key (obligatorio): una clave de Valkey o Redis OSS del tipo de documento JSON.
+ ruta (opcional): una ruta JSON. Toma el valor predeterminado raíz si no se proporciona.
+ índice (opcional): la pposición en la matriz desde la que empezar a salir.
  + El valor predeterminado es -1 si no se proporciona, lo que significa el último elemento.
  + Un valor negativo significa la posición desde el último elemento.
  + Los índices fuera de los límites se redondean a sus respectivos límites de matriz.

**Return**

Si la ruta es de sintaxis mejorada:
+ Matriz de cadenas masivas que representan valores emergentes en cada ruta.
+ Si un valor es una matriz vacía, su valor devuelto correspondiente es nulo.
+ Si un valor no es una matriz, su valor devuelto correspondiente es nulo.

Si la ruta es de sintaxis restringida:
+ Cadena por lotes, que representa el valor JSON emergente.
+ Es nulo si la matriz está vacía.
+ Error `WRONGTYPE` si el valor de la ruta no es una matriz.

**Ejemplos**

 Sintaxis de la ruta mejorada:

```
127.0.0.1:6379> JSON.SET k1 . '[[], ["a"], ["a", "b"]]'
OK
127.0.0.1:6379> JSON.ARRPOP k1 $[*]
1) (nil)
2) "\"a\""
3) "\"b\""
127.0.0.1:6379> JSON.GET k1
"[[],[],[\"a\"]]"
```

 Sintaxis de la ruta restringida:

```
127.0.0.1:6379> JSON.SET k1 . '[[], ["a"], ["a", "b"]]'
OK
127.0.0.1:6379> JSON.ARRPOP k1
"[\"a\",\"b\"]"
127.0.0.1:6379> JSON.GET k1
"[[],[\"a\"]]"

127.0.0.1:6379> JSON.SET k2 . '[[], ["a"], ["a", "b"]]'
OK
127.0.0.1:6379> JSON.ARRPOP k2 . 0
"[]"
127.0.0.1:6379> JSON.GET k2
"[[\"a\"],[\"a\",\"b\"]]"
```

# JSON.ARRTRIM
<a name="json-arrtrim"></a>

Recorta una matriz en la ruta para que se convierta en un subcampo [inicio, fin], ambos inclusivos.
+ Si la matriz está vacía, no se hace nada y se devuelve 0.
+ Si el valor inicio es <0, trátelo como 0.
+ Si el tamaño del valor final es >= (tamaño de la matriz), trátelo como tamaño-1.
+ Si el tamaño del valor inicio >= o inicio > final, vacíe la matriz y devuelva 0.

Sintaxis

```
JSON.ARRTRIM <key> <path> <start> <end>
```
+ key (obligatorio): una clave de Valkey o Redis OSS del tipo de documento JSON.
+ ruta (obligatorio): una ruta JSON.
+ inicio (obligatorio): el índice de inicio, inclusivo.
+ final (obligatorio): el índice de final, inclusivo.

**Return**

Si la ruta es de sintaxis mejorada:
+ Matriz de números enteros que representan la nueva longitud de la matriz en cada ruta.
+ Si un valor es una matriz vacía, su valor devuelto correspondiente es nulo.
+ Si un valor no es una matriz, su valor devuelto correspondiente es nulo.
+ Error `OUTOFBOUNDARIES` si un argumento de índice está fuera de los límites.

Si la ruta es de sintaxis restringida:
+ Entero, la nueva longitud de la matriz.
+ Es nulo si la matriz está vacía.
+ Error `WRONGTYPE` si el valor de la ruta no es una matriz.
+ Error `OUTOFBOUNDARIES` si un argumento de índice está fuera de los límites.

**Ejemplos**

 Sintaxis de la ruta mejorada:

```
127.0.0.1:6379> JSON.SET k1 . '[[], ["a"], ["a", "b"], ["a", "b", "c"]]'
OK
127.0.0.1:6379> JSON.ARRTRIM k1 $[*] 0 1
1) (integer) 0
2) (integer) 1
3) (integer) 2
4) (integer) 2
127.0.0.1:6379> JSON.GET k1
"[[],[\"a\"],[\"a\",\"b\"],[\"a\",\"b\"]]"
```

 Sintaxis de la ruta restringida:

```
127.0.0.1:6379> JSON.SET k1 . '{"children": ["John", "Jack", "Tom", "Bob", "Mike"]}'
OK
127.0.0.1:6379> JSON.ARRTRIM k1 .children 0 1
(integer) 2
127.0.0.1:6379> JSON.GET k1 .children
"[\"John\",\"Jack\"]"
```

# JSON.CLEAR
<a name="json-clear"></a>

Borra las matrices o un objeto en la ruta.

Sintaxis

```
JSON.CLEAR <key> [path]
```
+ key (obligatorio): una clave de Valkey o Redis OSS del tipo de documento JSON.
+ ruta (opcional): una ruta JSON. Toma el valor predeterminado raíz si no se proporciona.

**Return**
+ Entero, el número de contenedores borrados.
+ La eliminación de una matriz u objeto vacío representa 1 contenedor borrado.
+ Al borrar un valor no contenedor, se devuelve 0.

**Ejemplos**

```
127.0.0.1:6379> JSON.SET k1 . '[[], [0], [0,1], [0,1,2], 1, true, null, "d"]'
OK
127.0.0.1:6379>  JSON.CLEAR k1  $[*]
(integer) 7
127.0.0.1:6379> JSON.CLEAR k1  $[*]
(integer) 4
127.0.0.1:6379> JSON.SET k2 . '{"children": ["John", "Jack", "Tom", "Bob", "Mike"]}'
OK
127.0.0.1:6379> JSON.CLEAR k2 .children
(integer) 1
127.0.0.1:6379> JSON.GET k2 .children
"[]"
```

# JSON.DEBUG
<a name="json-debug"></a>

Reporta información. Los subcomandos admitidos son:
+ MEMORIA <key> [path]: Informa el uso de memoria en bytes de un valor JSON. La ruta se establece de forma predeterminada en la raíz si no se proporciona.
+ CAMPOS <key> [path]: Informa el número de campos de la ruta del documento especificada. La ruta se establece de forma predeterminada en la raíz si no se proporciona. Cada valor JSON que no es de contenedor cuenta como un campo. Los objetos y las matrices cuentan de forma recursiva un campo para cada uno de los valores JSON que contienen. Cada valor de contenedor, excepto el contenedor raíz, cuenta como un campo adicional.
+ AYUDA: imprime mensajes de ayuda del comando.

Sintaxis

```
JSON.DEBUG <subcommand & arguments>
```

Depende del subcomando:

MEMORIA
+ Si la ruta es de sintaxis mejorada:
  + Devuelve una matriz de números enteros que representan tamaño de memoria (en bytes) del valor de JSON en cada ruta.
  + Devuelve una matriz vacía si la clave de Valkey o Redis OSS no existe.
+ Si la ruta es de sintaxis restringida:
  + Devuelve un número entero, tamaño de memoria y el valor JSON en bytes.
  + Devuelve null si la clave de Valkey o Redis OSS no existe.

FIELDS
+ Si la ruta es de sintaxis mejorada:
  + Devuelve una matriz de números enteros que representar el número de campos de valor JSON en cada ruta.
  + Devuelve una matriz vacía si la clave de Valkey o Redis OSS no existe.
+ Si la ruta es de sintaxis restringida:
  + Devuelve un número entero, el número de campos del valor JSON.
  + Devuelve null si la clave de Valkey o Redis OSS no existe.

AYUDA: devuelve una serie de mensajes de ayuda.

**Ejemplos**

Sintaxis de la ruta mejorada:

```
127.0.0.1:6379> JSON.SET k1 . '[1, 2.3, "foo", true, null, {}, [], {"a":1, "b":2}, [1,2,3]]'
OK
127.0.0.1:6379> JSON.DEBUG MEMORY k1 $[*]
1) (integer) 16
2) (integer) 16
3) (integer) 19
4) (integer) 16
5) (integer) 16
6) (integer) 16
7) (integer) 16
8) (integer) 50
9) (integer) 64
127.0.0.1:6379> JSON.DEBUG FIELDS k1 $[*]
1) (integer) 1
2) (integer) 1
3) (integer) 1
4) (integer) 1
5) (integer) 1
6) (integer) 0
7) (integer) 0
8) (integer) 2
9) (integer) 3
```

Sintaxis de la ruta restringida:

```
127.0.0.1:6379> JSON.SET k1 . '{"firstName":"John","lastName":"Smith","age":27,"weight":135.25,"isAlive":true,"address":{"street":"21 2nd Street","city":"New York","state":"NY","zipcode":"10021-3100"},"phoneNumbers":[{"type":"home","number":"212 555-1234"},{"type":"office","number":"646 555-4567"}],"children":[],"spouse":null}'
OK
127.0.0.1:6379> JSON.DEBUG MEMORY k1
(integer) 632
127.0.0.1:6379> JSON.DEBUG MEMORY k1 .phoneNumbers
(integer) 166

127.0.0.1:6379> JSON.DEBUG FIELDS k1
(integer) 19
127.0.0.1:6379> JSON.DEBUG FIELDS k1 .address
(integer) 4

127.0.0.1:6379> JSON.DEBUG HELP
1) JSON.DEBUG MEMORY <key> [path] - report memory size (bytes) of the JSON element. Path defaults to root if not provided.
2) JSON.DEBUG FIELDS <key> [path] - report number of fields in the JSON element. Path defaults to root if not provided.
3) JSON.DEBUG HELP - print help message.
```

# JSON.DEL
<a name="json-del"></a>

Borra los valores JSON de la ruta de acceso de una clave de documento. Si la ruta es la raíz, equivale a eliminar la clave de Valkey o Redis OSS.

Sintaxis

```
JSON.DEL <key> [path]
```
+ key (obligatorio): una clave de Valkey o Redis OSS del tipo de documento JSON.
+ ruta (opcional): una ruta JSON. Toma el valor predeterminado raíz si no se proporciona.

**Return**
+ Número de elementos eliminados.
+ Es 0 si la clave de Valkey o Redis OSS no existe.
+ 0 si la ruta JSON no es válida o no existe.

**Ejemplos**

 Sintaxis de la ruta mejorada:

```
127.0.0.1:6379> JSON.SET k1 . '{"a":{}, "b":{"a":1}, "c":{"a":1, "b":2}, "d":{"a":1, "b":2, "c":3}, "e": [1,2,3,4,5]}'
OK
127.0.0.1:6379> JSON.DEL k1 $.d.*
(integer) 3
127.0.0.1:6379> JSOn.GET k1
"{\"a\":{},\"b\":{\"a\":1},\"c\":{\"a\":1,\"b\":2},\"d\":{},\"e\":[1,2,3,4,5]}"
127.0.0.1:6379> JSON.DEL k1 $.e[*]
(integer) 5
127.0.0.1:6379> JSOn.GET k1
"{\"a\":{},\"b\":{\"a\":1},\"c\":{\"a\":1,\"b\":2},\"d\":{},\"e\":[]}"
```

 Sintaxis de la ruta restringida:

```
127.0.0.1:6379> JSON.SET k1 . '{"a":{}, "b":{"a":1}, "c":{"a":1, "b":2}, "d":{"a":1, "b":2, "c":3}, "e": [1,2,3,4,5]}'
OK
127.0.0.1:6379> JSON.DEL k1 .d.*
(integer) 3
127.0.0.1:6379> JSON.GET k1
"{\"a\":{},\"b\":{\"a\":1},\"c\":{\"a\":1,\"b\":2},\"d\":{},\"e\":[1,2,3,4,5]}"
127.0.0.1:6379> JSON.DEL k1 .e[*]
(integer) 5
127.0.0.1:6379> JSON.GET k1
"{\"a\":{},\"b\":{\"a\":1},\"c\":{\"a\":1,\"b\":2},\"d\":{},\"e\":[]}"
```

# JSON.FORGET
<a name="json-forget"></a>

Un alias de [JSON.DEL](json-del.md).

# JSON.GET
<a name="json-get"></a>

Devuelve el formato JSON serializado en una o varias rutas.

Sintaxis

```
JSON.GET <key>
[INDENT indentation-string]
[NEWLINE newline-string]
[SPACE space-string]
[NOESCAPE]
[path ...]
```
+ key (obligatorio): una clave de Valkey o Redis OSS del tipo de documento JSON.
+ SANGRÍA/NUEVA LÍNEA/ESPACIO (opcional): controla el formato de la cadena de JSON devuelta, es decir, “impresión bonita”. El valor predeterminado de cada una es una cadena vacía. Se puede anular en cualquier combinación. Estos se pueden especificar en cualquier orden.
+ SIN ESCAPE: opcional, puede estar presente para la compatibilidad con versiones anteriores y no tiene ningún otro efecto.
+ ruta (opcional): cero o más rutas JSON, el valor predeterminado es la raíz si no se proporciona ninguna. Los argumentos de la ruta deben colocarse al final.

**Return**

Sintaxis de la ruta mejorada:

 Si se da una ruta:
+ Devuelve una cadena serializada de una matriz de valores.
+ Si no selecciona ningún valor, el comando devuelve una matriz vacía.

 Si se proporcionan varias rutas:
+ Devuelve un objeto JSON con cadenas, en el que cada ruta es una clave.
+ Si hay una sintaxis de ruta restringida y mejorada mixta, el resultado se ajusta a la sintaxis mejorada.
+ Si no existe una ruta, su valor correspondiente es una matriz vacía.

**Ejemplos**

 Sintaxis de la ruta mejorada:

```
127.0.0.1:6379> JSON.SET k1 . '{"firstName":"John","lastName":"Smith","age":27,"weight":135.25,"isAlive":true,"address":{"street":"21 2nd Street","city":"New York","state":"NY","zipcode":"10021-3100"},"phoneNumbers":[{"type":"home","number":"212 555-1234"},{"type":"office","number":"646 555-4567"}],"children":[],"spouse":null}'
OK
127.0.0.1:6379> JSON.GET k1 $.address.*
"[\"21 2nd Street\",\"New York\",\"NY\",\"10021-3100\"]"
127.0.0.1:6379> JSON.GET k1 indent "\t" space " " NEWLINE "\n" $.address.*
"[\n\t\"21 2nd Street\",\n\t\"New York\",\n\t\"NY\",\n\t\"10021-3100\"\n]"
127.0.0.1:6379> JSON.GET k1 $.firstName $.lastName $.age
"{\"$.firstName\":[\"John\"],\"$.lastName\":[\"Smith\"],\"$.age\":[27]}"            
127.0.0.1:6379> JSON.SET k2 . '{"a":{}, "b":{"a":1}, "c":{"a":1, "b":2}}'
OK
127.0.0.1:6379> json.get k2 $..*
"[{},{\"a\":1},{\"a\":1,\"b\":2},1,1,2]"
```

 Sintaxis de la ruta restringida:

```
 127.0.0.1:6379> JSON.SET k1 . '{"firstName":"John","lastName":"Smith","age":27,"weight":135.25,"isAlive":true,"address":{"street":"21 2nd Street","city":"New York","state":"NY","zipcode":"10021-3100"},"phoneNumbers":[{"type":"home","number":"212 555-1234"},{"type":"office","number":"646 555-4567"}],"children":[],"spouse":null}'
OK
127.0.0.1:6379> JSON.GET k1 .address
"{\"street\":\"21 2nd Street\",\"city\":\"New York\",\"state\":\"NY\",\"zipcode\":\"10021-3100\"}"
127.0.0.1:6379> JSON.GET k1 indent "\t" space " " NEWLINE "\n" .address
"{\n\t\"street\": \"21 2nd Street\",\n\t\"city\": \"New York\",\n\t\"state\": \"NY\",\n\t\"zipcode\": \"10021-3100\"\n}"
127.0.0.1:6379> JSON.GET k1 .firstName .lastName .age
"{\".firstName\":\"John\",\".lastName\":\"Smith\",\".age\":27}"
```

# JSON.MGET
<a name="json-mget"></a>

Consigue los comandos JSON serializados en la ruta de varias claves de documentos. Devuelve un valor nulo para una clave o ruta JSON no existente.

**Sintaxis**

```
JSON.MGET <key> [key ...] <path>
```
+ key (obligatorio): una o más claves de Valkey o Redis OSS del tipo de documento.
+ ruta (obligatorio): una ruta JSON.

**Return**
+ Matriz de cadenas a granel. El tamaño de la matriz es igual al número de teclas del comando. Cada elemento de la matriz se rellena con (a) el comando JSON serializado tal como se encuentra en la ruta o (b) nulo si la clave no existe, la ruta no existe en el documento, o la ruta no es válida (error de sintaxis).
+ Si alguna de las claves especificadas existe y no es una clave JSON, el comando devuelve el error `WRONGTYPE`.

**Ejemplos**

Sintaxis de la ruta mejorada:

```
127.0.0.1:6379> JSON.SET k1 . '{"address":{"street":"21 2nd Street","city":"New York","state":"NY","zipcode":"10021"}}'
OK
127.0.0.1:6379> JSON.SET k2 . '{"address":{"street":"5 main Street","city":"Boston","state":"MA","zipcode":"02101"}}'
OK
127.0.0.1:6379> JSON.SET k3 . '{"address":{"street":"100 Park Ave","city":"Seattle","state":"WA","zipcode":"98102"}}'
OK
127.0.0.1:6379> JSON.MGET k1 k2 k3 $.address.city
1) "[\"New York\"]"
2) "[\"Boston\"]"
3) "[\"Seattle\"]"
```

 Sintaxis de la ruta restringida:

```
127.0.0.1:6379> JSON.SET k1 . '{"address":{"street":"21 2nd Street","city":"New York","state":"NY","zipcode":"10021"}}'
OK
127.0.0.1:6379> JSON.SET k2 . '{"address":{"street":"5 main Street","city":"Boston","state":"MA","zipcode":"02101"}}'
OK
127.0.0.1:6379> JSON.SET k3 . '{"address":{"street":"100 Park Ave","city":"Seattle","state":"WA","zipcode":"98102"}}'
OK

127.0.0.1:6379> JSON.MGET k1 k2 k3 .address.city
1) "\"New York\""
2) "\"Seattle\""
3) "\"Seattle\""
```

# JSON.MSET
<a name="json-mset"></a>

Compatible con la versión 8.1 y posteriores de Valkey.

Establezca los valores JSON para varias claves. La operación es atómica. O bien se establecen todos los valores o ninguno.

**Sintaxis**

```
JSON.MSET key path json [ key path json ... ]
```
+ Si la ruta de acceso llama a un miembro de objeto:
  + Si el elemento principal no existe, el comando devolverá un error INEXISTENTE.
  + Si el elemento principal existe pero no es un objeto, el comando devolverá ERROR.
  + Si el elemento principal existe y es un objeto:
    + Si el miembro no existe, se anexará un miembro nuevo al objeto principal si y solo si el objeto principal es el último objeto secundario de la ruta. De lo contrario, el comando devolverá un error INEXISTENTE.
    + Si el miembro existe, su valor se reemplazará por el valor JSON.
+ Si la ruta requiere un índice de matriz:
  + Si el elemento principal no existe, el comando devolverá un error INEXISTENTE.
  + Si el elemento principal existe pero no es una matriz, el comando devolverá ERROR.
  + Si el elemento principal existe pero el índice está fuera de los límites, el comando devuelve un error OUTOFBOUNDARIES.
  + Si el elemento principal existe y el índice es válido, el elemento se reemplazará por el nuevo valor JSON.
+ Si la ruta llama a un objeto o matriz, el valor (objeto o matriz) se reemplazará por el nuevo valor JSON.

**Return**
+ Respuesta de cadena simple: OK si la operación se ha realizado correctamente.
+ Respuesta de error simple: si la operación no se ha ejecutado correctamente.

**Ejemplos**

Sintaxis de la ruta mejorada:

```
127.0.0.1:6379> JSON.MSET k1 . '[1,2,3,4,5]' k2 . '{"a":{"a":1, "b":2, "c":3}}' k3 . '{"a": [1,2,3,4,5]}'
OK
127.0.0.1:6379> JSON.GET k1
"[1,2,3,4,5]"
127.0.0.1:6379> JSON.GET k2
"{\"a\":{\"a\":1,\"b\":2,\"c\":3}}"
127.0.0.1:6379> JSON.MSET k2 $.a.* '0' k3 $.a[*] '0'
OK
127.0.0.1:6379> JSON.GET k2
"{\"a\":{\"a\":0,\"b\":0,\"c\":0}}"
127.0.0.1:6379> JSON.GET k3
"{\"a\":[0,0,0,0,0]}"
```

Sintaxis de la ruta restringida:

```
127.0.0.1:6379> JSON.MSET k1 . '{"name": "John","address": {"street": "123 Main St","city": "Springfield"},"phones": ["555-1234","555-5678"]}'
OK
127.0.0.1:6379> JSON.MSET k1 .address.street '"21 2nd Street"' k1 .address.city '"New York"'
OK
127.0.0.1:6379> JSON.GET k1 .address.street
"\"21 2nd Street\""
127.0.0.1:6379> JSON.GET k1 .address.city
"\"New York\""
```

# JSON.NUMINCRBY
<a name="json-numincrby"></a>

Aumenta los valores numéricos de la ruta por un número dado.

Sintaxis

```
JSON.NUMINCRBY <key> <path> <number>
```
+ key (obligatorio): una clave de Valkey o Redis OSS del tipo de documento JSON.
+ ruta (obligatorio): una ruta JSON.
+ número (obligatorio): un número.

**Return**

Si la ruta es de sintaxis mejorada:
+ Matriz de cadena a granel que representa el valor resultante en cada ruta.
+ Si un valor no es un número, su valor devuelto correspondiente es nulo.
+ El error `WRONGTYPE` si el número no se puede analizar.
+ El error `OVERFLOW` si el resultado está fuera del rango del doble IEEE de 64 bits.
+ `NONEXISTENT` si la clave del documento no existe.

Si la ruta es de sintaxis restringida:
+ Cadena a granel que representa el valor resultante.
+ Si se seleccionan varios valores, el comando devuelve el resultado del último valor actualizado.
+ El error `WRONGTYPE` si el valor de la ruta no es un número.
+ El error `WRONGTYPE` si el número no se puede analizar.
+ El error `OVERFLOW` si el resultado está fuera del rango del doble IEEE de 64 bits.
+ `NONEXISTENT` si la clave del documento no existe.

**Ejemplos**

 Sintaxis de la ruta mejorada:

```
127.0.0.1:6379> JSON.SET k1 . '{"a":[], "b":[1], "c":[1,2], "d":[1,2,3]}'
OK
127.0.0.1:6379> JSON.NUMINCRBY k1 $.d[*] 10
"[11,12,13]"
127.0.0.1:6379> JSON.GET k1
"{\"a\":[],\"b\":[1],\"c\":[1,2],\"d\":[11,12,13]}"

127.0.0.1:6379> JSON.SET k1 $ '{"a":[], "b":[1], "c":[1,2], "d":[1,2,3]}'
OK
127.0.0.1:6379> JSON.NUMINCRBY k1 $.a[*] 1
"[]"
127.0.0.1:6379> JSON.NUMINCRBY k1 $.b[*] 1
"[2]"
127.0.0.1:6379> JSON.NUMINCRBY k1 $.c[*] 1
"[2,3]"
127.0.0.1:6379> JSON.NUMINCRBY k1 $.d[*] 1
"[2,3,4]"
127.0.0.1:6379> JSON.GET k1
"{\"a\":[],\"b\":[2],\"c\":[2,3],\"d\":[2,3,4]}"

127.0.0.1:6379> JSON.SET k2 $ '{"a":{}, "b":{"a":1}, "c":{"a":1, "b":2}, "d":{"a":1, "b":2, "c":3}}'
OK
127.0.0.1:6379> JSON.NUMINCRBY k2 $.a.* 1
"[]"
127.0.0.1:6379> JSON.NUMINCRBY k2 $.b.* 1
"[2]"
127.0.0.1:6379> JSON.NUMINCRBY k2 $.c.* 1
"[2,3]"
127.0.0.1:6379> JSON.NUMINCRBY k2 $.d.* 1
"[2,3,4]"
127.0.0.1:6379> JSON.GET k2
"{\"a\":{},\"b\":{\"a\":2},\"c\":{\"a\":2,\"b\":3},\"d\":{\"a\":2,\"b\":3,\"c\":4}}"

127.0.0.1:6379> JSON.SET k3 $ '{"a":{"a":"a"}, "b":{"a":"a", "b":1}, "c":{"a":"a", "b":"b"}, "d":{"a":1, "b":"b", "c":3}}'
OK
127.0.0.1:6379> JSON.NUMINCRBY k3 $.a.* 1
"[null]"
127.0.0.1:6379> JSON.NUMINCRBY k3 $.b.* 1
"[null,2]"
127.0.0.1:6379> JSON.NUMINCRBY k3 $.c.* 1
"[null,null]"
127.0.0.1:6379> JSON.NUMINCRBY k3 $.d.* 1
"[2,null,4]"
127.0.0.1:6379> JSON.GET k3
"{\"a\":{\"a\":\"a\"},\"b\":{\"a\":\"a\",\"b\":2},\"c\":{\"a\":\"a\",\"b\":\"b\"},\"d\":{\"a\":2,\"b\":\"b\",\"c\":4}}"
```

 Sintaxis de la ruta restringida:

```
127.0.0.1:6379> JSON.SET k1 . '{"a":[], "b":[1], "c":[1,2], "d":[1,2,3]}'
OK
127.0.0.1:6379> JSON.NUMINCRBY k1 .d[1] 10
"12"
127.0.0.1:6379> JSON.GET k1
"{\"a\":[],\"b\":[1],\"c\":[1,2],\"d\":[1,12,3]}"

127.0.0.1:6379> JSON.SET k1 . '{"a":[], "b":[1], "c":[1,2], "d":[1,2,3]}'
OK
127.0.0.1:6379> JSON.NUMINCRBY k1 .a[*] 1
(error) NONEXISTENT JSON path does not exist
127.0.0.1:6379> JSON.NUMINCRBY k1 .b[*] 1
"2"
127.0.0.1:6379> JSON.GET k1
"{\"a\":[],\"b\":[2],\"c\":[1,2],\"d\":[1,2,3]}"
127.0.0.1:6379> JSON.NUMINCRBY k1 .c[*] 1
"3"
127.0.0.1:6379> JSON.GET k1
"{\"a\":[],\"b\":[2],\"c\":[2,3],\"d\":[1,2,3]}"
127.0.0.1:6379> JSON.NUMINCRBY k1 .d[*] 1
"4"
127.0.0.1:6379> JSON.GET k1
"{\"a\":[],\"b\":[2],\"c\":[2,3],\"d\":[2,3,4]}"

127.0.0.1:6379> JSON.SET k2 . '{"a":{}, "b":{"a":1}, "c":{"a":1, "b":2}, "d":{"a":1, "b":2, "c":3}}'
OK
127.0.0.1:6379> JSON.NUMINCRBY k2 .a.* 1
(error) NONEXISTENT JSON path does not exist
127.0.0.1:6379> JSON.NUMINCRBY k2 .b.* 1
"2"
127.0.0.1:6379> JSON.GET k2
"{\"a\":{},\"b\":{\"a\":2},\"c\":{\"a\":1,\"b\":2},\"d\":{\"a\":1,\"b\":2,\"c\":3}}"
127.0.0.1:6379> JSON.NUMINCRBY k2 .c.* 1
"3"
127.0.0.1:6379> JSON.GET k2
"{\"a\":{},\"b\":{\"a\":2},\"c\":{\"a\":2,\"b\":3},\"d\":{\"a\":1,\"b\":2,\"c\":3}}"
127.0.0.1:6379> JSON.NUMINCRBY k2 .d.* 1
"4"
127.0.0.1:6379> JSON.GET k2
"{\"a\":{},\"b\":{\"a\":2},\"c\":{\"a\":2,\"b\":3},\"d\":{\"a\":2,\"b\":3,\"c\":4}}"

127.0.0.1:6379> JSON.SET k3 . '{"a":{"a":"a"}, "b":{"a":"a", "b":1}, "c":{"a":"a", "b":"b"}, "d":{"a":1, "b":"b", "c":3}}'
OK
127.0.0.1:6379> JSON.NUMINCRBY k3 .a.* 1
(error) WRONGTYPE JSON element is not a number
127.0.0.1:6379> JSON.NUMINCRBY k3 .b.* 1
"2"
127.0.0.1:6379> JSON.NUMINCRBY k3 .c.* 1
(error) WRONGTYPE JSON element is not a number
127.0.0.1:6379> JSON.NUMINCRBY k3 .d.* 1
"4"
```

# JSON.NUMMULTBY
<a name="json-nummultby"></a>

Multipla los valores numéricos de la ruta por un número dado.

Sintaxis

```
JSON.NUMMULTBY <key> <path> <number>
```
+ key (obligatorio): una clave de Valkey o Redis OSS del tipo de documento JSON.
+ ruta (obligatorio): una ruta JSON.
+ número (obligatorio): un número.

**Return**

Si la ruta es de sintaxis mejorada:
+ Matriz de cadenas a granel que representa el valor resultante en cada ruta.
+ Si un valor no es un número, su valor devuelto correspondiente es nulo.
+ El error `WRONGTYPE` si el número no se puede analizar.
+ El error `OVERFLOW` si el resultado está fuera del rango de un número de punto flotante de doble precisión de 64 bits IEEE.
+ `NONEXISTENT` si la clave del documento no existe.

Si la ruta es de sintaxis restringida:
+ Cadena a granel que representa el valor resultante.
+ Si se seleccionan varios valores, el comando devuelve el resultado del último valor actualizado.
+ El error `WRONGTYPE` si el valor de la ruta no es un número.
+ El error `WRONGTYPE` si el número no se puede analizar.
+ El error `OVERFLOW` si el resultado está fuera del rango del doble IEEE de 64 bits.
+ `NONEXISTENT` si la clave del documento no existe.

**Ejemplos**

 Sintaxis de la ruta mejorada:

```
127.0.0.1:6379> JSON.SET k1 . '{"a":[], "b":[1], "c":[1,2], "d":[1,2,3]}'
OK
127.0.0.1:6379> JSON.NUMMULTBY k1 $.d[*] 2
"[2,4,6]"
127.0.0.1:6379> JSON.GET k1
"{\"a\":[],\"b\":[1],\"c\":[1,2],\"d\":[2,4,6]}"

127.0.0.1:6379> JSON.SET k1 $ '{"a":[], "b":[1], "c":[1,2], "d":[1,2,3]}'
OK
127.0.0.1:6379> JSON.NUMMULTBY k1 $.a[*] 2
"[]"
127.0.0.1:6379> JSON.NUMMULTBY k1 $.b[*] 2
"[2]"
127.0.0.1:6379> JSON.NUMMULTBY k1 $.c[*] 2
"[2,4]"
127.0.0.1:6379> JSON.NUMMULTBY k1 $.d[*] 2
"[2,4,6]"

127.0.0.1:6379> JSON.SET k2 $ '{"a":{}, "b":{"a":1}, "c":{"a":1, "b":2}, "d":{"a":1, "b":2, "c":3}}'
OK
127.0.0.1:6379> JSON.NUMMULTBY k2 $.a.* 2
"[]"
127.0.0.1:6379> JSON.NUMMULTBY k2 $.b.* 2
"[2]"
127.0.0.1:6379> JSON.NUMMULTBY k2 $.c.* 2
"[2,4]"
127.0.0.1:6379> JSON.NUMMULTBY k2 $.d.* 2
"[2,4,6]"

127.0.0.1:6379> JSON.SET k3 $ '{"a":{"a":"a"}, "b":{"a":"a", "b":1}, "c":{"a":"a", "b":"b"}, "d":{"a":1, "b":"b", "c":3}}'
OK
127.0.0.1:6379> JSON.NUMMULTBY k3 $.a.* 2
"[null]"
127.0.0.1:6379> JSON.NUMMULTBY k3 $.b.* 2
"[null,2]"
127.0.0.1:6379> JSON.NUMMULTBY k3 $.c.* 2
"[null,null]"
127.0.0.1:6379> JSON.NUMMULTBY k3 $.d.* 2
"[2,null,6]"
```

 Sintaxis de la ruta restringida:

```
127.0.0.1:6379> JSON.SET k1 . '{"a":[], "b":[1], "c":[1,2], "d":[1,2,3]}'
OK
127.0.0.1:6379> JSON.NUMMULTBY k1 .d[1] 2
"4"
127.0.0.1:6379> JSON.GET k1
"{\"a\":[],\"b\":[1],\"c\":[1,2],\"d\":[1,4,3]}"

127.0.0.1:6379> JSON.SET k1 . '{"a":[], "b":[1], "c":[1,2], "d":[1,2,3]}'
OK
127.0.0.1:6379> JSON.NUMMULTBY k1 .a[*] 2
(error) NONEXISTENT JSON path does not exist
127.0.0.1:6379> JSON.NUMMULTBY k1 .b[*] 2
"2"
127.0.0.1:6379> JSON.GET k1
"{\"a\":[],\"b\":[2],\"c\":[1,2],\"d\":[1,2,3]}"
127.0.0.1:6379> JSON.NUMMULTBY k1 .c[*] 2
"4"
127.0.0.1:6379> JSON.GET k1
"{\"a\":[],\"b\":[2],\"c\":[2,4],\"d\":[1,2,3]}"
127.0.0.1:6379> JSON.NUMMULTBY k1 .d[*] 2
"6"
127.0.0.1:6379> JSON.GET k1
"{\"a\":[],\"b\":[2],\"c\":[2,4],\"d\":[2,4,6]}"

127.0.0.1:6379> JSON.SET k2 . '{"a":{}, "b":{"a":1}, "c":{"a":1, "b":2}, "d":{"a":1, "b":2, "c":3}}'
OK
127.0.0.1:6379> JSON.NUMMULTBY k2 .a.* 2
(error) NONEXISTENT JSON path does not exist
127.0.0.1:6379> JSON.NUMMULTBY k2 .b.* 2
"2"
127.0.0.1:6379> JSON.GET k2
"{\"a\":{},\"b\":{\"a\":2},\"c\":{\"a\":1,\"b\":2},\"d\":{\"a\":1,\"b\":2,\"c\":3}}"
127.0.0.1:6379> JSON.NUMMULTBY k2 .c.* 2
"4"
127.0.0.1:6379> JSON.GET k2
"{\"a\":{},\"b\":{\"a\":2},\"c\":{\"a\":2,\"b\":4},\"d\":{\"a\":1,\"b\":2,\"c\":3}}"
127.0.0.1:6379> JSON.NUMMULTBY k2 .d.* 2
"6"
127.0.0.1:6379> JSON.GET k2
"{\"a\":{},\"b\":{\"a\":2},\"c\":{\"a\":2,\"b\":4},\"d\":{\"a\":2,\"b\":4,\"c\":6}}"

127.0.0.1:6379> JSON.SET k3 . '{"a":{"a":"a"}, "b":{"a":"a", "b":1}, "c":{"a":"a", "b":"b"}, "d":{"a":1, "b":"b", "c":3}}'
OK
127.0.0.1:6379> JSON.NUMMULTBY k3 .a.* 2
(error) WRONGTYPE JSON element is not a number
127.0.0.1:6379> JSON.NUMMULTBY k3 .b.* 2
"2"
127.0.0.1:6379> JSON.GET k3
"{\"a\":{\"a\":\"a\"},\"b\":{\"a\":\"a\",\"b\":2},\"c\":{\"a\":\"a\",\"b\":\"b\"},\"d\":{\"a\":1,\"b\":\"b\",\"c\":3}}"
127.0.0.1:6379> JSON.NUMMULTBY k3 .c.* 2
(error) WRONGTYPE JSON element is not a number
127.0.0.1:6379> JSON.NUMMULTBY k3 .d.* 2
"6"
127.0.0.1:6379> JSON.GET k3
"{\"a\":{\"a\":\"a\"},\"b\":{\"a\":\"a\",\"b\":2},\"c\":{\"a\":\"a\",\"b\":\"b\"},\"d\":{\"a\":2,\"b\":\"b\",\"c\":6}}"
```

# JSON.OBJLEN
<a name="json-objlen"></a>

Consigue el número de claves en los valores del objeto en la ruta.

Sintaxis

```
JSON.OBJLEN <key> [path]
```
+ key (obligatorio): una clave de Valkey o Redis OSS del tipo de documento JSON.
+ ruta (opcional): una ruta JSON. Toma el valor predeterminado raíz si no se proporciona.

**Return**

Si la ruta es de sintaxis mejorada:
+ Matriz de números enteros que representa la longitud del objeto en cada ruta.
+ Si un valor no es un objeto, su valor devuelto correspondiente es nulo.
+ Es nulo si la clave del documento no existe.

Si la ruta es de sintaxis restringida:
+ Entero, número de claves del objeto.
+ Si hay varios objetos seleccionados, el comando devuelve la longitud del primer objeto.
+ El error `WRONGTYPE` si el valor de la ruta no es un objeto.
+ `NONEXISTENT JSON`Error si la ruta no existe.
+ Es nulo si la clave del documento no existe.

**Ejemplos**

 Sintaxis de la ruta mejorada:

```
127.0.0.1:6379> JSON.SET k1 $ '{"a":{}, "b":{"a":"a"}, "c":{"a":"a", "b":"bb"}, "d":{"a":1, "b":"b", "c":{"a":3,"b":4}}, "e":1}'
OK
127.0.0.1:6379> JSON.OBJLEN k1 $.a
1) (integer) 0
127.0.0.1:6379> JSON.OBJLEN k1 $.a.*
(empty array)
127.0.0.1:6379> JSON.OBJLEN k1 $.b
1) (integer) 1
127.0.0.1:6379> JSON.OBJLEN k1 $.b.*
1) (nil)
127.0.0.1:6379> JSON.OBJLEN k1 $.c
1) (integer) 2
127.0.0.1:6379> JSON.OBJLEN k1 $.c.*
1) (nil)
2) (nil)
127.0.0.1:6379> JSON.OBJLEN k1 $.d
1) (integer) 3
127.0.0.1:6379> JSON.OBJLEN k1 $.d.*
1) (nil)
2) (nil)
3) (integer) 2
127.0.0.1:6379> JSON.OBJLEN k1 $.*
1) (integer) 0
2) (integer) 1
3) (integer) 2
4) (integer) 3
5) (nil)
```

 Sintaxis de la ruta restringida:

```
127.0.0.1:6379> JSON.SET k1 . '{"a":{}, "b":{"a":"a"}, "c":{"a":"a", "b":"bb"}, "d":{"a":1, "b":"b", "c":{"a":3,"b":4}}, "e":1}'
OK
127.0.0.1:6379> JSON.OBJLEN k1 .a
(integer) 0
127.0.0.1:6379> JSON.OBJLEN k1 .a.*
(error) NONEXISTENT JSON path does not exist
127.0.0.1:6379> JSON.OBJLEN k1 .b
(integer) 1
127.0.0.1:6379> JSON.OBJLEN k1 .b.*
(error) WRONGTYPE JSON element is not an object
127.0.0.1:6379> JSON.OBJLEN k1 .c
(integer) 2
127.0.0.1:6379> JSON.OBJLEN k1 .c.*
(error) WRONGTYPE JSON element is not an object
127.0.0.1:6379> JSON.OBJLEN k1 .d
(integer) 3
127.0.0.1:6379> JSON.OBJLEN k1 .d.*
(integer) 2
127.0.0.1:6379> JSON.OBJLEN k1 .*
(integer) 0
```

# JSON.OBJKEYS
<a name="json-objkeys"></a>

Consigue nombres clave en los valores de objeto de la ruta.

Sintaxis

```
JSON.OBJKEYS <key> [path]
```
+ key (obligatorio): una clave de Valkey o Redis OSS del tipo de documento JSON.
+ ruta (opcional): una ruta JSON. Toma el valor predeterminado raíz si no se proporciona.

**Return**

Si la ruta es de sintaxis mejorada:
+ Matriz de matriz de cadenas masivas. Cada elemento es una matriz de claves de un objeto coincidente.
+ Si un valor no es un objeto, su valor devuelto correspondiente es un valor vacío.
+ Es nulo si la clave del documento no existe.

Si la ruta es de sintaxis restringida:
+ Matriz de cadenas a granel. Cada elemento es un nombre clave del objeto.
+ Si hay varios objetos seleccionados, el comando devuelve las claves del primer objeto.
+ El error `WRONGTYPE` si el valor de la ruta no es un objeto.
+ Es nulo si la clave del documento no existe.

**Ejemplos**

 Sintaxis de la ruta mejorada:

```
127.0.0.1:6379> JSON.SET k1 $ '{"a":{}, "b":{"a":"a"}, "c":{"a":"a", "b":"bb"}, "d":{"a":1, "b":"b", "c":{"a":3,"b":4}}, "e":1}'
OK
127.0.0.1:6379> JSON.OBJKEYS k1 $.*
1) (empty array)
2) 1) "a"
3) 1) "a"
   2) "b"
4) 1) "a"
   2) "b"
   3) "c"
5) (empty array)
127.0.0.1:6379> JSON.OBJKEYS k1 $.d
1) 1) "a"
   2) "b"
   3) "c"
```

 Sintaxis de la ruta restringida:

```
127.0.0.1:6379> JSON.SET k1 $ '{"a":{}, "b":{"a":"a"}, "c":{"a":"a", "b":"bb"}, "d":{"a":1, "b":"b", "c":{"a":3,"b":4}}, "e":1}'
OK
127.0.0.1:6379> JSON.OBJKEYS k1 .*
1) "a"
127.0.0.1:6379> JSON.OBJKEYS k1 .d
1) "a"
2) "b"
3) "c"
```

# JSON.RESP
<a name="json-resp"></a>

Devuelve el valor de JSON en la ruta especificada en el protocolo de serialización de Valkey o Redis OSS (RESP). Si el valor es contenedor, la respuesta es una matriz RESP o matriz anidada.
+ El valor nulo de JSON se asigna a la cadena masiva nula de RESP.
+ Los valores boleanos JSON se asignan a las cadenas simples de RESP respectivas.
+ Los números enteros se asignan a números enteros RESP.
+ Los números de coma flotante doble IEEE de 64 bits se asignan a cadenas masivas RESP.
+ Las cadenas JSON se asignan a RESP Bulk Strings.
+ Las matrices JSON se representan como matrices RESP, donde el primer elemento es la cadena simple [, seguida de los elementos de la matriz.
+ Los objetos JSON se representan como matrices RESP, donde el primer elemento es la cadena simple \$1, seguida de los pares clave-valor, cada uno de los cuales es una cadena masiva RESP.

Sintaxis

```
JSON.RESP <key> [path]
```
+ key (obligatorio): una clave de Valkey o Redis OSS del tipo de documento JSON.
+ ruta (opcional): una ruta JSON. Toma el valor predeterminado raíz si no se proporciona.

**Return**

Si la ruta es de sintaxis mejorada:
+ Matriz de matrices. Cada elemento de la matriz representa la forma RESP del valor en una ruta.
+ Matriz vacía si la clave del documento no existe.

Si la ruta es de sintaxis restringida:
+ Matriz que representa la forma RESP del valor en la ruta.
+ Es nulo si la clave del documento no existe.

**Ejemplos**

Sintaxis de la ruta mejorada:

```
127.0.0.1:6379> JSON.SET k1 . '{"firstName":"John","lastName":"Smith","age":27,"weight":135.25,"isAlive":true,"address":{"street":"21 2nd Street","city":"New York","state":"NY","zipcode":"10021-3100"},"phoneNumbers":[{"type":"home","number":"212 555-1234"},{"type":"office","number":"646 555-4567"}],"children":[],"spouse":null}'
OK

127.0.0.1:6379> JSON.RESP k1 $.address
1) 1) {
   2) 1) "street"
      2) "21 2nd Street"
   3) 1) "city"
      2) "New York"
   4) 1) "state"
      2) "NY"
   5) 1) "zipcode"
      2) "10021-3100"

127.0.0.1:6379> JSON.RESP k1 $.address.*
1) "21 2nd Street"
2) "New York"
3) "NY"
4) "10021-3100"

127.0.0.1:6379> JSON.RESP k1 $.phoneNumbers
1) 1) [
   2) 1) {
      2) 1) "type"
         2) "home"
      3) 1) "number"
         2) "555 555-1234"
   3) 1) {
      2) 1) "type"
         2) "office"
      3) 1) "number"
         2) "555 555-4567"

127.0.0.1:6379> JSON.RESP k1 $.phoneNumbers[*]
1) 1) {
   2) 1) "type"
      2) "home"
   3) 1) "number"
      2) "212 555-1234"
2) 1) {
   2) 1) "type"
      2) "office"
   3) 1) "number"
      2) "555 555-4567"
```

Sintaxis de la ruta restringida:

```
127.0.0.1:6379> JSON.SET k1 . '{"firstName":"John","lastName":"Smith","age":27,"weight":135.25,"isAlive":true,"address":{"street":"21 2nd Street","city":"New York","state":"NY","zipcode":"10021-3100"},"phoneNumbers":[{"type":"home","number":"212 555-1234"},{"type":"office","number":"646 555-4567"}],"children":[],"spouse":null}'
OK

127.0.0.1:6379> JSON.RESP k1 .address
1) {
2) 1) "street"
   2) "21 2nd Street"
3) 1) "city"
   2) "New York"
4) 1) "state"
   2) "NY"
5) 1) "zipcode"
   2) "10021-3100"

127.0.0.1:6379> JSON.RESP k1
 1) {
 2) 1) "firstName"
    2) "John"
 3) 1) "lastName"
    2) "Smith"
 4) 1) "age"
    2) (integer) 27
 5) 1) "weight"
    2) "135.25"
 6) 1) "isAlive"
    2) true
 7) 1) "address"
    2) 1) {
       2) 1) "street"
          2) "21 2nd Street"
       3) 1) "city"
          2) "New York"
       4) 1) "state"
          2) "NY"
       5) 1) "zipcode"
          2) "10021-3100"
 8) 1) "phoneNumbers"
    2) 1) [
       2) 1) {
          2) 1) "type"
             2) "home"
          3) 1) "number"
             2) "212 555-1234"
       3) 1) {
          2) 1) "type"
             2) "office"
          3) 1) "number"
             2) "555 555-4567"
 9) 1) "children"
    2) 1) [
10) 1) "spouse"
    2) (nil)
```

# JSON.SET
<a name="json-set"></a>

Establece valores JSON en la ruta.

Si la ruta de acceso llama a un miembro de objeto:
+ Si el elemento principal no existe, el comando regresa unerror INEXISTENTE.
+ Si el elemento principal existe pero no es un objeto, el comando regresa ERROR.
+ Si el elemento principal existe y es un objeto:
  +  Si el miembro no existe, se anexará un miembro nuevo al objeto principal si y solo si el objeto principal es el último objeto secundario de la ruta. De lo contrario, el comando regresa un error INEXISTENTE.
  +  Si el miembro existe, su valor se reemplazará por el valor JSON.

Si la ruta requiere un índice de matriz:
+ Si el elemento principal no existe, el comando regresa unerror INEXISTENTE.
+ Si el elemento principal existe pero no es una matriz, el comando regresa ERROR.
+ Si el elemento principal existe pero el índice está fuera de los límites, el comando regresa unerror FUERA DE LOS LÍMITES.
+ Si el elemento principal existe y el índice es válido, el elemento se reemplazará por el nuevo valor JSON.

Si la ruta llama a un objeto o matriz, el valor (objeto o matriz) se reemplazará por el nuevo valor JSON.

Sintaxis

```
JSON.SET <key> <path> <json> [NX | XX] 
```

[NX \$1 XX] Donde puede tener 0 o 1 de [NX \$1 XX] identificadores.
+ key (obligatorio): una clave de Valkey o Redis OSS del tipo de documento JSON.
+ ruta (obligatoria): una ruta JSON. Para una nueva clave, la ruta de JSON debe ser la raíz “.”.
+ NX (opcional): si la ruta es la raíz, establezca el valor solo si la clave no existe. Es decir, inserte un nuevo documento. Si la ruta no es la raíz, establezca el valor solo si la ruta no existe. Es decir, inserte un valor en el documento.
+ XX (opcional): si la ruta es la raíz, establezca el valor solo si existe la clave. Es decir, reemplace el documento existente. Si la ruta no es la raíz, establezca el valor solo si la ruta existe. Es decir, actualice el valor existente.

**Return**
+ Cadena simple ‘OK’ en caso de éxito.
+ Es nulo si no se cumple la condición NX o XX.

**Ejemplos**

 Sintaxis de la ruta mejorada:

```
127.0.0.1:6379> JSON.SET k1 . '{"a":{"a":1, "b":2, "c":3}}'
OK
127.0.0.1:6379> JSON.SET k1 $.a.* '0'
OK
127.0.0.1:6379> JSON.GET k1
"{\"a\":{\"a\":0,\"b\":0,\"c\":0}}"

127.0.0.1:6379> JSON.SET k2 . '{"a": [1,2,3,4,5]}'
OK
127.0.0.1:6379> JSON.SET k2 $.a[*] '0'
OK
127.0.0.1:6379> JSON.GET k2
"{\"a\":[0,0,0,0,0]}"
```

 Sintaxis de la ruta restringida:

```
127.0.0.1:6379> JSON.SET k1 . '{"c":{"a":1, "b":2}, "e": [1,2,3,4,5]}'
OK
127.0.0.1:6379> JSON.SET k1 .c.a '0'
OK
127.0.0.1:6379> JSON.GET k1
"{\"c\":{\"a\":0,\"b\":2},\"e\":[1,2,3,4,5]}"
127.0.0.1:6379> JSON.SET k1 .e[-1] '0'
OK
127.0.0.1:6379> JSON.GET k1
"{\"c\":{\"a\":0,\"b\":2},\"e\":[1,2,3,4,0]}"
127.0.0.1:6379> JSON.SET k1 .e[5] '0'
(error) OUTOFBOUNDARIES Array index is out of bounds
```

# JSON.STRAPPEND
<a name="json-strappend"></a>

Adjunta una cadena a las cadenas JSON de la ruta.

Sintaxis

```
JSON.STRAPPEND <key> [path] <json_string>
```
+ key (obligatorio): una clave de Valkey o Redis OSS del tipo de documento JSON.
+ ruta (opcional): una ruta JSON. Toma el valor predeterminado raíz si no se proporciona.
+ json\$1string (obligatorio): la representación JSON de una cadena. Tenga en cuenta que se debe citar una cadena JSON. Por ejemplo: “’ejemplo de cadena‘”.

**Return**

Si la ruta es de sintaxis mejorada:
+ Matriz de números enteros que representa la nueva longitud de la cadena en cada ruta.
+ Si un valor en la ruta no es una cadena, su valor devuelto correspondiente es nulo.
+ `SYNTAXERR`Error si el argumento json de entrada no es una cadena JSON válida.
+ `NONEXISTENT`Error si la ruta no existe.

Si la ruta es de sintaxis restringida:
+ Entero, la nueva longitud de la cadena.
+ Si se seleccionan varios valores de cadena, el comando devuelve la nueva longitud de la última cadena actualizada.
+ Error `WRONGTYPE` si el valor de la ruta no es una cadena.
+ Error `WRONGTYPE` si el argumento json de entrada no es una cadena JSON válida.
+ `NONEXISTENT`Error si la ruta no existe.

**Ejemplos**

 Sintaxis de la ruta mejorada:

```
127.0.0.1:6379> JSON.SET k1 $ '{"a":{"a":"a"}, "b":{"a":"a", "b":1}, "c":{"a":"a", "b":"bb"}, "d":{"a":1, "b":"b", "c":3}}'
OK
127.0.0.1:6379> JSON.STRAPPEND k1 $.a.a '"a"'
1) (integer) 2
127.0.0.1:6379> JSON.STRAPPEND k1 $.a.* '"a"'
1) (integer) 3
127.0.0.1:6379> JSON.STRAPPEND k1 $.b.* '"a"'
1) (integer) 2
2) (nil)
127.0.0.1:6379> JSON.STRAPPEND k1 $.c.* '"a"'
1) (integer) 2
2) (integer) 3
127.0.0.1:6379> JSON.STRAPPEND k1 $.c.b '"a"'
1) (integer) 4
127.0.0.1:6379> JSON.STRAPPEND k1 $.d.* '"a"'
1) (nil)
2) (integer) 2
3) (nil)
```

 Sintaxis de la ruta restringida:

```
127.0.0.1:6379> JSON.SET k1 . '{"a":{"a":"a"}, "b":{"a":"a", "b":1}, "c":{"a":"a", "b":"bb"}, "d":{"a":1, "b":"b", "c":3}}'
OK
127.0.0.1:6379> JSON.STRAPPEND k1 .a.a '"a"'
(integer) 2
127.0.0.1:6379> JSON.STRAPPEND k1 .a.* '"a"'
(integer) 3
127.0.0.1:6379> JSON.STRAPPEND k1 .b.* '"a"'
(integer) 2
127.0.0.1:6379> JSON.STRAPPEND k1 .c.* '"a"'
(integer) 3
127.0.0.1:6379> JSON.STRAPPEND k1 .c.b '"a"'
(integer) 4
127.0.0.1:6379> JSON.STRAPPEND k1 .d.* '"a"'
(integer) 2
```

# JSON.STRLEN
<a name="json-strlen"></a>

Consigue las longitudes de los valores de cadena JSON en la ruta.

Sintaxis

```
JSON.STRLEN <key> [path] 
```
+ key (obligatorio): una clave de Valkey o Redis OSS del tipo de documento JSON.
+ ruta (opcional): una ruta JSON. Toma el valor predeterminado raíz si no se proporciona.

**Return**

Si la ruta es de sintaxis mejorada:
+ Matriz de números enteros que representa la longitud del valor de cadena en cada ruta.
+ Si un valor no es una cadena, su valor devuelto correspondiente es nulo.
+ Es nulo si la clave del documento no existe.

Si la ruta es de sintaxis restringida:
+ Entero, la longitud de la cadena.
+ Si se seleccionan varios valores de cadena, el comando devuelve la longitud de la primera cadena.
+ Error `WRONGTYPE` si el valor de la ruta no es una cadena.
+ Error `NONEXISTENT` si la ruta no existe.
+ Es nulo si la clave del documento no existe.

**Ejemplos**

 Sintaxis de la ruta mejorada:

```
127.0.0.1:6379> JSON.SET k1 $ '{"a":{"a":"a"}, "b":{"a":"a", "b":1}, "c":{"a":"a", "b":"bb"}, "d":{"a":1, "b":"b", "c":3}}'
OK
127.0.0.1:6379> JSON.STRLEN k1 $.a.a
1) (integer) 1
127.0.0.1:6379> JSON.STRLEN k1 $.a.*
1) (integer) 1
127.0.0.1:6379> JSON.STRLEN k1 $.c.*
1) (integer) 1
2) (integer) 2
127.0.0.1:6379> JSON.STRLEN k1 $.c.b
1) (integer) 2
127.0.0.1:6379> JSON.STRLEN k1 $.d.*
1) (nil)
2) (integer) 1
3) (nil)
```

 Sintaxis de la ruta restringida:

```
127.0.0.1:6379> JSON.SET k1 $ '{"a":{"a":"a"}, "b":{"a":"a", "b":1}, "c":{"a":"a", "b":"bb"}, "d":{"a":1, "b":"b", "c":3}}'
OK
127.0.0.1:6379> JSON.STRLEN k1 .a.a
(integer) 1
127.0.0.1:6379> JSON.STRLEN k1 .a.*
(integer) 1
127.0.0.1:6379> JSON.STRLEN k1 .c.*
(integer) 1
127.0.0.1:6379> JSON.STRLEN k1 .c.b
(integer) 2
127.0.0.1:6379> JSON.STRLEN k1 .d.*
(integer) 1
```

# JSON.TOGGLE
<a name="json-toggle"></a>

Alterna los valores boleanos entre verdadero y falso en el camino.

Sintaxis

```
JSON.TOGGLE <key> [path] 
```
+ key (obligatorio): una clave de Valkey o Redis OSS del tipo de documento JSON.
+ ruta (opcional): una ruta JSON. Toma el valor predeterminado raíz si no se proporciona.

**Return**

Si la ruta es de sintaxis mejorada:
+ Matriz de números enteros (0 - falso, 1 - verdadero) que representa el valor boleano resultante en cada ruta.
+ Si un valor no es un valor boleano, su valor devuelto correspondiente es nulo.
+ `NONEXISTENT` si la clave del documento no existe.

Si la ruta es de sintaxis restringida:
+ Cadena (“verdadero”/”falso”) que representa el resultantevalor boleano.
+ `NONEXISTENT` si la clave del documento no existe.
+ Error `WRONGTYPE` si el valor de la ruta no es un valor boleano.

**Ejemplos**

 Sintaxis de la ruta mejorada:

```
127.0.0.1:6379> JSON.SET k1 . '{"a":true, "b":false, "c":1, "d":null, "e":"foo", "f":[], "g":{}}'
OK
127.0.0.1:6379> JSON.TOGGLE k1 $.*
1) (integer) 0
2) (integer) 1
3) (nil)
4) (nil)
5) (nil)
6) (nil)
7) (nil)
127.0.0.1:6379> JSON.TOGGLE k1 $.*
1) (integer) 1
2) (integer) 0
3) (nil)
4) (nil)
5) (nil)
6) (nil)
7) (nil)
```

 Sintaxis de la ruta restringida:

```
127.0.0.1:6379> JSON.SET k1 . true
OK
127.0.0.1:6379> JSON.TOGGLE k1
"false"
127.0.0.1:6379> JSON.TOGGLE k1
"true"

127.0.0.1:6379> JSON.SET k2 . '{"isAvailable": false}'
OK
127.0.0.1:6379> JSON.TOGGLE k2 .isAvailable
"true"
127.0.0.1:6379> JSON.TOGGLE k2 .isAvailable
"false"
```

# JSON.TYPE
<a name="json-type"></a>

Informa el tipo de valores en la ruta dada.

Sintaxis

```
JSON.TYPE <key> [path]
```
+ key (obligatorio): una clave de Valkey o Redis OSS del tipo de documento JSON.
+ ruta (opcional): una ruta JSON. Toma el valor predeterminado raíz si no se proporciona.

**Return**

Si la ruta es de sintaxis mejorada:
+ Matriz de cadenas que representa el tipo de valor en cada ruta. El tipo es uno de \$1"nulo", "boleano", "cadena", "número", "entero", "objeto" y "matriz"\$1.
+ Si no existe una ruta, su valor de retorno correspondiente es nulo.
+ Matriz vacía si la clave del documento no existe.

Si la ruta es de sintaxis restringida:
+ Cadena, tipo del valor
+ Es nulo si la clave del documento no existe.
+ Es nulo si la ruta JSON no es válida o no existe.

**Ejemplos**

Sintaxis de la ruta mejorada:

```
127.0.0.1:6379> JSON.SET k1 . '[1, 2.3, "foo", true, null, {}, []]'
OK
127.0.0.1:6379> JSON.TYPE k1 $[*]
1) integer
2) number
3) string
4) boolean
5) null
6) object
7) array
```

Sintaxis de la ruta restringida:

```
127.0.0.1:6379> JSON.SET k1 . '{"firstName":"John","lastName":"Smith","age":27,"weight":135.25,"isAlive":true,"address":{"street":"21 2nd Street","city":"New York","state":"NY","zipcode":"10021-3100"},"phoneNumbers":[{"type":"home","number":"212 555-1234"},{"type":"office","number":"646 555-4567"}],"children":[],"spouse":null}'
OK
127.0.0.1:6379> JSON.TYPE k1
object
127.0.0.1:6379> JSON.TYPE k1 .children
array
127.0.0.1:6379> JSON.TYPE k1 .firstName
string
127.0.0.1:6379> JSON.TYPE k1 .age
integer
127.0.0.1:6379> JSON.TYPE k1 .weight
number
127.0.0.1:6379> JSON.TYPE k1 .isAlive
boolean
127.0.0.1:6379> JSON.TYPE k1 .spouse
null
```

# Etiquetar sus recursos ElastiCache
<a name="Tagging-Resources"></a>

Para ayudarte a administrar tus clústeres y otros ElastiCache recursos, puedes asignar tus propios metadatos a cada recurso en forma de etiquetas. Las etiquetas te permiten clasificar AWS los recursos de diferentes maneras, por ejemplo, por propósito, propietario o entorno. Esto es útil cuando tiene muchos recursos del mismo tipo: puede identificar rápidamente un recurso específico en función de las etiquetas que le haya asignado. En este tema se describe qué son las etiquetas y cómo crearlas.

**aviso**  
Como práctica recomendada, no debe incluir datos confidenciales en las etiquetas.

## Conceptos básicos de etiquetas
<a name="Tagging-basics"></a>

Una etiqueta es una etiqueta que se asigna a un AWS recurso. Cada etiqueta está formada por una clave y un valor opcional, ambos definidos por el usuario. Las etiquetas te permiten clasificar AWS los recursos de diferentes maneras, por ejemplo, por propósito o propietario. Por ejemplo, puedes definir un conjunto de etiquetas para los ElastiCache clústeres de tu cuenta que te ayuden a realizar un seguimiento del propietario y el grupo de usuarios de cada instancia.

Recomendamos que idee un conjunto de claves de etiqueta que cumpla sus necesidades para cada tipo de recurso. Mediante el uso de un conjunto coherente de claves de etiquetas, podrá administrar los recursos de más fácilmente. Puede buscar y filtrar los recursos en función de las etiquetas que agregue. Para obtener más información acerca de cómo implementar una estrategia eficaz de etiquetado de recursos, consulte el [documento técnico de Prácticas recomendadas de etiquetado de AWS](https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf).

Las etiquetas no tienen ningún significado semántico ElastiCache y se interpretan estrictamente como una cadena de caracteres. Además, las etiquetas no se asignan a los recursos automáticamente. Puede editar las claves y los valores de las etiquetas y eliminar las etiquetas de un recurso en cualquier momento. Puede establecer el valor de una etiqueta en `null`. Si agrega una etiqueta que tiene la misma clave que una etiqueta existente en ese recurso, el nuevo valor sobrescribe el valor anterior. Si eliminas un recurso, también se eliminarán todas las etiquetas del recurso. Además, si agrega o elimina etiquetas en un grupo de reproducción, todos los nodos de ese grupo de reproducción también se agregarán o eliminarán sus etiquetas.

 Puede trabajar con etiquetas mediante la Consola de administración de AWSAWS CLI, la y la ElastiCache API.

Si utilizas IAM, puedes controlar qué usuarios de tu AWS cuenta tienen permiso para crear, editar o eliminar etiquetas. Para obtener más información, consulte [Permisos de nivel de recursos](IAM.ResourceLevelPermissions.md).

## Recursos que se pueden etiquetar
<a name="Tagging-your-resources"></a>

Puedes etiquetar la mayoría de ElastiCache los recursos que ya existen en tu cuenta. La siguiente tabla enumera los recursos que admiten etiquetas. Si utilizas el Consola de administración de AWS, puedes aplicar etiquetas a los recursos mediante el [editor de etiquetas](https://docs.aws.amazon.com/ARG/latest/userguide/tag-editor.html). Algunas pantallas de recursos permiten especificar etiquetas para un recurso al crear dicho recurso; por ejemplo, una etiqueta con una clave de Name (Nombre) y un valor que especifique. En la mayoría de los casos, la consola aplica las etiquetas inmediatamente después de crear el recurso (y no durante la creación del mismo). La consola puede organizar los recursos según la etiqueta de **nombre**, pero esta etiqueta no tiene ningún significado semántico para el ElastiCache servicio.

 Además, algunas acciones de creación de recursos le permiten especificar etiquetas para un recurso al crear dicho recurso. Si no se pueden aplicar etiquetas durante la creación del recurso, el proceso de creación del recurso se revierte. Esto garantiza que los recursos se creen con etiquetas o, de lo contrario, no se creen y que ningún recurso se quede jamás sin etiquetar. Al etiquetar los recursos en el momento de su creación, se eliminar la necesidad de ejecutar scripts de etiquetado personalizados tras la creación del recurso. 

 Si utilizas la ElastiCache API de Amazon, la AWS CLI o un AWS SDK, puedes usar el `Tags` parámetro de la acción de ElastiCache API correspondiente para aplicar etiquetas. Son los siguientes:
+ `CreateServerlessCache`
+ `CreateCacheCluster`
+ `CreateReplicationGroup`
+ `CopyServerlessCacheSnapshot`
+ `CopySnapshot`
+ `CreateCacheParameterGroup`
+ `CreateCacheSecurityGroup`
+ `CreateCacheSubnetGroup`
+ `CreateServerlessCacheSnapshot`
+ `CreateSnapshot`
+ `CreateUserGroup`
+ `CreateUser`
+ `PurchaseReservedCacheNodesOffering`

En la siguiente tabla se describen los ElastiCache recursos que se pueden etiquetar y los recursos que se pueden etiquetar al crearlos mediante la ElastiCache API, la AWS CLI o un AWS SDK.


**Soporte de etiquetado para los recursos ElastiCache**  

| Recurso | Admite etiquetas | Admite el etiquetado durante la creación | 
| --- | --- | --- | 
| caché sin servidor | Sí | Sí | 
| parametergroup | Sí | Sí | 
| securitygroup | Sí | Sí | 
| subnetgroup | Sí | Sí | 
| replicationgroup | Sí | Sí | 
| clúster | Sí | Sí | 
| reserved-instance | Sí | Sí | 
| instantánea de caché sin servidor | Sí | Sí | 
| instantánea | Sí | Sí | 
| usuario | Sí | Sí | 
| usergroup | Sí | Sí | 

**nota**  
No puede etiquetar almacenes de datos globales.

Puede aplicar permisos a nivel de recursos basados en etiquetas en sus políticas de IAM a las acciones de la ElastiCache API que admiten el etiquetado en el momento de la creación para implementar un control pormenorizado sobre los usuarios y grupos que pueden etiquetar los recursos en el momento de la creación. Sus recursos se encuentran debidamente protegidos de las etiquetas de creación que se aplican de inmediato a los recursos. Por lo tanto, cualquier permiso de nivel de recursos basado en etiquetas que controle la utilización de recursos es efectivo de inmediato. Se puede realizar un seguimiento y un registro más precisos de los recursos. Puede establecer el etiquetado obligatorio de los nuevos recursos y controlar qué claves y valores de etiquetas se usan en ellos.

Para obtener más información, consulte [Ejemplos de etiquetado de recursos](#Tagging-your-resources-example).

 A fin de obtener más información sobre el etiquetado de recursos para facturación, consulte [Monitoreo de costos con etiquetas de asignación de costos](Tagging.md).

## Etiquetado de cachés e instantáneas
<a name="Tagging-replication-groups-snapshots"></a>

Las siguientes reglas se aplican al etiquetado como parte de las operaciones de solicitud:
+ **CreateReplicationGroup**: 
  + Si los parámetros `--primary-cluster-id` y `--tags` se incluyen en la solicitud, las etiquetas de la solicitud se agregarán al grupo de replicación y se propagan a todos los clústeres del grupo de replicación. Si el clúster principal tiene etiquetas, estas se sobrescribirán con las etiquetas de la solicitud para tener etiquetas coherentes en todos los nodos.

    Si no hay etiquetas de la solicitud, las etiquetas de clúster principal se agregarán al grupo de replicación y se propagarán a todos los clústeres.
  + Si se suministra el `--snapshot-name` o el `--serverless-cache-snapshot-name`:

    Si se incluyen etiquetas en la solicitud, el grupo de réplica solo se etiquetará con esas etiquetas. Si no se incluyen etiquetas en la solicitud, las etiquetas de la instantánea se agregarán al grupo de réplica.
  + Si se proporciona el `--global-replication-group-id`:

    Si se incluyen etiquetas en la solicitud, las etiquetas de la solicitud se agregarán al grupo de replicación y se propagarán a todos los clústeres de caché. 
+ **CreateCacheCluster** : 
  +  Si se proporciona el `--replication-group-id`:

    Si se incluyen etiquetas en la solicitud, solo se le aplicarán esas etiquetas al clúster. Si no se incluyen etiquetas en la solicitud, el clúster heredará las etiquetas del grupo de replicación en lugar de las etiquetas del clúster principal.
  + Si se proporciona el `--snapshot-name`:

    Si se incluyen etiquetas en la solicitud, solo se le aplicarán esas etiquetas al clúster. Si no se incluyen etiquetas en la solicitud, las etiquetas de la instantánea se agregarán al clúster.
+ **CreateServerlessCache** : 
  + Si se incluyen etiquetas en la solicitud, solo las etiquetas de solicitud se agregarán al caché sin servidor.
+ **CreateSnapshot** : 
  +  Si se proporciona el `--replication-group-id`:

    Si no se incluyen etiquetas en la solicitud, las etiquetas de solicitud se agregarán a la instantánea. Si no se incluyen etiquetas en la solicitud, las etiquetas del grupo de reproducción se agregarán a la instantánea. 
  + Si se proporciona el `--cache-cluster-id`:

    Si no se incluyen etiquetas en la solicitud, las etiquetas de solicitud se agregarán a la instantánea. Si no se incluyen etiquetas en la solicitud, las etiquetas del clúster se agregarán a la instantánea. 
  + Para las instantáneas automáticas:

    Las etiquetas se propagarán desde las etiquetas de grupo de reproducción. 
+ **CreateServerlessCacheSnapshot** : 
  + Si se incluyen etiquetas en la solicitud, solo las etiquetas de solicitud se agregarán a la instantánea de la caché sin servidor.
+ **CopySnapshot** : 
  + Si no se incluyen etiquetas en la solicitud, las etiquetas de solicitud se agregarán a la instantánea. Si no se incluyen etiquetas en la solicitud, las etiquetas de la instantánea fuente se agregarán a la instantánea copiada.
+ **CopyServerlessCacheSnapshot** : 
  + Si se incluyen etiquetas en la solicitud, solo las etiquetas de solicitud se agregarán a la instantánea de la caché sin servidor.
+ **AddTagsToResource**y: **RemoveTagsFromResource** 
  + Las etiquetas added/removed procederán del grupo de replicación y la acción se propagará a todos los clústeres del grupo de replicación.
**nota**  
**AddTagsToResource**y **RemoveTagsFromResource**no se pueden usar para los grupos de parámetros y seguridad predeterminados.
+ **IncreaseReplicaCount** y **ModifyReplicationGroupShardConfiguration**: 
  + Todos los clústeres nuevos agregados al grupo de réplica tendrán las mismas etiquetas aplicadas que el grupo de réplica. 

## Restricciones de las etiquetas
<a name="Tagging-restrictions"></a>

Se aplican las siguientes restricciones básicas a las etiquetas de :
+ Número máximo de etiquetas por recurso: 50
+ Para cada recurso, cada clave de etiqueta debe ser única y cada clave de etiqueta solo puede tener un valor.
+ Longitud máxima de la clave: 128 caracteres Unicode en UTF-8.
+ Longitud máxima del valor: 256 caracteres Unicode en UTF-8.
+ Aunque ElastiCache admite cualquier carácter en sus etiquetas, otros servicios pueden ser restrictivos. Los caracteres permitidos en los servicios son: letras, números y espacios representables en UTF-8, además de los siguientes caracteres: \$1 - = . \$1 : / @
+ Las claves y los valores de las etiquetas distinguen entre mayúsculas y minúsculas.
+ El `aws:` prefijo está reservado para su AWS uso. Si la etiqueta tiene una clave de etiqueta con este prefijo, no puede editar ni eliminar la clave o el valor de la etiqueta. Las etiquetas que tengan el prefijo `aws:` no cuentan para el límite de etiquetas por recurso.

No puede finalizar, detener ni eliminar un recurso basado únicamente en sus etiquetas; debe especificar el identificador del recurso. Por ejemplo, para eliminar instantáneas que etiquetó con una clave de etiqueta llamada `DeleteMe`, debe utilizar la acción `DeleteSnapshot` con los identificadores del recurso de las instantáneas, como `snap-1234567890abcdef0`.

Para obtener más información sobre ElastiCache los recursos que puede etiquetar, consulte[Recursos que se pueden etiquetar](#Tagging-your-resources).

## Ejemplos de etiquetado de recursos
<a name="Tagging-your-resources-example"></a>
+ Creación de una caché sin servidor mediante etiquetas. En este ejemplo, se utiliza Memcached como motor.

  ```
  aws elasticache create-serverless-cache \
      --serverless-cache-name CacheName \
      --engine memcached
      --tags Key="Cost Center", Value="1110001" Key="project",Value="XYZ"
  ```
+ Adición de etiquetas a una caché sin servidor

  ```
  aws elasticache add-tags-to-resource \
  --resource-name arn:aws:elasticache:us-east-1:111111222233:serverlesscache:my-cache \
  --tags Key="project",Value="XYZ" Key="Elasticache",Value="Service"
  ```
+ Adición de etiquetas a un grupo de reproducción.

  ```
  aws elasticache add-tags-to-resource \
  --resource-name arn:aws:elasticache:us-east-1:111111222233:replicationgroup:my-rg \
  --tags Key="project",Value="XYZ" Key="Elasticache",Value="Service"
  ```
+ Creación de un clúster de caché mediante etiquetas.

  ```
  aws elasticache create-cache-cluster \
  --cluster-id testing-tags \
  --cluster-description cluster-test \
  --cache-subnet-group-name test \
  --cache-node-type cache.t2.micro \
  --engine valkey \
  --tags Key="project",Value="XYZ" Key="Elasticache",Value="Service"
  ```
+ Creación de un clúster de caché mediante etiquetas. En este ejemplo, se utiliza Redis como motor.

  ```
  aws elasticache create-cache-cluster \
  --cluster-id testing-tags \
  --cluster-description cluster-test \
  --cache-subnet-group-name test \
  --cache-node-type cache.t2.micro \
  --engine valkey \
  --tags Key="project",Value="XYZ" Key="Elasticache",Value="Service"
  ```
+ Creación de una instantánea sin servidor con etiquetas. En este ejemplo, se utiliza Memcached como motor.

  ```
  aws elasticache create-serverless-cache-snapshot \
  --serverless-cache-name testing-tags \
  --serverless-cache-snapshot-name bkp-testing-tags-scs \
  --tags Key="work",Value="foo"
  ```
+ Creación de una instantánea con etiquetas.

  Actualmente, las instantáneas solo están disponibles para Redis. En este caso, si agrega etiquetas a la solicitud, incluso si el grupo de reproducción contiene etiquetas, la instantánea solo recibirá las etiquetas de la solicitud. 

  ```
  aws elasticache create-snapshot \
  --replication-group-id testing-tags \
  --snapshot-name bkp-testing-tags-rg \
  --tags Key="work",Value="foo"
  ```

## Ejemplos de políticas de control de acceso basadas en etiquetas
<a name="Tagging-access-control"></a>

1. Permitir la acción `AddTagsToResource` a un clúster solo si el clúster tiene la etiqueta Project=XYZ.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "elasticache:AddTagsToResource",
               "Resource": [
                   "arn:aws:elasticache:*:*:cluster:*"
               ],
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceTag/Project": "XYZ"
                   }
               }
           }
       ]
   }
   ```

------

1. Permitir la acción `RemoveTagsFromResource` de un grupo de reproducción si contiene las etiquetas Project y Service y las claves son diferentes de Project y Service.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "elasticache:RemoveTagsFromResource",
               "Resource": [
                   "arn:aws:elasticache:*:*:replicationgroup:*"
               ],
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceTag/Service": "Elasticache",
                       "aws:ResourceTag/Project": "XYZ"
                   },                
                   "ForAnyValue:StringNotEqualsIgnoreCase": {
                       "aws:TagKeys": [
                           "Project",
                           "Service"
                       ]
                   }
               }
           }
       ]
   }
   ```

------

1. Permitir `AddTagsToResource` a cualquier recurso solo si las etiquetas son diferentes de Project y Service.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "elasticache:AddTagsToResource",
               "Resource": [
                   "arn:aws:elasticache:*:*:*:*"
               ],
               "Condition": {
                   "ForAnyValue:StringNotEqualsIgnoreCase": {
                       "aws:TagKeys": [ 
                           "Service", 
                           "Project" 
                       ]
                   }
               }
           }
       ]
   }
   ```

------

1. Denegar la acción `CreateReplicationGroup` si la solicitud tiene `Tag Project=Foo`.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Deny",
               "Action": "elasticache:CreateReplicationGroup",
               "Resource": [
                   "arn:aws:elasticache:*:*:replicationgroup:*"
               ],
               "Condition": {
                   "StringEquals": {
                       "aws:RequestTag/Project": "Foo"
                   }
               }
           }
       ]
   }
   ```

------

1. Denegar la acción `CopySnapshot` si la instantánea fuente tiene la etiqueta Project=XYZ y la etiqueta de la solicitud es Service=Elasticache.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Deny",
               "Action": "elasticache:CopySnapshot",
               "Resource": [
                   "arn:aws:elasticache:*:*:snapshot:*"
               ],
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceTag/Project": "XYZ",
                       "aws:RequestTag/Service": "Elasticache"
                   }
               }
           }
       ]
   }
   ```

------

1. Denegar la acción `CreateCacheCluster` si la etiqueta de solicitud `Project` falta o no es igual a `Dev`, `QA` o `Prod`.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
             {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateCacheCluster"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:parametergroup:*",
                   "arn:aws:elasticache:*:*:subnetgroup:*",
                   "arn:aws:elasticache:*:*:securitygroup:*",
                   "arn:aws:elasticache:*:*:replicationgroup:*"
               ]
           },
           {
               "Effect": "Deny",
               "Action": [
                   "elasticache:CreateCacheCluster"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:cluster:*"
               ],
               "Condition": {
                   "Null": {
                       "aws:RequestTag/Project": "true"
                   }
               }
           },
           {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateCacheCluster",
                   "elasticache:AddTagsToResource"
               ],
               "Resource": "arn:aws:elasticache:*:*:cluster:*",
               "Condition": {
                   "StringEquals": {
                       "aws:RequestTag/Project": [
                           "Dev",
                           "Prod",
                           "QA"
                       ]
                   }
               }
           }
       ]
   }
   ```

------

Para obtener información relacionada acerca de las claves de condición, consulte [Uso de claves de condición](IAM.ConditionKeys.md).

# Monitoreo de costos con etiquetas de asignación de costos
<a name="Tagging"></a>

Cuando añades etiquetas de asignación de costes a tus recursos en Amazon ElastiCache, puedes realizar un seguimiento de los costes agrupando los gastos de tus facturas por valores de etiquetas de recursos.

Una etiqueta de asignación de ElastiCache costes es un par clave-valor que se define y se asocia a un recurso. ElastiCache Las claves y los valores distinguen entre mayúsculas y minúsculas. Puede utilizar una clave de etiqueta para definir una categoría y el valor de la etiqueta puede ser un elemento dentro de esa categoría. Por ejemplo, puede definir una clave de etiqueta `CostCenter` y un valor de etiqueta `10010` para indicar que el recurso va asignado al centro de costos 10010. También puede usar etiquetas para designar recursos para pruebas o para producción a través de una clave como `Environment` y valores como `test` o `production`. Se recomienda utilizar un conjunto coherente de claves de etiqueta que facilite el seguimiento de los costos asociados a los recursos.

Utilice las etiquetas de asignación de costes para organizar la AWS factura y reflejar su propia estructura de costes. Para ello, regístrese para recibir la factura de su AWS cuenta con los valores clave de las etiquetas incluidos. A continuación, para ver los costos de los recursos combinados, organice la información de facturación de acuerdo con los recursos con los mismos valores de clave de etiquetas. Por ejemplo, puede etiquetar varios recursos con un nombre de aplicación específico y luego organizar su información de facturación para ver los costos totales de la aplicación en distintos servicios. 

También puede combinar etiquetas para realizar un seguimiento de los costos con un mayor nivel de detalle. Por ejemplo, para realizar un seguimiento de los costos de su servicio por región, puede utilizar las claves de etiqueta `Service` y `Region`. En un recurso podría tener los valores `ElastiCache` y `Asia Pacific (Singapore)` y en otro recurso, los valores `ElastiCache` y `Europe (Frankfurt)`. A continuación, podrás ver ElastiCache los costes totales desglosados por región. Para obtener más información, consulte [Uso de etiquetas de asignación de costos](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html) en la *Guía del usuario de AWS Billing*.

Puede añadir etiquetas de asignación de ElastiCache costes a los clústeres ElastiCache basados en nodos. Al agregar, enumerar, modificar, copiar o quitar una etiqueta, la operación se aplica únicamente al clúster especificado.

**Características de las etiquetas de asignación de ElastiCache costes**
+ Las etiquetas de asignación de costos se aplican a ElastiCache los recursos que se especifican en las operaciones de CLI y API como un ARN. El tipo de recurso será "clúster".

  Ejemplo de ARN: `arn:aws:elasticache:<region>:<customer-id>:<resource-type>:<resource-name>`

  Ejemplo de ARN: `arn:aws:elasticache:us-west-2:1234567890:cluster:my-cluster`
+ La clave de la etiqueta es el nombre obligatorio de la etiqueta. El valor de cadena de la clave puede tener una longitud de entre 1 y 128 caracteres Unicode y no puede llevar el prefijo `aws:`. La cadena solo puede contener un conjunto Unicode de letras, dígitos, espacios en blanco, guiones bajos ( \$1 ), puntos ( . ), dos puntos ( : ), barras oblicuas ( \$1 ), signos de igual ( = ), signos de suma ( \$1 ), guiones ( - ) o signos de arroba ( @ ).

   
+ El valor de etiqueta es la parte opcional de la etiqueta. El valor de cadena del valor puede tener una longitud de entre 1 y 256 caracteres Unicode y no puede llevar el prefijo `aws:`. La cadena solo puede contener un conjunto Unicode de letras, dígitos, espacios en blanco, guiones bajos ( \$1 ), puntos ( . ), dos puntos ( : ), barras oblicuas ( \$1 ), signos de igual ( = ), signos de suma ( \$1 ), guiones ( - ) o signos de arroba ( @ ).

   
+ Un ElastiCache recurso puede tener un máximo de 50 etiquetas.

   
+ Los valores no deben ser únicos dentro de un conjunto de etiquetas. Por ejemplo, puede disponer de un conjunto de etiquetas donde las claves `Service` y `Application` tienen el valor `ElastiCache`.

AWS no aplica ningún significado semántico a las etiquetas. Las etiquetas se interpretan estrictamente como cadenas de caracteres.AWS no establece automáticamente ninguna etiqueta en ningún ElastiCache recurso.

# Administración de etiquetas de asignación de costos mediante la AWS CLI
<a name="Tagging.Managing.CLI"></a>

Puede utilizar la AWS CLI para agregar, modificar o quitar etiquetas de asignación de costos.

Las etiquetas de asignación de costos se aplican a los clústeres de ElastiCache. El clúster que se va a etiquetar se especifica mediante un ARN (nombre de recurso de Amazon).

Ejemplo de ARN: `arn:aws:elasticache:us-west-2:1234567890:cluster:my-cluster`

**Topics**
+ [Enumeración de etiquetas mediante la AWS CLI](#Tagging.Managing.CLI.List)
+ [Adición de etiquetas mediante la AWS CLI](#Tagging.Managing.CLI.Add)
+ [Modificación de etiquetas mediante la AWS CLI](#Tagging.Managing.CLI.Modify)
+ [Eliminación de etiquetas mediante la AWS CLI](#Tagging.Managing.CLI.Remove)

## Enumeración de etiquetas mediante la AWS CLI
<a name="Tagging.Managing.CLI.List"></a>

Puede utilizar la AWS CLI para enumerar etiquetas en un recurso de ElastiCache existente mediante la operación [list-tags-for-resource](https://docs.aws.amazon.com/cli/latest/reference/elasticache/list-tags-for-resource.html).

El código siguiente utiliza la AWS CLI para obtener una lista de las etiquetas en el clúster de Memcached `my-cluster` en la región us-west-2.

Para Linux, macOS o Unix:

```
aws elasticache list-tags-for-resource \
  --resource-name arn:aws:elasticache:us-west-2:0123456789:cluster:my-cluster
```

Para Windows:

```
aws elasticache list-tags-for-resource ^
  --resource-name arn:aws:elasticache:us-west-2:0123456789:cluster:my-cluster
```

El código siguiente utiliza la AWS CLI para obtener una lista de las etiquetas del nodo de Valkey o Redis OSS `my-cluster-001` en el clúster `my-cluster` de la región us-west-2.

Para Linux, macOS o Unix:

```
aws elasticache list-tags-for-resource \
  --resource-name arn:aws:elasticache:us-west-2:0123456789:cluster:my-cluster-001
```

Para Windows:

```
aws elasticache list-tags-for-resource ^
  --resource-name arn:aws:elasticache:us-west-2:0123456789:cluster:my-cluster-001
```

La salida de esta operación se parecerá a lo siguiente, una lista de todas las etiquetas en el recurso.

```
{
   "TagList": [
      {
         "Value": "10110",
         "Key": "CostCenter"
      },
      {
         "Value": "EC2",
         "Key": "Service"
      }
   ]
}
```

Si no hay etiquetas en el recurso, la salida será una TagList vacía.

```
{
   "TagList": []
}
```

Para obtener más información, consulte la AWS CLI para [list-tags-for-resource](https://docs.aws.amazon.com/cli/latest/reference/elasticache/list-tags-for-resource.html) de ElastiCache.

## Adición de etiquetas mediante la AWS CLI
<a name="Tagging.Managing.CLI.Add"></a>

Puede utilizar la AWS CLI para agregar etiquetas a un recurso de ElastiCache existente mediante la operación [add-tags-to-resource](https://docs.aws.amazon.com/cli/latest/reference/elasticache/add-tags-to-resource.html) de la CLI. Si la clave de etiqueta no existe en el recurso, la clave y el valor se añadirán a los recursos. Si la clave ya existe en el recurso, el valor asociado a dicha clave se actualizará al nuevo valor.

El siguiente código utiliza la AWS CLI para añadir las claves `Service` y `Region` con los valores `elasticache` y `us-west-2` respectivamente en el nodo `my-cluster-001` del clúster `my-cluster` en la región us-west-2.

**Memcached**

Para Linux, macOS o Unix:

```
aws elasticache add-tags-to-resource \
 --resource-name arn:aws:elasticache:us-west-2:0123456789:cluster:my-cluster \
 --tags Key=Service,Value=elasticache \
        Key=Region,Value=us-west-2
```

Para Windows:

```
aws elasticache add-tags-to-resource ^
 --resource-name arn:aws:elasticache:us-west-2:0123456789:cluster:my-cluster ^
 --tags Key=Service,Value=elasticache ^
        Key=Region,Value=us-west-2
```

**Redis**

Para Linux, macOS o Unix:

```
aws elasticache add-tags-to-resource \
 --resource-name arn:aws:elasticache:us-west-2:0123456789:cluster:my-cluster-001 \
 --tags Key=Service,Value=elasticache \
        Key=Region,Value=us-west-2
```

Para Windows:

```
aws elasticache add-tags-to-resource ^
 --resource-name arn:aws:elasticache:us-west-2:0123456789:cluster:my-cluster-001 ^
 --tags Key=Service,Value=elasticache ^
        Key=Region,Value=us-west-2
```

Tras la operación, la salida de esta operación se parecerá a lo siguiente, una lista de todas las etiquetas en el recurso.

```
{
   "TagList": [
      {
         "Value": "elasticache",
         "Key": "Service"
      },
      {
         "Value": "us-west-2",
         "Key": "Region"
      }
   ]
}
```

Para obtener más información, consulte la AWS CLI para [add-tags-to-resource](https://docs.aws.amazon.com/cli/latest/reference/elasticache/add-tags-to-resource.html) de ElastiCache.

También puede utilizar la AWS CLI para agregar etiquetas a un clúster al crear un nuevo clúster utilizando la operación [create-cache-cluster](https://docs.aws.amazon.com/cli/latest/reference/elasticache/create-cache-cluster.html). No se pueden agregar etiquetas al crear un clúster mediante la Management Console de ElastiCache. Una vez creado el clúster, puede utilizar la consola para agregar etiquetas al clúster.

## Modificación de etiquetas mediante la AWS CLI
<a name="Tagging.Managing.CLI.Modify"></a>

Puede utilizar la AWS CLI para modificar las etiquetas de un clúster de ElastiCache.

Para modificar las etiquetas:
+ Use [add-tags-to-resource](https://docs.aws.amazon.com/cli/latest/reference/elasticache/add-tags-to-resource.html) para agregar una etiqueta y un valor nuevos o para cambiar el valor asociado a una etiqueta existente.
+ Use [remove-tags-from-resource](https://docs.aws.amazon.com/cli/latest/reference/elasticache/remove-tags-from-resource.html) para quitar etiquetas especificadas del recurso.

La salida de cualquier operación será una lista de las etiquetas y sus valores en el clúster especificado.

## Eliminación de etiquetas mediante la AWS CLI
<a name="Tagging.Managing.CLI.Remove"></a>

Puede utilizar la AWS CLI para quitar etiquetas de un clúster de ElastiCache for Memcached mediante la operación [remove-tags-from-resource](https://docs.aws.amazon.com/cli/latest/reference/elasticache/remove-tags-from-resource.html).

El código siguiente utiliza la AWS CLI para quitar las etiquetas con las claves `Service` y `Region` del nodo `my-cluster-001` en  el clúster `my-cluster` de la región us-west-2.

Para Linux, macOS o Unix:

```
aws elasticache remove-tags-from-resource \
 --resource-name arn:aws:elasticache:us-west-2:0123456789:cluster:my-cluster \
 --tag-keys PM Service
```

Para Windows:

```
aws elasticache remove-tags-from-resource ^
 --resource-name arn:aws:elasticache:us-west-2:0123456789:cluster:my-cluster ^
 --tag-keys PM Service
```

En Redis OSS, el código siguiente utiliza la AWS CLI para quitar las etiquetas con las claves `Service` y `Region` del nodo `my-cluster-001` en el clúster `my-cluster` de la región us-west-2.

Para Linux, macOS o Unix:

```
aws elasticache remove-tags-from-resource \
 --resource-name arn:aws:elasticache:us-west-2:0123456789:cluster:my-cluster-001 \
 --tag-keys PM Service
```

Para Windows:

```
aws elasticache remove-tags-from-resource ^
 --resource-name arn:aws:elasticache:us-west-2:0123456789:cluster:my-cluster-001 ^
 --tag-keys PM Service
```

Tras la operación, la salida de esta operación se parecerá a lo siguiente, una lista de todas las etiquetas en el recurso.

```
{
   "TagList": []
}
```

Para obtener más información, consulte la AWS CLI para [remove-tags-from-resource](https://docs.aws.amazon.com/cli/latest/reference/elasticache/remove-tags-from-resource.html) de ElastiCache.

# Administración de etiquetas de asignación de costos mediante la API de ElastiCache
<a name="Tagging.Managing.API"></a>

Puede utilizar la API de ElastiCache para agregar, modificar o quitar etiquetas de asignación de costos.

Las etiquetas de asignación de costos se aplican a los clústeres de ElastiCache for Memcached. El clúster que se va a etiquetar se especifica mediante un ARN (nombre de recurso de Amazon).

Ejemplo de ARN: `arn:aws:elasticache:us-west-2:1234567890:cluster:my-cluster`

**Topics**
+ [Enumeración de etiquetas mediante la API de ElastiCache](#Tagging.Managing.API.List)
+ [Adición de etiquetas mediante la API de ElastiCache](#Tagging.Managing.API.Add)
+ [Modificación de etiquetas con la API de ElastiCache](#Tagging.Managing.API.Modify)
+ [Eliminación de etiquetas con la API de ElastiCache](#Tagging.Managing.API.Remove)

## Enumeración de etiquetas mediante la API de ElastiCache
<a name="Tagging.Managing.API.List"></a>

Puede utilizar la API de ElastiCache para enumerar etiquetas en un recurso existente mediante la operación [ListTagsForResource](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ListTagsForResource.html).

En Memcached, el siguiente código utiliza la API de ElastiCache para enumerar las etiquetas en el recurso `my-cluster` en la región us-west-2.

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=ListTagsForResource
   &ResourceName=arn:aws:elasticache:us-west-2:0123456789:cluster:my-cluster
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Version=2015-02-02
   &Timestamp=20150202T192317Z
   &X-Amz-Credential=<credential>
```

En Redis OSS, el siguiente código utiliza la API de ElastiCache para enumerar las etiquetas en el recurso `my-cluster-001` en la región us-west-2.

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=ListTagsForResource
   &ResourceName=arn:aws:elasticache:us-west-2:0123456789:cluster:my-cluster-001
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Version=2015-02-02
   &Timestamp=20150202T192317Z
   &X-Amz-Credential=<credential>
```

## Adición de etiquetas mediante la API de ElastiCache
<a name="Tagging.Managing.API.Add"></a>

Puede utilizar la API de ElastiCache para agregar etiquetas a un clúster de ElastiCache existente mediante la operación [AddTagsToResource](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_AddTagsToResource.html). Si la clave de etiqueta no existe en el recurso, la clave y el valor se añadirán a los recursos. Si la clave ya existe en el recurso, el valor asociado a dicha clave se actualizará al nuevo valor.

El siguiente código utiliza la API de ElastiCache para agregar las claves `Service` y `Region` con los valores `elasticache` y `us-west-2` respectivamente. En el caso de Memcached, esto se aplica al recurso `my-cluster`. En el caso de Redis OSS, esto se aplica al recurso `my-cluster-001` de la región us-west-2. 

**Memcached**

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=AddTagsToResource
   &ResourceName=arn:aws:elasticache:us-west-2:0123456789:cluster:my-cluster
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Tags.member.1.Key=Service 
   &Tags.member.1.Value=elasticache
   &Tags.member.2.Key=Region
   &Tags.member.2.Value=us-west-2
   &Version=2015-02-02
   &Timestamp=20150202T192317Z
   &X-Amz-Credential=<credential>
```

**Redis**

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=AddTagsToResource
   &ResourceName=arn:aws:elasticache:us-west-2:0123456789:cluster:my-cluster-001
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Tags.member.1.Key=Service 
   &Tags.member.1.Value=elasticache
   &Tags.member.2.Key=Region
   &Tags.member.2.Value=us-west-2
   &Version=2015-02-02
   &Timestamp=20150202T192317Z
   &X-Amz-Credential=<credential>
```

Para obtener más información, consulte [AddTagsToResource](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_AddTagsToResource.html) en la *Referencia de la API de Amazon ElastiCache*.

## Modificación de etiquetas con la API de ElastiCache
<a name="Tagging.Managing.API.Modify"></a>

Puede utilizar la API de ElastiCache para modificar las etiquetas de un clúster de ElastiCache.

Para modificar el valor de una etiqueta:
+ Use la operación [AddTagsToResource](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_AddTagsToResource.html) para agregar una etiqueta y un valor nuevos o para cambiar el valor de una etiqueta existente.
+ Use [RemoveTagsFromResource](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_RemoveTagsFromResource.html) para quitar etiquetas del recurso.

La salida de cualquier operación será una lista de las etiquetas y sus valores en el recurso especificado.

Use [RemoveTagsFromResource](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_RemoveTagsFromResource.html) para quitar etiquetas del recurso.

## Eliminación de etiquetas con la API de ElastiCache
<a name="Tagging.Managing.API.Remove"></a>

Puede utilizar la API de ElastiCache para quitar etiquetas de un clúster de ElastiCache for Memcached mediante la operación [RemoveTagsFromResource](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_RemoveTagsFromResource.html).

El siguiente código utiliza la API de ElastiCache para quitar las etiquetas con las claves `Service` y `Region` del  nodo `my-cluster-001` en el  clúster `my-cluster` de la región us-west-2.

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=RemoveTagsFromResource
   &ResourceName=arn:aws:elasticache:us-west-2:0123456789:cluster:my-cluster-001
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &TagKeys.member.1=Service
   &TagKeys.member.2=Region
   &Version=2015-02-02
   &Timestamp=20150202T192317Z
   &X-Amz-Credential=<credential>
```

# Uso del enfoque Well-Architected de Amazon ElastiCache
<a name="WellArchitechtedLens"></a>

En esta sección se describe el enfoque Well-Architected de Amazon ElastiCache, una colección de principios de diseño y directrices para diseñar cargas de trabajo de ElastiCache con una buena arquitectura.
+ El enfoque de ElastiCache se suma al [Marco de AWS Well-Architected](https://docs.aws.amazon.com/wellarchitected/latest/framework/welcome.html).
+ Cada pilar tiene un conjunto de preguntas para ayudar a iniciar el debate sobre la arquitectura de ElastiCache.
  + Cada pregunta tiene una serie de prácticas principales junto con sus puntuaciones para la presentación de informes.
    + *Obligatorio*: necesario antes de pasar a producción (su ausencia representa un alto riesgo)
    + *Lo mejor*: el mejor estado posible en el que podría estar un cliente
    + *Bueno*: lo que recomendamos a los clientes que hagan (si no hay un riesgo medio)
+ Terminología de Well-Architected
  + [Componente](https://docs.aws.amazon.com/wellarchitected/latest/framework/definitions.html): código, configuración y recursos de AWS que, en conjunto, cumplen con un requisito. Los componentes interactúan con otros componentes y, a menudo, equivalen a un servicio en las arquitecturas de microservicios.
  + [Carga de trabajo](https://docs.aws.amazon.com/wellarchitected/latest/framework/definitions.html): conjunto de componentes que, en conjunto, ofrecen valor empresarial. Algunos ejemplos de cargas de trabajo son sitios web de marketing, sitios web de comercio electrónico, el backend de una aplicación móvil, plataformas de análisis, etc.

**nota**  
Esta guía no se ha actualizado para incluir información sobre el almacenamiento en caché de ElastiCache sin servidor y el nuevo motor de Valkey.

**Topics**
+ [Pilar de excelencia operativa del enfoque Well-Architected de Amazon ElastiCache](OperationalExcellencePillar.md)
+ [Pilar de seguridad del enfoque Well-Architected de Amazon ElastiCache](SecurityPillar.md)
+ [Pilar de fiabilidad del enfoque Well-Architected de Amazon ElastiCache](ReliabilityPillar.md)
+ [Pilar de eficiencia en el ElastiCache rendimiento de Amazon Well-Architected Lens](PerformanceEfficiencyPillar.md)
+ [Pilar de optimización de costos del enfoque Well-Architected de Amazon ElastiCache](CostOptimizationPillar.md)

# Pilar de excelencia operativa del enfoque Well-Architected de Amazon ElastiCache
<a name="OperationalExcellencePillar"></a>

El pilar de la excelencia operativa se centra en el funcionamiento y la supervisión de los sistemas para ofrecer valor empresarial, y en la mejora continua de los procesos y los procedimientos. Los temas clave incluyen la automatización de los cambios, la respuesta a los eventos y la definición de estándares para administrar las operaciones diarias.

**Topics**
+ [OE 1: ¿Cómo entiende y responde a las alertas y eventos activados por su clúster de ElastiCache?](#OperationalExcellencePillarOE1)
+ [OE 2: ¿Cuándo y cómo se escalan los clústeres de ElastiCache existentes?](#OperationalExcellencePillarOE2)
+ [OE 3: ¿Cómo se administran los recursos del clúster de ElastiCache y se mantiene actualizado?](#OperationalExcellencePillarOE3)
+ [OE 4: ¿Cómo se administran las conexiones de los clientes a sus clústeres de ElastiCache?](#OperationalExcellencePillarOE4)
+ [OE 5: ¿Cómo se implementan los componentes de ElastiCache para una carga de trabajo?](#OperationalExcellencePillarOE5)
+ [OE 6: ¿Cómo se planifican y mitigan los errores?](#OperationalExcellencePillarOE6)
+ [OE 7: ¿Cómo se solucionan los problemas de los eventos del motor de Valkey o Redis OSS?](#OperationalExcellencePillarOE7)

## OE 1: ¿Cómo entiende y responde a las alertas y eventos activados por su clúster de ElastiCache?
<a name="OperationalExcellencePillarOE1"></a>

**Introducción a nivel de pregunta: **Si utiliza clústeres de ElastiCache, puede recibir notificaciones y alertas de forma opcional cuando se produzcan determinados eventos. De forma predeterminada, ElastiCache registra los [eventos](ECEvents.md) relacionados con sus recursos, como la conmutación por error, el reemplazo de nodos, la operación de escalado y el mantenimiento programado, entre otros. Cada evento incluye la fecha y la hora, el nombre y el tipo de origen y una descripción.

**Ventaja a nivel de pregunta: **La capacidad de comprender y gestionar los motivos subyacentes de los eventos que activan las alertas generadas por su clúster le permite operar de manera más eficaz y responder a los eventos de manera adecuada.
+ **[Obligatorio]** Revise los eventos generados por ElastiCache en la consola de ElastiCache (después de seleccionar su región) o mediante el comando [describe-events](https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-events.html) de la [Interfaz de línea de comandos de Amazon](https://aws.amazon.com/cli) (AWS CLI) y la [API de ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeEvents.html). Configure ElastiCache para que envíe notificaciones de los eventos de clúster importantes mediante Amazon Simple Notification Service (Amazon SNS). El uso de Amazon SNS con sus clústeres le permite realizar acciones mediante programación en los eventos de ElastiCache.
  + Hay dos grandes categorías de eventos: eventos actuales y programados. La lista de eventos actuales incluye: creación y eliminación de recursos, operaciones de escalado, conmutación por error, reinicio de nodos, creación de instantáneas, modificación de los parámetros del clúster, renovación del certificado de CA, eventos de error (error de aprovisionamiento del clúster [VPC o ENI], errores de escalado [ENI] y errores de instantáneas). La lista de eventos programados incluye: reemplazo de nodos programado durante el período de mantenimiento y reemplazo de nodos reprogramado.
  + Si bien es posible que no necesite reaccionar de inmediato ante algunos de estos eventos, es fundamental analizar primero todos los eventos de error:
    + ElastiCache:AddCacheNodeFailed
    + ElastiCache:CacheClusterProvisioningFailed
    + ElastiCache:CacheClusterScalingFailed
    + ElastiCache:CacheNodesRebooted
    + ElastiCache:SnapshotFailed (solo Valkey o Redis OSS)
  + **[Recursos]:**
    + [Gestión de las ElastiCache notificaciones de Amazon SNS](ECEvents.SNS.md)
    + [Notificaciones de eventos y Amazon SNS](ElastiCacheSNS.md)
+ **[Lo mejor] **Para automatizar las respuestas a los eventos, utilice las capacidades de los productos y servicios de AWS, como las funciones de Lambda y SNS. Siga las prácticas recomendadas y haga cambios pequeños, frecuentes y reversibles, como código para que sus operaciones evolucionen a lo largo del tiempo. Utilice las métricas de Amazon CloudWatch para supervisar los clústeres. 

  **[Recursos]:** [Monitor ElastiCache (cluster mode disabled) read replica endpoints using AWS Lambda, Amazon Route 53, and Amazon SNS](https://aws.amazon.com/blogs/database/monitor-amazon-elasticache-for-redis-cluster-mode-disabled-read-replica-endpoints-using-aws-lambda-amazon-route-53-and-amazon-sns/) para un caso de uso que emplea Lambda y SNS. 

## OE 2: ¿Cuándo y cómo se escalan los clústeres de ElastiCache existentes?
<a name="OperationalExcellencePillarOE2"></a>

**Introducción a nivel de pregunta: **El dimensionamiento correcto del clúster de ElastiCache es un acto de equilibrio que debe evaluarse cada vez que se produzcan cambios en los tipos de carga de trabajo subyacentes. El objetivo es operar con el entorno del tamaño adecuado para la carga de trabajo.

**Ventaja a nivel de pregunta: **La sobreutilización de los recursos puede provocar una latencia elevada y una disminución general del rendimiento. Por otro lado, la infrautilización puede provocar un aprovisionamiento excesivo de recursos con una optimización de costos deficiente. El dimensionamiento correcto de los entornos, puede lograr un equilibrio entre la eficiencia del rendimiento y la optimización de costos. Para corregir la utilización excesiva o insuficiente de los recursos, ElastiCache puede escalarse en dos dimensiones. Puede escalar verticalmente aumentando o disminuyendo la capacidad de los nodos. Y puede escalar horizontalmente añadiendo y eliminando nodos.
+ **[Obligatorio] **Resuelva la sobreutilización de la CPU y la red en los nodos principales: descargue y redirija las operaciones de lectura a los nodos de réplica. Utilice nodos de réplica para las operaciones de lectura a fin de reducir la utilización del nodo principal. Para configurar esto en la biblioteca cliente de Valkey o Redis OSS, conéctese al punto de conexión del lector de ElastiCache para el modo de clúster deshabilitado o utilice el comando READONLY para el modo de clúster habilitado.

  **[Recursos]:**
  + [Búsqueda de puntos de conexión en ElastiCache](Endpoints.md)
  + [Cluster Right-Sizing](https://aws.amazon.com/blogs/database/five-workload-characteristics-to-consider-when-right-sizing-amazon-elasticache-redis-clusters/)
  + [Comando READONLY](https://valkey.io/commands/readonly)
+ **[Obligatorio] **Supervise la utilización de los recursos cruciales del clúster, como la CPU, la memoria y la red. Es necesario realizar un seguimiento del uso de estos recursos específicos del clúster para tomar una decisión de escalado y determinar el tipo de operación de escalado. Si el modo de clúster de ElastiCache está deshabilitado, los nodos principales y de réplica pueden escalar verticalmente. Los nodos de réplica también pueden escalar horizontalmente de 0 a 5 nodos. Si el modo de clúster está habilitado, se aplica esto mismo a cada partición del clúster. Además, puede aumentar o reducir el número de particiones.

  **[Recursos]:**
  + [Monitoring best practices with ElastiCache using Amazon CloudWatch](https://aws.amazon.com/blogs/database/monitoring-best-practices-with-amazon-elasticache-for-redis-using-amazon-cloudwatch/)
  + [Escalado de clústeres de ElastiCache para Valkey y Redis OSS](Scaling.md)
  + [Escalado de clústeres de ElastiCache para Memcached](Scaling.md)
+ **[Lo mejor] **Supervisar el rendimiento a lo largo del tiempo puede ayudar a detectar cambios en la carga de trabajo que pasarían desapercibidos si se hiciera en un momento determinado. Para detectar tendencias a más largo plazo, utilice las métricas de CloudWatch para analizar intervalos de tiempo más largos. Los conocimientos obtenidos al observar períodos prolongados de métricas de CloudWatch deberían servir de base para pronosticar el uso de los recursos del clúster. Los datos y las métricas de CloudWatch están disponibles durante un máximo de 455 días.

  **[Recursos]:**
  + [Supervisión de ElastiCache con métricas de CloudWatch](CacheMetrics.md)
  + [Monitoring Memcached with CloudWatch Metrics](CacheMetrics.md)
  + [Monitoring best practices with ElastiCache using Amazon CloudWatch](https://aws.amazon.com/blogs/database/monitoring-best-practices-with-amazon-elasticache-for-redis-using-amazon-cloudwatch/)
+ **[Lo mejor] **Si sus recursos de ElastiCache se crean con CloudFormation, se recomienda realizar los cambios mediante plantillas de CloudFormation para preservar la coherencia operativa y evitar cambios de configuración no administrados y desviaciones de pila.

  **[Recursos]:**
  + [ElastiCache resource type reference for CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ElastiCache.html)
+ **[Lo mejor] **Automatice sus operaciones de escalado mediante los datos operativos del clúster y defina umbrales en CloudWatch para configurar las alarmas. Utilice CloudWatch Events y Simple Notification Service (SNS) para activar funciones de Lambda y ejecutar una API de ElastiCache para escalar los clústeres automáticamente. Un ejemplo sería añadir una partición al clúster cuando la métrica `EngineCPUUtilization` alcance el 80 % durante un período de tiempo prolongado. Otra opción sería utilizar `DatabaseMemoryUsedPercentages` como umbral basado en la memoria.

  **[Recursos]:**
  + [Using Amazon CloudWatch Alarms](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)
  + [¿Qué es Amazon CloudWatch Events?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html)
  + [Uso de AWS Lambda con Amazon Simple Notification Service](https://docs.aws.amazon.com/lambda/latest/dg/with-sns.html)
  + [Referencia de la API de ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/Welcome.html)

## OE 3: ¿Cómo se administran los recursos del clúster de ElastiCache y se mantiene actualizado?
<a name="OperationalExcellencePillarOE3"></a>

**Introducción a nivel de pregunta: **Al operar a escala, es fundamental que pueda localizar e identificar todos sus recursos de ElastiCache. A la hora de implementar nuevas características de la aplicación, debe crear una simetría entre las versiones del clúster en todos los tipos de entornos de ElastiCache: desarrollo, pruebas y producción. Los atributos de los recursos permiten separar los entornos para diferentes objetivos operativos, por ejemplo, cuando se implementan nuevas características y habilitan nuevos mecanismos de seguridad. 

**Ventaja a nivel de pregunta: **La separación de los entornos de desarrollo, pruebas y producción es la mejor práctica operativa. También se recomienda aplicar los parches de software más recientes a los clústeres y nodos de todos los entornos mediante procesos bien conocidos y documentados. Al aprovechar las características nativas de ElastiCache, su equipo de ingeniería puede centrarse en cumplir los objetivos empresariales y no en el mantenimiento de ElastiCache.
+ **[Lo mejor] **Ejecute el motor con la versión más reciente disponible y aplique las actualizaciones de autoservicio tan pronto como estén disponibles. ElastiCache actualiza automáticamente su infraestructura subyacente durante el período de mantenimiento especificado del clúster. Sin embargo, los nodos que se ejecutan en sus clústeres se actualizan mediante actualizaciones de autoservicio. Estas actualizaciones pueden ser de dos tipos: parches de seguridad o actualizaciones de software menores. Asegúrese de entender la diferencia entre los tipos de parches y cuándo se aplican.

  **[Recursos]:**
  + [Actualizaciones de autoservicio en Amazon ElastiCache](Self-Service-Updates.md)
  + [Página de ayuda de actualizaciones de servicio y mantenimiento administrado de Amazon ElastiCache](https://aws.amazon.com/elasticache/elasticache-maintenance/)
+ **[Lo mejor]** Organice y administre sus recursos de ElastiCache mediante etiquetas. Utilice las etiquetas en los grupos de replicación y no en los nodos individuales. Puede configurar las etiquetas de modo que se muestren cuando consulte los recursos y puede utilizarlas para realizar búsquedas y aplicar filtros. Debe utilizar los grupos de recursos para crear y mantener fácilmente colecciones de recursos que compartan conjuntos comunes de etiquetas.

  **[Recursos]:**
  + [Tagging Best Practices](https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf)
  + [ElastiCache resource type reference for CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ElastiCache.html)
  + [Grupos de parámetros](ParameterGroups.Engine.md#ParameterGroups.Redis)

## OE 4: ¿Cómo se administran las conexiones de los clientes a sus clústeres de ElastiCache?
<a name="OperationalExcellencePillarOE4"></a>

**Introducción a nivel de pregunta: **Al operar a escala, debe comprender cómo se conectan sus clientes con el clúster de ElastiCache para administras los aspectos operativos de la aplicación (como los tiempos de respuesta). 

**Ventaja a nivel de pregunta: **Al elegir el mecanismo de conexión más adecuado, se garantiza que la aplicación no se desconecte debido a errores de conectividad, como los tiempos de espera.
+ **[Obligatorio] **Separe las operaciones de lectura de las de escritura y conéctese a los nodos de réplica para ejecutar las operaciones de lectura. Sin embargo, tenga en cuenta que al separar las operaciones de escritura de las de lectura, perderá la capacidad de leer una clave inmediatamente después de escribirla debido a la naturaleza asincrónica de la replicación de Valkey y Redis OSS. Se puede utilizar el comando WAIT para mejorar la seguridad de los datos en el mundo real y obligar a las réplicas a confirmar las escrituras antes de responder a los clientes, con un costo de rendimiento general. El uso de nodos de réplica para las operaciones de lectura se puede configurar en la biblioteca cliente de ElastiCache mediante el punto de conexión de lector de ElastiCache para el modo de clúster deshabilitado. Para el modo de clúster habilitado, utilice el comando READONLY. En muchas de las bibliotecas de cliente de ElastiCache, READONLY se implementa de forma predeterminada o mediante la configuración.

  **[Recursos]:**
  + [Búsqueda de puntos de conexión en ElastiCache](Endpoints.md)
  + [READONLY](https://valkey.io/commands/readonly)
+ **[Obligatorio] **Utilice la agrupación de conexiones. El establecimiento de una conexión TCP tiene un costo en términos de tiempo de CPU tanto para el cliente como para el servidor, y la agrupación permite reutilizar la conexión TCP. 

  Para reducir la sobrecarga de conexiones, debe utilizar la agrupación de conexiones. Con un conjunto de conexiones, la aplicación puede reutilizar y liberar conexiones “a voluntad”, sin el costo de establecer la conexión. Para implementar la agrupación de conexiones mediante la biblioteca cliente de ElastiCache (si es compatible) con un marco disponible para su entorno de aplicaciones o créelo desde cero.
+ **[Lo mejor] **Asegúrese de que el tiempo de espera del socket del cliente esté establecido en, al menos, un segundo (en lugar del típico valor predeterminado de “ninguno” en numerosos clientes).
  + Si se establece un valor de tiempo de espera demasiado bajo, es posible que se produzcan tiempos de espera cuando la carga del servidor es alta. Si se establece demasiado alto, la aplicación puede tardar mucho en detectar problemas de conexión.
  + Controle el volumen de nuevas conexiones a través de la implementación de la agrupación de conexiones en su aplicación cliente. Esto reduce la latencia y el uso de CPU necesarios para abrir y cerrar las conexiones y realizar un protocolo de enlace de TLS si TLS está habilitado en el clúster.

  **[Recursos]:** [Configure ElastiCache for higher availability](https://aws.amazon.com/blogs/database/configuring-amazon-elasticache-for-redis-for-higher-availability/)
+ **[Bueno] **El uso de la canalización (cuando los casos de uso lo permitan) puede aumentar significativamente el rendimiento.
  + La canalización reduce el tiempo de ida y vuelta (RTT) entre los clientes de la aplicación y el clúster, y es posible procesar nuevas solicitudes incluso si el cliente aún no ha leído las respuestas anteriores.
  + Con la canalización, puede enviar varios comandos al servidor sin esperar a recibir respuestas o confirmaciones. La desventaja de la canalización es que, cuando finalmente se obtienen todas las respuestas de forma masiva, es posible que se haya producido un error que no se detectará hasta el final.
  + Implemente métodos para reintentar las solicitudes cuando se devuelva un error que omita la solicitud incorrecta.

  **[Recursos]:** [Pipelining](https://valkey.io/topics/pipelining/)

## OE 5: ¿Cómo se implementan los componentes de ElastiCache para una carga de trabajo?
<a name="OperationalExcellencePillarOE5"></a>

**Introducción a nivel de pregunta: **Los entornos de ElastiCache se pueden implementar manualmente a través de la consola de AWS o mediante programación mediante API, CLI, kits de herramientas, etc. Las prácticas recomendadas de excelencia operativa sugieren automatizar las implementaciones mediante código siempre que sea posible. Además, los clústeres de ElastiCache pueden aislarse por carga de trabajo o combinarse para optimizar los costos.

**Ventaja a nivel de pregunta: **La elección del mecanismo de implementación más adecuado para sus entornos de ElastiCache puede mejorar la excelencia operativa con el tiempo. Se recomienda realizar operaciones como código siempre que sea posible para minimizar los errores humanos y aumentar la repetibilidad, la flexibilidad y el tiempo de respuesta a los eventos.

Al comprender los requisitos de aislamiento de la carga de trabajo, puede optar por tener entornos de ElastiCache dedicados por carga de trabajo o combinar varias cargas de trabajo en clústeres individuales o combinaciones de los mismos. Comprender las soluciones de compromiso puede ayudar a lograr un equilibrio entre la excelencia operativa y la optimización de costos.
+ **[Obligatorio]** Comprenda las opciones de implementación disponibles para ElastiCache y automatice estos procedimientos siempre que sea posible. Las posibles vías de automatización incluyen CloudFormation, AWS CLI/SDK y API.

  **[Recursos]: **
  + [Amazon ElastiCache resource type reference](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ElastiCache.html)
  + [elasticache](https://docs.aws.amazon.com/cli/latest/reference/elasticache/index.html)
  + [Referencia de la API de Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/Welcome.html)
+ **[Obligatorio]** Para todas las cargas de trabajo, determine el nivel de aislamiento del clúster necesario. 
  + **[Lo mejor]:** Alto aislamiento: asignación 1:1 de la carga de trabajo al clúster. Permite un control más preciso sobre el acceso, el tamaño, el escalado y la administración de los recursos de ElastiCache por carga de trabajo.
  + **[Mejor]** Aislamiento medio: M:1 aislado por propósito, pero quizás compartido entre varias cargas de trabajo (por ejemplo, un clúster dedicado al almacenamiento en caché de las cargas de trabajo y otro dedicado a la mensajería).
  + **[Bueno]:** Bajo aislamiento: M:1 multiusos, totalmente compartido. Recomendado para cargas de trabajo en las que es aceptable el acceso compartido.

## OE 6: ¿Cómo se planifican y mitigan los errores?
<a name="OperationalExcellencePillarOE6"></a>

**Introducción a nivel de pregunta: **La excelencia operativa incluye anticipar los errores mediante la realización de ejercicios “ante mortem” periódicos para identificar las posibles fuentes de errores y poder eliminarlas o mitigarlas. ElastiCache ofrece una API de conmutación por error que permite simular eventos de error en los nodos con fines de prueba.

**Ventaja a nivel de pregunta: **Al probar los escenarios de error con antelación, puede averiguar cómo afectan a su carga de trabajo. Esto permite probar de forma segura los procedimientos de respuesta y su eficacia. Además su equipo se familiarizará con su ejecución.

**[Obligatorio]** Realice pruebas de conmutación por error periódicas en las cuentas de desarrollo/pruebas. [TestFailover](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_TestFailover.html)

## OE 7: ¿Cómo se solucionan los problemas de los eventos del motor de Valkey o Redis OSS?
<a name="OperationalExcellencePillarOE7"></a>

**Introducción a nivel de pregunta: **La excelencia operativa requiere la capacidad de investigar tanto la información a nivel de servicio como a nivel de motor para analizar la condición y el estado de sus clústeres. ElastiCache puede emitir registros del motor de Valkey o Redis OSS tanto a Amazon CloudWatch como a Amazon Kinesis Data Firehose.

**Ventaja relacionada con preguntas: **al habilitar los registros del motor de Valkey o Redis OSS en los clústeres de Amazon ElastiCache, se proporciona información sobre los eventos que afectan al estado y al rendimiento de los clústeres. Los registros del motor de Valkey o Redis OSS proporcionan datos directamente del motor que no están disponibles a través del mecanismo de eventos de ElastiCache. Mediante una observación detenida de los eventos de ElastiCache (consulte OE-1 más arriba) y de los registros del motor, es posible determinar el orden de los eventos a la hora de solucionar problemas tanto desde la perspectiva del servicio de ElastiCache como desde la perspectiva del motor.
+ **[Obligatorio]** Asegúrese de que la funcionalidad de registro del motor de Redis OSS esté habilitada. Esta funcionalidad está disponible en ElastiCache versión 6.2 para Redis OSS y posteriores. Esto se puede hacer durante la creación del clúster o modificándolo después de la creación. 
  + Determine si los Registros de Amazon CloudWatch o Amazon Kinesis Data Firehose son el destino adecuado para los registros del motor de Redis OSS.
  + Seleccione un registro de destino adecuado en CloudWatch o Kinesis Data Firehose para conservar los registros. Si tiene varios clústeres, considere la posibilidad de utilizar un registro de destino diferente para cada clúster, ya que esto ayudará a aislar los datos a la hora de solucionar problemas.

  **[Recursos]:**
  + Entrega de registros: [Entrega de registro](Log_Delivery.md)
  + Destinos de registro: [Registros de Amazon CloudWatch](Logging-destinations.md#Destination_Specs_CloudWatch_Logs)
  + Introducción a los Registros de Amazon CloudWatch [¿Qué es Amazon CloudWatch Logs?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html)
  + Introducción a Amazon Kinesis Data Firehose: [¿Qué es Amazon Kinesis Data Firehose?](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html)
+ **[Lo mejor]** Si utiliza Registros de Amazon CloudWatch, considere la posibilidad de utilizar la Información de registros de Amazon CloudWatch para consultar el registro del motor de Valkey o Redis OSS y obtener información importante.

  Por ejemplo, cree una consulta en el grupo de registros de CloudWatch que contenga los registros del motor de Valkey o Redis OSS y devuelva los eventos con un nivel de registro de ADVERTENCIA, como:

  ```
  fields @timestamp, LogLevel, Message
  | sort @timestamp desc
  | filter LogLevel = "WARNING"
  ```

  **[Recursos]:**[Análisis de los datos de registros con Amazon CloudWatch Logs Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html)

# Pilar de seguridad del enfoque Well-Architected de Amazon ElastiCache
<a name="SecurityPillar"></a>

El pilar de seguridad se centra en proteger la información y los sistemas. Los temas clave incluyen la confidencialidad e integridad de los datos, la identificación y administración de quién puede hacer qué con la administración de privilegios, la protección de los sistemas y el establecimiento de controles para detectar eventos de seguridad.

**Topics**
+ [SEC 1: ¿Qué medidas está tomando para controlar el acceso autorizado a los datos de ElastiCache?](#SecurityPillarSEC1)
+ [SEC 2: ¿Requieren sus aplicaciones autorización adicional para ElastiCache además de los controles basados en red?](#SecurityPillarSEC2)
+ [SEC 3: ¿Existe el riesgo de que los comandos se ejecuten de forma inadvertida y provoquen la pérdida de datos o errores?](#SecurityPillarSEC3)
+ [SEC 4: ¿Cómo se garantiza el cifrado de datos en reposo con ElastiCache?](#SecurityPillarSEC4)
+ [SEC 5: ¿Cómo se cifran los datos en tránsito con ElastiCache?](#SecurityPillarSEC5)
+ [SEC 6: ¿Cómo se restringe el acceso a los recursos del plano de control?](#SecurityPillarSEC6)
+ [SEC 7: ¿Cómo se detectan los eventos de seguridad y cómo se responde a ellos?](#SecurityPillarSEC7)

## SEC 1: ¿Qué medidas está tomando para controlar el acceso autorizado a los datos de ElastiCache?
<a name="SecurityPillarSEC1"></a>

**Introducción a nivel de pregunta: **Todos los clústeres de ElastiCache están diseñados de forma que es posible acceder a ellos desde instancias de Amazon Elastic Compute Cloud en una VPC, funciones sin servidor (AWS Lambda) o contenedores (Amazon Elastic Container Service). El escenario más frecuente es obtener acceso a un clúster de ElastiCache desde una instancia de Amazon Elastic Compute Cloud en la misma Amazon Virtual Private Cloud (Amazon Virtual Private Cloud). Antes de poder conectarse a un clúster desde una instancia de Amazon EC2, debe autorizar a la instancia de Amazon EC2 el acceso al clúster. Para acceder a un clúster de ElastiCache que se ejecuta en una VPC, es necesario conceder acceso de red al clúster.

**Ventaja a nivel de pregunta: **El acceso a la red en el clúster se controla mediante grupos de seguridad de VPC. Un grupo de seguridad funciona como un firewall virtual para las instancias de Amazon EC2 para controlar el tráfico entrante y saliente. Las reglas de entrada controlan el tráfico entrante a la instancia y las reglas de salida controlan el tráfico saliente desde la instancia. En el caso de ElastiCache, al lanzar un clúster, es necesario asociar un grupo de seguridad. Esto garantiza que haya reglas de tráfico entrante y saliente vigentes para todos los nodos que componen el clúster. Además, ElastiCache está configurado para desplegarse exclusivamente en subredes privadas, de modo que solo se pueda acceder a ellas a través de la red privada de la VPC.
+ **[Obligatorio] **El grupo de seguridad asociado al clúster controla el acceso a la red y al clúster. De forma predeterminada, los grupos de seguridad no tienen ninguna regla de acceso definida y, por lo tanto, no habrá ninguna ruta de acceso a ElastiCache. Para habilitar esto, configure una regla de entrada en el grupo de seguridad que especifique la dirección/rango de IP de origen, el tráfico de tipo TCP y el puerto del clúster de ElastiCache (el puerto predeterminado 6379 para ElastiCache para Valkey y Redis OSS, por ejemplo). Si bien es posible permitir un conjunto muy amplio de orígenes de acceso, como todos los recursos de una VPC (0.0.0.0/0), se recomienda ser lo más detallado posible al definir las reglas de acceso, por ejemplo, autorizar solo el acceso entrante a los clientes de Valkey o Redis OSS que se ejecuten en instancias de Amazon EC2 asociadas a un grupo de seguridad concreto.

  **[Recursos]: **
  + [Subredes y grupos de subredes](SubnetGroups.md)
  + [Acceso al clúster o al grupo de reproducción](accessing-elasticache.md)
  + [Controlar el tráfico hacia los recursos mediante grupos de seguridad](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html#DefaultSecurityGroupdefault%20security%20group)
  + [Grupos de seguridad de Amazon Elastic Compute Cloud para instancias de Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html#creating-your-own-security-groups)
+ **[Obligatorio] **Se pueden asignar políticas de AWS Identity and Access Management a funciones de AWS Lambda para que puedan acceder a los datos de ElastiCache. Para habilitar esta característica, cree un rol de ejecución de IAM con el permiso `AWSLambdaVPCAccessExecutionRole` y, a continuación, asigne el rol a la función de AWS Lambda.

  **[Recursos]: **Configuración de una función de Lambda para acceder a Amazon ElastiCache en una Amazon VPC: [Tutorial: Configuración de una función de Lambda para obtener acceso a Amazon ElastiCache en una Amazon VPC](https://docs.aws.amazon.com/lambda/latest/dg/services-elasticache-tutorial.html)

## SEC 2: ¿Requieren sus aplicaciones autorización adicional para ElastiCache además de los controles basados en red?
<a name="SecurityPillarSEC2"></a>

**Introducción en la pregunta: **En los escenarios en los que sea necesario restringir o controlar el acceso a los clústeres en el cliente individual, se recomienda realizar la autenticación con el comando AUTH. Los tokens de autenticación de ElastiCache, con administración opcional de usuarios y grupos de usuarios, permiten que ElastiCache requiera una contraseña antes de permitir a los clientes ejecutar comandos y claves de acceso, lo que mejora la seguridad del plano de datos.

**Ventaja en la pregunta: **A fin de ayudar a mantener la seguridad de los datos, ElastiCache proporciona mecanismos de protección contra el acceso no autorizado a los datos. Entre ellos se incluye obligar a los clientes a utilizar AUTH, o token AUTH (contraseña), de control de acceso basado en roles (RBAC) para conectarse a ElastiCache antes de ejecutar los comandos autorizados.
+ **[Lo mejor] **Para ElastiCache versión 6.x y posteriores para Redis OSS, y ElastiCache versión 7.2 y posteriores para Valkey, defina los controles de autenticación y autorización con grupos de usuarios, usuarios y cadenas de acceso. Asigne usuarios a grupos de usuarios y, a continuación, asigne grupos de usuarios a clústeres. Para utilizar el RBAC, este debe seleccionarse al crear el clúster y debe estar habilitado el cifrado en tránsito. Asegúrese de utilizar un cliente de Valkey o Redis que sea compatible con TLS para poder utilizar RBAC.

  **[Recursos]: **
  + [Aplicación de RBAC a un grupo de replicación para ElastiCache](Clusters.RBAC.md#rbac-using)
  + [Especificación de permisos mediante una cadena de acceso](Clusters.RBAC.md#Access-string)
  + [ACL de](https://valkey.io/topics/acl/)
  + [Versiones de ElastiCache compatibles](VersionManagement.md#supported-engine-versions)
+ **[Lo mejor] **Para las versiones de ElastiCache anteriores a la 6.x para Redis OSS, además de establecer un token o contraseña seguros y mantener una política de contraseñas estricta para AUTH, se recomienda rotar la contraseña o token. ElastiCache puede administrar hasta dos (2) tokens de autenticación en un momento dado. También puede modificar el clúster para que requiera explícitamente el uso de tokens de autenticación.

  **[Recursos]: **[Modificación del token AUTH en un clúster de ElastiCache existente](auth.md#auth-modifyng-token)

## SEC 3: ¿Existe el riesgo de que los comandos se ejecuten de forma inadvertida y provoquen la pérdida de datos o errores?
<a name="SecurityPillarSEC3"></a>

**Introducción de pregunta: **hay varios comandos de Valkey o Redis OSS que pueden tener una repercusión negativa en las operaciones si se ejecutan por error o por parte de personas malintencionadas. Estos comandos pueden tener consecuencias no deseadas desde el punto de vista del rendimiento y la seguridad de los datos. Por ejemplo, un desarrollador puede llamar de forma rutinaria al comando FLUSHALL en un entorno de desarrollo y, debido a un error, puede intentar ejecutar este comando sin darse cuenta en un sistema de producción, lo que provoca la pérdida accidental de datos.

**Ventaja en la pregunta: **A partir de ElastiCache versión 5.0.3 para Redis OSS, se puede cambiar el nombre de algunos comandos que podrían perjudicar a la carga de trabajo. El cambio del nombre de los comandos puede ayudar a evitar que se ejecuten inadvertidamente en el clúster. 
+ **[Obligatorio] **

  **[Recursos]: **
  + [ElastiCache versión 5.0.3 para Redis OSS (obsoleta, use la versión 5.0.6)](engine-versions.md#redis-version-5-0.3)
  + [Cambios en los parámetros de ElastiCache versión 5.0.3 para Redis OSS](ParameterGroups.Engine.md#ParameterGroups.Redis.5-0-3)
  + [Redis OSS security](https://redis.io/docs/management/security/)

## SEC 4: ¿Cómo se garantiza el cifrado de datos en reposo con ElastiCache?
<a name="SecurityPillarSEC4"></a>

**Introducción en la pregunta: **Si bien ElastiCache es un almacén de datos en memoria, se puede cifrar cualquier dato que pueda persistir (en el almacenamiento) como parte de las operaciones estándar del clúster. Esto incluye las copias de seguridad programadas y manuales escritas en Amazon S3, así como los datos guardados en el almacenamiento en disco como resultado de las operaciones de sincronización e intercambio. Los tipos de instancias de las familias M6g y R6g también cuentan con un cifrado en memoria siempre activo.

**Ventaja en la pregunta: **ElastiCache proporciona un cifrado opcional en reposo para aumentar la seguridad de los datos.
+ **[Obligatorio] **El cifrado en reposo solo se puede habilitar en un clúster de ElastiCache (grupo de replicación) en el momento de su creación. No se puede modificar un clúster existente para empezar a cifrar los datos en reposo. De forma predeterminada, ElastiCache proporcionará y administrará las claves utilizadas en el cifrado en reposo. 

  **[Recursos]: **
  + [Restricciones del cifrado en reposo](at-rest-encryption.md#at-rest-encryption-constraints)
  + [Activación del cifrado en reposo](at-rest-encryption.md#at-rest-encryption-enable)
+ **[Lo mejor] **Aproveche los tipos de instancias de Amazon EC2 que cifran los datos mientras están en la memoria (como M6g o R6g). Siempre que sea posible, considere la posibilidad de administrar sus propias claves para el cifrado en reposo. Para entornos de seguridad de datos más estrictos, se puede utilizar AWS Key Management Service (KMS) para autogestionar las claves maestras de cliente (CMK). Mediante la integración de ElastiCache con AWS Key Management Service, puede crear, poseer y administrar las claves utilizadas para el cifrado de datos en reposo de su clúster de ElastiCache.

  **[Recursos]: **
  + [Uso de claves administradas por el cliente desde AWS Key Management Service](at-rest-encryption.md#using-customer-managed-keys-for-elasticache-security)
  + [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)
  + [AWS KMS concepts](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys)

## SEC 5: ¿Cómo se cifran los datos en tránsito con ElastiCache?
<a name="SecurityPillarSEC5"></a>

**Introducción a nivel de pregunta: **Es un requisito habitual evitar que los datos corran peligro mientras están en tránsito. Esto representa los datos dentro de los componentes de un sistema distribuido, así como entre los clientes de la aplicación y los nodos del clúster. ElastiCache es compatible con este requisito pues permite cifrar los datos en tránsito entre los clientes y el clúster, y entre los propios nodos del clúster. Los tipos de instancias de las familias M6g y R6g también cuentan con un cifrado en memoria siempre activo. 

**Ventaja a nivel de pregunta: **El cifrado en tránsito de Amazon ElastiCache es una característica opcional que permite reforzar la seguridad de los datos en sus momentos más vulnerables: cuando se trasladan de una ubicación a otra.
+ **[Obligatorio] **El cifrado en tránsito solo se puede habilitar en un clúster (grupo de replicación) en el momento de su creación. Tenga en cuenta que, debido al procesamiento adicional necesario para cifrar o descifrar datos, la implementación del cifrado en tránsito afectará al rendimiento en cierta medida. Para entender el impacto, se recomienda comparar la carga de trabajo antes y después de habilitar el cifrado en tránsito.

  **[Recursos]: **
  + [Información general sobre el cifrado en tránsito](in-transit-encryption.md#in-transit-encryption-overview)

## SEC 6: ¿Cómo se restringe el acceso a los recursos del plano de control?
<a name="SecurityPillarSEC6"></a>

**Introducción en la pregunta: **Las políticas de IAM y el ARN facilitan los controles de acceso detallados para ElastiCache para Valkey y Redis OSS, lo que permite llevar a cabo un control más estricto para administrar la creación, modificación y eliminación de los clústeres.

**Ventaja a nivel de pregunta: **La administración de los recursos de Amazon ElastiCache, como los grupos de replicación, los nodos, etc., puede restringirse a las cuentas de AWS que tengan permisos específicos según las políticas de IAM, lo que mejora la seguridad y la fiabilidad de los recursos.
+ **[Obligatorio] **Gestione el acceso a los recursos de Amazon ElastiCache mediante la asignación de políticas de AWS Identity and Access Management específicas a los usuarios de AWS, lo que permite un control más preciso sobre qué cuentas pueden realizar qué acciones en los clústeres.

  **[Recursos]: **
  + [Información general sobre la administración de los permisos de acceso a los recursos de ElastiCache](IAM.Overview.md)
  + [Uso de políticas basadas en identidad (políticas de IAM) para Amazon ElastiCache](IAM.IdentityBasedPolicies.md)

## SEC 7: ¿Cómo se detectan los eventos de seguridad y cómo se responde a ellos?
<a name="SecurityPillarSEC7"></a>

**Introducción a nivel de pregunta: **ElastiCache, cuando se implementa con el RBAC habilitado, exporta las métricas de CloudWatch para notificar a los usuarios los eventos de seguridad. Estas métricas ayudan a identificar los intentos fallidos de autenticación, acceso a claves o ejecución de comandos para los que los usuarios con RBAC que se conectan no están autorizados.

Además, los recursos de productos y servicios de AWS ayudan a proteger la carga de trabajo general al automatizar las implementaciones y registrar todas las acciones y modificaciones para su posterior revisión o auditoría.

**Ventaja a nivel de pregunta: **Con la supervisión de los eventos, usted permite a su organización responder de acuerdo con sus requisitos, políticas y procedimientos. La automatización de la supervisión y las respuestas a estos eventos de seguridad refuerza su postura de seguridad general.
+ **[Obligatorio] **Familiarícese con las métricas de CloudWatch publicadas relacionadas con los errores de autenticación y autorización del RBAC. 
  + AuthenticationFailures = Intentos fallidos de autenticación en Valkey o Redis OSS
  + KeyAuthorizationFailures = Intentos fallidos de los usuarios de acceder a las claves sin permiso
  + CommandAuthorizationFailures = Intentos fallidos de los usuarios de ejecutar comandos sin permiso

  **[Recursos]: **
  + [Métricas de Valkey y Redis OSS](CacheMetrics.Redis.md)
+ **[Lo mejor] **Se recomienda configurar alertas y notificaciones para estas métricas y responder según sea necesario.

  **[Recursos]: **
  + [Uso de las alarmas de Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)
+ **[Lo mejor] **Utilice el comando de la ACL LOG de Valkey o Redis OSS para recopilar más detalles.

  **[Recursos]: **
  + [ACL LOG](https://valkey.io/commands/acl-log/)
+ **[Lo mejor] **Familiarícese con las capacidades de los productos y servicios de AWS en lo que respecta a la supervisión, el registro y el análisis de las implementaciones y eventos de ElastiCache.

  **[Recursos]: **
  + [Registro de llamadas a la API de Amazon ElastiCache con AWS](logging-using-cloudtrail.md)
  + [elasticache-redis-cluster-automatic-backup-check](https://docs.aws.amazon.com/config/latest/developerguide/elasticache-redis-cluster-automatic-backup-check.html)
  + [Monitoreo del uso con métricas de CloudWatch](CacheMetrics.md)

# Pilar de fiabilidad del enfoque Well-Architected de Amazon ElastiCache
<a name="ReliabilityPillar"></a>

El pilar de la fiabilidad se centra en las cargas de trabajo que realizan las funciones previstas y en cómo recuperarse rápidamente de la incapacidad de satisfacer las demandas. Entre los temas clave, se incluyen el diseño de sistemas distribuidos, la planificación de la recuperación y cómo adaptarse a los cambios de requisitos.

**Topics**
+ [REL 1: ¿Cómo se respaldan las implementaciones de arquitecturas de alta disponibilidad (HA)?](#ReliabilityPillarREL1)
+ [REL 2: ¿Cómo se cumplen los objetivos de puntos de recuperación (RPO) con ElastiCache?](#ReliabilityPillarREL2)
+ [REL 3: ¿Cómo se cumplen los requisitos de recuperación de desastres (DR)?](#ReliabilityPillarREL3)
+ [REL 4: ¿Cómo se planifican eficazmente las conmutaciones por error?](#ReliabilityPillarREL4)
+ [REL 5: ¿Están sus componentes de ElastiCache diseñados para el escalado?](#ReliabilityPillarREL5)

## REL 1: ¿Cómo se respaldan las implementaciones de arquitecturas de alta disponibilidad (HA)?
<a name="ReliabilityPillarREL1"></a>

**Introducción a nivel de pregunta: **Comprender la arquitectura de alta disponibilidad de Amazon ElastiCache le permitirá operar en un estado resiliente durante los eventos de disponibilidad. 

**Ventaja a nivel de pregunta: **Diseñar los clústeres de ElastiCache para que sean resilientes a los errores garantiza una mayor disponibilidad para las implementaciones de ElastiCache. 
+ **[Obligatorio] **Determine el grado de fiabilidad que necesita para su clúster de ElastiCache. Las diferentes cargas de trabajo tienen diferentes estándares de resiliencia, desde cargas de trabajo totalmente efímeras hasta cargas de trabajo cruciales para la misión. Defina las necesidades de cada tipo de entorno en el que opere, como desarrollo, pruebas y producción.

  Motor de almacenamiento en caché: ElastiCache para Memcached frente a ElastiCache para Valkey y Redis OSS

  1. ElastiCache para Memcached no proporciona ningún mecanismo de replicación y se usa principalmente para cargas de trabajo efímeras.

  1. ElastiCache para Valkey y Redis OSS ofrece las características de HA que se describen a continuación
+ **[Lo mejor] **Para las cargas de trabajo que requieren HA, utilice ElastiCache en modo clúster con un mínimo de dos réplicas por partición, incluso para cargas de trabajo pequeñas con requisitos de rendimiento de una sola partición. 

  1. Si el modo de clúster está activado, multi-AZ se habilita automáticamente.

     Multi-AZ minimiza el tiempo de inactividad, ya que realiza conmutaciones por error automáticas desde el nodo principal a las réplicas, en caso de mantenimiento planificado o no planificado, y mitiga los errores de AZ.

  1. En cuanto a las cargas de trabajo particionadas, un mínimo de tres particiones proporciona una recuperación más rápida durante los eventos de conmutación por error, ya que el protocolo de clúster de Valkey o Redis OSS requiere que la mayoría de los nodos principales estén disponibles para alcanzar el quórum.

  1. Configure dos o más réplicas para ofrecer disponibilidad.

     Tener dos réplicas proporciona escalabilidad de lectura mejorada así como disponibilidad de lectura en situaciones en las que una réplica está en mantenimiento.

  1. Utilice tipos de nodos basados en Graviton2 (nodos predeterminados en la mayoría de las regiones).

     ElastiCache ha añadido rendimiento optimizado en estos nodos. Como resultado, obtiene un mejor rendimiento de replicación y sincronización, lo que se traduce en una mejora general de la disponibilidad.

  1. Supervise y ajuste el tamaño para hacer frente a los picos de tráfico previstos: con una carga pesada, el motor puede dejar de responder, lo que afecta a la disponibilidad. `BytesUsedForCache` y `DatabaseMemoryUsagePercentage` son buenos indicadores del uso de la memoria, mientras que `ReplicationLag` es un indicador del estado de la replicación en función de la velocidad de escritura. Puede usar estas métricas para activar el escalado de clústeres.

  1. Para garantizar la resiliencia del cliente realice pruebas con la [API de conmutación por error antes de un evento de conmutación por error en producción](https://docs.amazonaws.cn/en_us/AmazonElastiCache/latest/APIReference/API_TestFailover.html).

  **[Recursos]: **
  + [Configure ElastiCache for Redis OSS for higher availability](https://aws.amazon.com/blogs/database/configuring-amazon-elasticache-for-redis-for-higher-availability/)
  + [Alta disponibilidad a través de grupos de reproducción](Replication.md)

## REL 2: ¿Cómo se cumplen los objetivos de puntos de recuperación (RPO) con ElastiCache?
<a name="ReliabilityPillarREL2"></a>

**Introducción a nivel de pregunta: **Comprenda el RPO de la carga de trabajo para tomar decisiones informadas sobre las estrategias de respaldo y recuperación de ElastiCache.

**Ventaja a nivel de pregunta: **Tener una estrategia de RPO implementada le permite mejorar la continuidad del negocio en caso de que se produzcan escenarios de recuperación de desastres. El diseño de políticas de respaldo y restauración puede contribuir a cumplir los objetivos de puntos de recuperación (RPO) de sus datos de ElastiCache. ElastiCache ofrece capacidades de instantáneas que se almacenan en Amazon S3, junto con una política de retención configurable. Estas instantáneas se toman durante un período de copia de seguridad definido y el servicio las gestiona automáticamente. Si la carga de trabajo requiere un grado de detalle de respaldo adicional, tiene la opción de crear hasta 20 copias de seguridad manuales por día. Las copias de seguridad creadas manualmente no tienen una política de retención de servicios y se pueden conservar indefinidamente.
+ **[Obligatorio] **Comprenda y documente el RPO de sus implementaciones de ElastiCache.
  + Tenga en cuenta que Memcached no ofrece ningún proceso de copia de seguridad.
  + Revise las capacidades de las características de copia de seguridad y restauración de ElastiCache.
+ **[Lo mejor]**Disponga de un proceso que se haya comunicado bien para hacer copias de seguridad de su clúster.
  + Inicie copias de seguridad manuales según sea necesario.
  + Revise las políticas de retención de las copias de seguridad automáticas.
  + Tenga en cuenta que las copias de seguridad manuales se conservarán indefinidamente.
  + Programe las copias de seguridad automáticas durante los períodos de bajo uso.
  + Realice operaciones de respaldo contra réplicas de lectura para asegurarse de minimizar el impacto en el rendimiento del clúster.
+ **[Bueno] **Aproveche la característica de copia de seguridad programada de ElastiCache para realizar copias de seguridad periódicas de los datos durante un período definido. 
  + Haga pruebas periódicas de las restauraciones a partir de las copias de seguridad.
+ **[Recursos]: **
  + [Redis OSS](https://aws.amazon.com/elasticache/faqs/#Redis)
  + [Copia de seguridad y restauración para ElastiCache](backups.md)
  + [Realización de copias de seguridad manuales](backups-manual.md)
  + [Programación de copias de seguridad automáticas](backups-automatic.md)
  + [Backup and Restore ElastiCache Clusters](https://aws.amazon.com/blogs/aws/backup-and-restore-elasticache-redis-nodes/)

## REL 3: ¿Cómo se cumplen los requisitos de recuperación de desastres (DR)?
<a name="ReliabilityPillarREL3"></a>

**Introducción a nivel de pregunta: **La recuperación de desastres es un aspecto importante de cualquier planificación de cargas de trabajo. ElastiCache ofrece varias opciones para implementar la recuperación ante desastres en función de los requisitos de resiliencia de la carga de trabajo. Con el almacén de datos global de Amazon ElastiCache puede escribir en su clúster en una región y disponer de los datos para leerlos en otros dos clústeres de réplica entre regiones, lo que permite lecturas de baja latencia y recuperación ante desastres en todas las regiones.

**Ventaja a nivel de pregunta: **Comprender y planificar una variedad de escenarios de desastres contribuye a garantizar la continuidad del negocio. Las estrategias de DR deben equilibrarse en relación al costo, el impacto en el rendimiento y la posible pérdida de datos.
+ **[Obligatorio] **Desarrolle y documente estrategias de DR para todos los componentes de ElastiCache en función de los requisitos de la carga de trabajo. ElastiCache es único porque algunos casos de uso son completamente efímeros y no requieren ninguna estrategia de DR, mientras que otros se encuentran en el extremo opuesto del abanico y exigen una estrategia de DR extremadamente sólida. Todas las opciones deben soparse teniendo en cuenta la optimización de costos: una mayor resiliencia requiere más infraestructura.

  Conozca las opciones de DR disponibles a nivel regional y multirregional.
  + Se recomiendan implementaciones multi-AZ para evitar errores de AZ. Asegúrese de realizar la implementación con el modo de clúster habilitado en las arquitecturas multi-AZ, con un mínimo de tres AZ disponibles.
  + Se recomienda utilizar Global Datastore para protegerse contra los errores regionales.
+ **[Lo mejor]** Habilite Global Datastore para cargas de trabajo que requieran resiliencia a nivel de región.
  + Tenga un plan para realizar una conmutación por error a la región secundaria en caso de degradación de la primaria.
  + Pruebe el proceso de conmutación por error multirregional antes de llevar a cabo una conmutación por error en producción.
  + Supervise la métrica `ReplicationLag` para conocer el posible impacto de la pérdida de datos durante los eventos de conmutación por error.
+ **[Recursos]: **
  + [Mitigación de errores](disaster-recovery-resiliency.md#FaultTolerance)
  + [Replicación en regiones de AWS mediante los almacenes de datos globales](Redis-Global-Datastore.md)
  + [Restauración desde una copia de seguridad con redimensionamiento opcional del clúster](backups-restoring.md)
  + [Minimización del tiempo de inactividad en ElastiCache para Valkey y Redis OSS con Multi-AZ](AutoFailover.md)

## REL 4: ¿Cómo se planifican eficazmente las conmutaciones por error?
<a name="ReliabilityPillarREL4"></a>

**Introducción a nivel de pregunta: **La habilitación multi-AZ con conmutaciones por error automáticas es una práctica recomendada de ElastiCache. En algunos casos, ElastiCache para Valkey y Redis OSS reemplaza los nodos principales como parte de las operaciones de servicio. Algunos ejemplos son eventos de mantenimiento planificado y el improbable caso de que haya un problema en el nodo o en la zona de disponibilidad. Las conmutaciones por error correctas dependen tanto de la configuración de ElastiCache como de la biblioteca cliente.

**Ventaja en la pregunta:** Al seguir las prácticas recomendadas para las conmutaciones por error de ElastiCache junto con la biblioteca cliente específica de ElastiCache se ayuda a minimizar el posible tiempo de inactividad durante los eventos de conmutación por error. 
+ **[Obligatorio] **Si el modo de clúster está deshabilitado, utilice los tiempos de espera para que sus clientes detecten si es necesario desconectarse del nodo principal anterior y volver a conectarse al nuevo nodo principal, mediante la dirección IP del punto de conexión principal actualizada. Si el modo de clúster está habilitado, la biblioteca cliente es responsable de detectar los cambios en la topología del clúster subyacente. La mayoría de las veces, esto se logra mediante ajustes de configuración de la biblioteca cliente de ElastiCache, que también permiten configurar la frecuencia y el método de actualización. Cada biblioteca cliente ofrece su propia configuración. Encontrará más información en la documentación correspondiente.

  **[Recursos]: **
  + [Minimización del tiempo de inactividad en ElastiCache para Valkey y Redis OSS con Multi-AZ](AutoFailover.md)
  + Revise las prácticas recomendadas de su biblioteca cliente de ElastiCache. 
+ **[Obligatorio] **Las conmutaciones por error correctas dependen de un entorno de replicación en buen estado entre los nodos principal y de réplica. Revise y comprenda la naturaleza asincrónica de la replicación de Valkey y Redis OSS, así como las métricas de CloudWatch disponibles para informar sobre el retraso de replicación entre los nodos principales y de réplica. Para los casos de uso que requieran una mayor seguridad de los datos, utilice el comando WAIT para obligar a las réplicas a confirmar las escrituras antes de responder a los clientes conectados. 

  **[Recursos]: **
  + [Métricas de Valkey y Redis OSS](CacheMetrics.Redis.md)
  +  [Monitoring best practices with ElastiCache using Amazon CloudWatch](https://aws.amazon.com/blogs/database/monitoring-best-practices-with-amazon-elasticache-for-redis-using-amazon-cloudwatch/)
+ **[Lo mejor] **Valide periódicamente la capacidad de respuesta de su aplicación durante la conmutación por error mediante la API de conmutación por error de prueba de ElastiCache. 

  **[Recursos]: **
  + [Testing Automatic Failover to a Read Replica on ElastiCache](https://aws.amazon.com/blogs/database/testing-automatic-failover-to-a-read-replica-on-amazon-elasticache-for-redis/)
  + [Prueba de la conmutación por error automática](AutoFailover.md#auto-failover-test)

## REL 5: ¿Están sus componentes de ElastiCache diseñados para el escalado?
<a name="ReliabilityPillarREL5"></a>

**Introducción a nivel de pregunta: **Al comprender las capacidades de escalado y las topologías de implementación disponibles, los componentes de ElastiCache pueden ajustarse con el tiempo para satisfacer los cambiantes requisitos de la carga de trabajo. ElastiCache ofrece escalado en 4 direcciones: reducir/escalar horizontalmente y reducir/escalar verticalmente.

**Ventaja a nivel de pregunta: **El seguimiento de las prácticas recomendadas para las implementaciones de ElastiCache proporciona la mayor flexibilidad de escalado, además de cumplir con el principio de Well-Architected de escalar horizontalmente para minimizar el impacto de los errores.
+ **[Obligatorio] **Comprenda la diferencia entre las topologías de modo clúster habilitado y modo clúster deshabilitado. En casi todos los casos, se recomienda realizar la implementación con el modo de clúster habilitado, ya que permite una mayor escalabilidad a lo largo del tiempo. Los componentes en modo clúster deshabilitado tienen una capacidad limitada para escalar horizontalmente mediante la adición de réplicas de lectura.
+ **[Obligatorio] **Comprenda cuándo y cómo escalar.
  + Para más READIOPS: añada réplicas
  + Para más WRITEOPS: añada particiones (escale horizontamente)
  + Para más E/S de red: utilice instancias optimizadas para la red y escale verticalmente
+ **[Lo mejor] **Despliegue los componentes de ElastiCache con el modo de clúster habilitado, con una preferencia por más nodos más pequeños en lugar de menos nodos más grandes. Esto limita de manera efectiva el radio de acción de un error de nodo.
+ **[Lo mejor] **Incluya réplicas en los clústeres para mejorar la capacidad de respuesta durante los eventos de escalado.
+ **[Bueno] **Si el modo de clúster está deshabilitado, aproveche las réplicas de lectura para aumentar la capacidad de lectura general. ElastiCache ofrece compatibilidad con hasta 5 réplicas de lectura en modo de clúster deshabilitado, así como escalado vertical.
+ **[Recursos]: **
  + [Escalado de clústeres de ElastiCache](Scaling.md)
  + [Escalado vertical en línea](redis-cluster-vertical-scaling.md#redis-cluster-vertical-scaling-scaling-up)

# Pilar de eficiencia en el ElastiCache rendimiento de Amazon Well-Architected Lens
<a name="PerformanceEfficiencyPillar"></a>

El pilar de eficiencia del rendimiento se centra en el uso eficiente de recursos informáticos y de TI. Los temas clave incluyen la selección de los tipos y tamaños de recursos correctos en función de los requisitos de la carga de trabajo, la supervisión del rendimiento y la toma de decisiones informadas para mantener la eficiencia a medida que evolucionan las necesidades empresariales.

**Topics**
+ [PE 1: ¿Cómo monitoriza el rendimiento de su ElastiCache clúster de Amazon?](#PerformanceEfficiencyPillarPE1)
+ [PE 2: ¿Cómo distribuye el trabajo entre los nodos de su ElastiCache clúster?](#PerformanceEfficiencyPillarPE2)
+ [PE 3: En el caso del almacenamiento en caché de las cargas de trabajo, ¿cómo se realiza el seguimiento de la eficacia y el rendimiento de la memoria caché y se informa al respecto?](#PerformanceEfficiencyPillarPE3)
+ [PE 4: ¿Cómo optimiza la carga de trabajo el uso de los recursos y las conexiones de red?](#PerformanceEfficiencyPillarPE4)
+ [PE 5: ¿Cómo se gestiona la eliminación y el and/or desalojo de claves?](#PerformanceEfficiencyPillarPE5)
+ [PE 6: ¿Cómo se modelan los datos e interactúa con ellos ElastiCache?](#PerformanceEfficiencyPillarPE6)
+ [PE 7: ¿Cómo se registran los comandos de ejecución lenta en el ElastiCache clúster de Amazon?](#PerformanceEfficiencyPillarPE7)
+ [PE8: ¿Cómo ayuda Auto Scaling a aumentar el rendimiento del ElastiCache clúster?](#PerformanceEfficiencyPillarPE8)

## PE 1: ¿Cómo monitoriza el rendimiento de su ElastiCache clúster de Amazon?
<a name="PerformanceEfficiencyPillarPE1"></a>

**Introducción a nivel de pregunta: **Al comprender las métricas de supervisión existentes, puede identificar la utilización actual. La supervisión adecuada puede ayudar a identificar posibles obstáculos que afecten al rendimiento de su clúster. 

**Ventaja a nivel de pregunta: **Comprender las métricas asociadas a su clúster puede ayudar a guiar las técnicas de optimización que pueden reducir la latencia y aumentar el rendimiento. 
+ **[Obligatorio] **Pruebas de rendimiento de referencia con un subconjunto de la carga de trabajo.
  + Debe supervisar el rendimiento de la carga de trabajo real mediante mecanismos como las pruebas de carga. 
  + Supervisa las CloudWatch métricas mientras realizas estas pruebas para comprender mejor las métricas disponibles y establecer una línea base de rendimiento. 
+ **[Lo mejor]** En el caso de las cargas de trabajo de OSS de Valkey y Redis, cambie el nombre de los comandos más costosos desde el punto de vista computacional, por ejemplo`KEYS`, para limitar la capacidad de los usuarios de ejecutar comandos de bloqueo en los clústeres de producción. ElastiCache 
  + ElastiCache Las cargas de trabajo que ejecutan el motor 6.x para Redis OSS pueden aprovechar el control de acceso basado en roles para restringir determinados comandos. El acceso a los comandos se puede controlar creando usuarios y grupos de usuarios con la AWS consola o la CLI y asociando los grupos de usuarios a un clúster. En Redis OSS 6, cuando RBAC está habilitado, es posible usar -@dangerous, lo que no permitirá comandos costosos, como KEYS, MONITOR, SORT, etc., para ese usuario.
  + En la versión 5.x del motor, cambie el nombre de los comandos mediante el parámetro `rename-commands` del grupo de parámetros del clúster.
+ **[Mejor] **Analice las consultas lentas y busque técnicas de optimización. 
  +  ElastiCache Para obtener más información sobre las cargas de trabajo de OSS de Valkey y Redis, analice el registro lento para obtener más información sobre sus consultas. Por ejemplo, puede utilizar el siguiente comando, `valkey-cli slowlog get 10`, para mostrar los últimos 10 comandos que han superado los umbrales de latencia (10 milisegundos de forma predeterminada).
  + Algunas consultas se pueden realizar de forma más eficiente utilizando estructuras de datos OSS complejas ElastiCache para Valkey y Redis. Por ejemplo, en el caso de las búsquedas de rangos de estilos numéricos, una aplicación puede implementar índices numéricos simples con conjuntos ordenados. La administración de estos índices puede reducir los escaneos realizados en el conjunto de datos y devolver los datos con una mayor eficiencia de rendimiento. 
  +  ElastiCache Para las cargas de trabajo OSS de Valkey y Redis, `redis-benchmark` proporciona una interfaz sencilla para probar el rendimiento de diferentes comandos mediante entradas definidas por el usuario, como el número de clientes y el tamaño de los datos.
  + Dado que Memcached solo admite comandos simples a nivel de clave, considere la posibilidad de crear claves adicionales como índices para evitar iterar a través del espacio de claves para atender las consultas de los clientes.
+ **[Recursos]: **
  + [Supervise el uso con Metrics CloudWatch ](CacheMetrics.md)
  + [Uso de CloudWatch alarmas de Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)
  + [Parámetros específicos de Valkey y Redis OSS](ParameterGroups.Engine.md#ParameterGroups.Redis)
  + [SLOWLOG](https://valkey.io/commands/slowlog/)
  + [ benchmark](https://valkey.io/topics/benchmark/)

## PE 2: ¿Cómo distribuye el trabajo entre los nodos de su ElastiCache clúster?
<a name="PerformanceEfficiencyPillarPE2"></a>

**Introducción a nivel de preguntas:** La forma en que su aplicación se conecta a ElastiCache los nodos de Amazon puede afectar al rendimiento y la escalabilidad del clúster. 

**Ventaja a nivel de pregunta: **Al utilizar de forma adecuado los nodos disponibles en el clúster garantizará que el trabajo se distribuya entre los recursos disponibles. Las siguientes técnicas también ayudan a evitar que haya recursos inactivos.
+ **[Obligatorio] Haga** que los clientes se conecten al punto final adecuado. ElastiCache 
  + ElastiCache para Valkey y Redis, OSS implementa diferentes puntos de conexión en función del modo de clúster que se utilice. Si el modo de clúster está activado, ElastiCache proporcionará un punto final de configuración. Para el modo de clúster desactivado, ElastiCache proporciona un punto final principal, que normalmente se utiliza para las escrituras, y un punto final de lectura para equilibrar las lecturas entre las réplicas. La implementación correcta de estos puntos de conexión resultará en un mejor rendimiento y en operaciones de escalado más sencillas. Evite conectarse a puntos de conexión de nodos individuales a menos que haya un requisito específico para hacerlo. 
  + Para los clústeres de Memcached de varios nodos, ElastiCache proporciona un punto final de configuración que permite la detección automática. Se recomienda utilizar un algoritmo de hash para distribuir el trabajo de manera uniforme entre los nodos de caché. Muchas bibliotecas cliente de Memcached implementan un hash coherente. Consulte la documentación de la biblioteca que va a utilizar para ver si admite el uso consistente de hash y saber cómo implementarlo. Encontrará más información sobre la implementación de estas funciones [aquí](BestPractices.LoadBalancing.md).
+ **[Mejor]** Aproveche los clústeres habilitados ElastiCache para el modo de clúster OSS de Valkey y Redis para mejorar la escalabilidad.
  + ElastiCache para Valkey y Redis, los clústeres OSS (habilitados para el modo de clúster) admiten [operaciones de escalado en línea](scaling-redis-cluster-mode-enabled.md#redis-cluster-resharding-online) (out/in and up/down) para ayudar a distribuir los datos de forma dinámica entre los fragmentos. El uso del punto de conexión de configuración garantizará que los clientes compatibles con clústeres puedan adaptarse a los cambios en la topología del clúster.
  + También puede reequilibrar el clúster moviendo las ranuras de hash entre los fragmentos disponibles en su clúster OSS (modo de clúster activado) ElastiCache de Valkey y Redis. Esto ayuda a distribuir el trabajo de manera más eficiente entre las particiones disponibles. 
+ **[Mejor] **Implemente una estrategia para identificar y corregir las teclas de acceso rápido de su carga de trabajo.
  + Tenga en cuenta el impacto de las estructuras de datos multidimensionales de Valkey o Redis OSS, como listas, flujos, conjuntos, etc. Estas estructuras de datos se almacenan en claves únicas, que residen en un solo nodo. Una clave multidimensional muy grande tiene el potencial de utilizar más capacidad de red y memoria que otros tipos de datos y puede provocar un uso desproporcionado de ese nodo. Si es posible, diseñe la carga de trabajo de modo que distribuya el acceso a los datos entre varias claves discretas.
  + Las teclas de acceso rápido de la carga de trabajo pueden influir en el rendimiento del nodo en uso. En el caso de ElastiCache las cargas de trabajo de Valkey y Redis OSS, puede detectar las teclas de acceso rápido `valkey-cli --hotkeys` si existe una política de memoria máxima de la LFU.
  + Considere la posibilidad de replicar las teclas de acceso rápido en varios nodos para distribuir el acceso a ellas de manera más uniforme. Este enfoque requiere que el cliente escriba en varios nodos principales (el nodo de Valkey o Redis OSS en sí no proporciona esta funcionalidad) y mantenga una lista de nombres de claves de la que leer, además del nombre de la clave original.
  + ElastiCache [El motor 7.2 para Valkey y versiones posteriores y la ElastiCache versión 6 para Redis OSS y versiones posteriores admiten el almacenamiento en caché del lado del cliente asistido por el servidor.](https://valkey.io/topics/client-side-caching/) Esto permite a las aplicaciones esperar a que se modifique una clave antes de volver a realizar llamadas de red a ella. ElastiCache 
+ **[Recursos]: **
  + [Configure ElastiCache para Valkey y Redis OSS para obtener una mayor disponibilidad](https://aws.amazon.com/blogs/database/configuring-amazon-elasticache-for-redis-for-higher-availability/)
  + [Búsqueda de puntos de conexión en ElastiCache](Endpoints.md)
  + [Procedimientos recomendados para el equilibrio de cargas](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/BestPractices.LoadBalancing.html)
  + [Cambio de particiones en línea para Valkey o Redis OSS (modo de clúster habilitado)](scaling-redis-cluster-mode-enabled.md#redis-cluster-resharding-online)
  + [Client-side caching in Valkey and Redis OSS](https://valkey.io/topics/client-side-caching/)

## PE 3: En el caso del almacenamiento en caché de las cargas de trabajo, ¿cómo se realiza el seguimiento de la eficacia y el rendimiento de la memoria caché y se informa al respecto?
<a name="PerformanceEfficiencyPillarPE3"></a>

**Introducción a nivel de preguntas:** El almacenamiento en caché es una carga de trabajo habitual ElastiCache y es importante que comprenda cómo gestionar la eficacia y el rendimiento de la memoria caché.

**Ventaja a nivel de pregunta: **Es posible que su aplicación muestre signos de un rendimiento lento. La capacidad de utilizar métricas específicas de la memoria caché para tomar una decisión sobre cómo aumentar el rendimiento de la aplicación es fundamental para la carga de trabajo de la memoria caché.
+ **[Obligatorio] **Mida y realice un seguimiento a lo largo del tiempo de la proporción de aciertos de la caché. La eficiencia de la memoria caché está determinada por su proporción de aciertos de la caché. La proporción de aciertos de la caché es el total de aciertos de caché dividido por el total de aciertos y errores. Cuanto más se acerque a 1 esté la proporción, más eficaz será la memoria caché. Una baja proporción de aciertos de caché se debe al volumen de errores de caché. Los errores de caché se producen cuando la clave solicitada no se encuentra en la memoria caché. Una clave no está en la memoria caché porque ha sido expulsada o eliminada, ha caducado o no ha existido nunca. Comprenda por qué las claves no están en la memoria caché y desarrolle las estrategias adecuadas para tenerlas en la memoria caché. 

  **[Recursos]: **
  + [Métricas de Valkey y Redis OSS](CacheMetrics.Redis.md)
+ **[Obligatorio]** Mida y recopile el rendimiento de la caché de su aplicación junto con los valores de latencia y uso de la CPU para saber si necesita realizar ajustes en sus componentes time-to-live o en otros componentes de la aplicación. ElastiCache proporciona un conjunto de CloudWatch métricas para las latencias agregadas de cada estructura de datos. Estas métricas de latencia se calculan mediante la estadística commandstats del comando INFO y no incluyen el tiempo de red ni el tiempo de E/S. Este es solo el tiempo que se tarda ElastiCache en procesar las operaciones.

  **[Recursos]: **
  + [Métricas de Valkey y Redis OSS](CacheMetrics.Redis.md)
  + [Supervisión de las mejores prácticas ElastiCache con Amazon CloudWatch](https://aws.amazon.com/blogs/database/monitoring-best-practices-with-amazon-elasticache-for-redis-using-amazon-cloudwatch/)
+ **[Lo mejor] **Elija la estrategia de almacenamiento en caché adecuada para sus necesidades. Una baja proporción de aciertos de caché se debe al volumen de errores de caché. Si su carga de trabajo está diseñada para tener un bajo volumen de errores de caché (como comunicación en tiempo real), es mejor revisar las estrategias de almacenamiento en caché y aplicar las resoluciones más adecuadas para la carga de trabajo, como la instrumentación de consultas para medir la memoria y el rendimiento. Las estrategias reales que implemente para completar y mantener su caché dependen del tipo de datos que sus clientes necesiten almacenar en la caché, así como de los patrones de acceso a dichos datos. Por ejemplo, es poco probable que utilice la misma estrategia tanto para las recomendaciones personalizadas en una aplicación de streaming como para las noticias más populares. 

  **[Recursos]: **
  + [Estrategias de almacenamiento en caché para Memcached](Strategies.md)
  + [Caching Best Practices](https://aws.amazon.com/caching/best-practices/)
  + [Rendimiento a gran escala con Amazon ElastiCache Whitepaper](https://d0.awsstatic.com/whitepapers/performance-at-scale-with-amazon-elasticache.pdf)

## PE 4: ¿Cómo optimiza la carga de trabajo el uso de los recursos y las conexiones de red?
<a name="PerformanceEfficiencyPillarPE4"></a>

**Introducción a nivel de preguntas:** ElastiCache para Valkey, Memcached y Redis OSS son compatibles con muchos clientes de aplicaciones y las implementaciones pueden variar. Debe comprender la administración de redes y conexiones implementada para analizar el posible impacto en el rendimiento.

**Ventaja a nivel de pregunta: **El uso eficiente de los recursos de red puede mejorar la eficiencia del rendimiento de su clúster. Las siguientes recomendaciones pueden reducir las demandas de red y mejorar la latencia y el rendimiento del clúster. 
+ **[Obligatorio] Gestione** de forma proactiva las conexiones a su clúster. ElastiCache 
  + La agrupación de conexiones en la aplicación reduce la sobrecarga del clúster que se crea al abrir y cerrar conexiones. Supervise el comportamiento de la conexión en Amazon CloudWatch mediante `CurrConnections` y`NewConnections`.
  + Cierre correctamente las conexiones del cliente cuando corresponda para evitar fugas de conexiones. Las estrategias de administración de conexiones incluyen cerrar correctamente las conexiones que no están en uso y establecer tiempos de espera de conexión. 
  + Para las cargas de trabajo de Memcached, hay una cantidad configurable de memoria reservada para gestionar las conexiones denominada `memcached_connections_overhead`. 
+ **[Mejor] **Comprima objetos grandes para reducir la memoria y mejorar el rendimiento de la red.
  + La compresión de datos puede reducir la cantidad de rendimiento de red requerida (Gbps), pero aumenta la cantidad de trabajo de la aplicación para comprimir y descomprimir datos. 
  + La compresión también reduce la cantidad de memoria que consumen las claves
  + En función de las necesidades de su aplicación, considere las ventajas y desventajas entre la relación y la velocidad de compresión.
+ **[Recursos]: **
  + [ElastiCache - Almacén de datos global](https://aws.amazon.com/elasticache/redis/global-datastore/)
  + [Parámetros específicos de Memcached](ParameterGroups.Engine.md#ParameterGroups.Memcached)
  + [ElastiCache La versión 5.0.3 para Redis OSS mejora I/O el manejo para aumentar el rendimiento](https://aws.amazon.com/about-aws/whats-new/2019/03/amazon-elasticache-for-redis-503-enhances-io-handling-to-boost-performance/)
  + [Métricas de Valkey y Redis OSS](CacheMetrics.Redis.md)
  + [Configure ElastiCache para una mayor disponibilidad](https://aws.amazon.com/blogs/database/configuring-amazon-elasticache-for-redis-for-higher-availability/)

## PE 5: ¿Cómo se gestiona la eliminación y el and/or desalojo de claves?
<a name="PerformanceEfficiencyPillarPE5"></a>

**Introducción a nivel de preguntas:** las cargas de trabajo tienen requisitos y comportamientos esperados diferentes cuando un nodo del clúster se acerca a los límites de consumo de memoria. ElastiCache tiene políticas diferentes para gestionar estas situaciones. 

**Ventaja a nivel de pregunta: **La gestión adecuada de la memoria disponible y la comprensión de las políticas de expulsión ayudarán a garantizar el conocimiento del comportamiento del clúster cuando se superen los límites de memoria de las instancias. 
+ **[Obligatorio] **Analice el acceso a los datos para evaluar qué política aplicar. Identifique una política de memoria máxima adecuada para controlar si se realizan expulsiones en el clúster y cómo se hacen.
  + La expulsión tiene lugar cuando se consume la cantidad máxima de memoria del clúster y existe una política que permite la expulsión. El comportamiento del clúster en esta situación depende de la política de expulsión especificada. Esta política se puede administrar con la `maxmemory-policy` en el grupo de parámetros del clúster. 
  + La política predeterminada `volatile-lru` libera memoria al expulsar las claves con una fecha de caducidad establecida (valor de TTL). Las políticas menos usadas frecuentemente (LFU) y menos usadas recientemente (LRU) eliminan las claves en función del uso. 
  + Para las cargas de trabajo de Memcached, existe una política LRU predeterminada que controla las expulsiones en cada nodo. El número de desalojos de tu ElastiCache clúster de Amazon se puede monitorizar mediante la métrica de desalojos de Amazon. CloudWatch
+ **[Mejor] **Estandarice el comportamiento de eliminación para controlar el impacto en el rendimiento de su clúster y evitar atascos inesperados en el rendimiento.
  + En el ElastiCache caso de las cargas de trabajo de OSS de Valkey y Redis, cuando se eliminan explícitamente las claves del clúster, `UNLINK` es como`DEL`: se eliminan las claves especificadas. Sin embargo, el comando realiza la recuperación de memoria real en un subproceso diferente, por lo que no es de bloqueo, mientras que `DEL` sí. La eliminación real se realizará más adelante de forma asincrónica. 
  + En la ElastiCache versión 6.x para las cargas de trabajo de Redis OSS, el comportamiento del `DEL` comando se puede modificar en el grupo de parámetros mediante el parámetro. `lazyfree-lazy-user-del`
+ **[Recursos]: **
  + [Configuración de los parámetros de motor mediante grupos de parámetros de ElastiCache](ParameterGroups.md)
  + [UNLINK](https://valkey.io/commands/unlink/)
  + [Gestión financiera en la nube con AWS](https://aws.amazon.com/aws-cost-management/)

## PE 6: ¿Cómo se modelan los datos e interactúa con ellos ElastiCache?
<a name="PerformanceEfficiencyPillarPE6"></a>

**Introducción a nivel de preguntas:** ElastiCache la aplicación depende en gran medida de las estructuras de datos y del modelo de datos utilizado, pero también debe tener en cuenta el banco de datos subyacente (si está presente). Conozca las estructuras de datos disponibles y asegúrese de utilizar las estructuras de datos más adecuadas para sus necesidades. 

**Ventaja a nivel de pregunta:** el modelado de datos consta de varios niveles, como el caso de uso de la aplicación, los tipos de datos y las relaciones entre los elementos de datos. ElastiCache Además, cada comando y tipo de datos tiene sus propias firmas de rendimiento bien documentadas.
+ **[Lo mejor] **Una práctica recomendada es reducir la sobrescritura involuntaria de datos. Utilice una convención de nomenclatura que minimice la superposición de nombres de clave. La nomenclatura convencional de las estructuras de datos utiliza un método jerárquico como: `APPNAME:CONTEXT:ID`, por ejemplo `ORDER-APP:CUSTOMER:123`.

  **[Recursos]: **
  + [Key naming](https://docs.gitlab.com/ee/development/redis.html#key-naming)
+ **[Lo mejor]** ElastiCache para Valkey y Redis, los comandos OSS tienen una complejidad temporal definida por la notación Big O. Esta complejidad temporal de un comando es una algorithmic/mathematical representación de su impacto. Al introducir un nuevo tipo de datos en su aplicación, debe revisar detenidamente la complejidad temporal de los comandos relacionados. Los comandos con una complejidad temporal de O(1) son constantes y no dependen de la cantidad de datos de entrada.; sin embargo, los comandos con una complejidad temporal de O(N) son lineales y están sujetos a la cantidad de datos de entrada. Debido al diseño de un solo subproceso ElastiCache para Valkey y Redis OSS, un gran volumen de operaciones de alta complejidad temporal se traducirá en un menor rendimiento y posibles tiempos de espera de operación.

  **[Recursos]: **
  + [Comandos](https://valkey.io/commands/)
+ **[Ideal]** Úselo APIs para obtener visibilidad mediante la interfaz gráfica de usuario en el modelo de datos de su clúster.

  **[Recursos]: **
  + [Redis OSS Commander](https://www.npmjs.com/package/ElastiCache for Redis-commander)
  + [Redis OSS Browser](https://github.com/humante/redis-browser)
  + [Redsmin](https://www.redsmin.com/)

## PE 7: ¿Cómo se registran los comandos de ejecución lenta en el ElastiCache clúster de Amazon?
<a name="PerformanceEfficiencyPillarPE7"></a>

**Introducción a nivel de pregunta: **Ventajas del ajuste del rendimiento mediante la captura, la agregación y la notificación de comandos de ejecución prolongada. Si comprende cuánto tiempo tardan en ejecutarse los comandos, puede determinar qué comandos tienen un rendimiento deficiente y qué comandos impiden que el motor funcione de manera óptima. ElastiCache también tiene la capacidad de reenviar esta información a Amazon CloudWatch o Amazon Kinesis Data Firehose.

**Ventaja a nivel de pregunta: **El registro en una ubicación permanente dedicada y la provisión de eventos de notificación para los comandos lentos puede ayudar a realizar un análisis detallado del rendimiento y se puede utilizar para activar eventos automatizados.
+ **[Obligatorio]** ElastiCache ejecutar un motor Valkey 7.2 o posterior, o ejecutar un motor Redis OSS versión 6.0 o posterior, un grupo de parámetros correctamente configurado y el registro de SLOWLOG habilitado en el clúster.
  + Los parámetros requeridos solo están disponibles cuando la compatibilidad de la versión del motor está configurada para Valkey 7.2 y versiones posteriores o Redis OSS versión 6.0 o posteriores.
  + El registro SLOWLOG se produce cuando el tiempo de ejecución de un comando en el servidor supera un valor especificado. El comportamiento del clúster depende de los parámetros del grupo de parámetros asociado, que son `slowlog-log-slower-than` y `slowlog-max-len`.
  + Los cambios surten efecto inmediatamente.
+ **[Lo mejor]** Aproveche nuestras capacidades de CloudWatch Kinesis Data Firehose.
  + Utilice las capacidades de filtrado y alarma de CloudWatch CloudWatch Logs Insights y Amazon Simple Notification Services para lograr la supervisión del rendimiento y la notificación de eventos.
  + Utilice las capacidades de transmisión de Kinesis Data Firehose para archivar los registros SLOWLOG en un almacenamiento permanente o para activar el ajuste automático de los parámetros del clúster.
  + Determine si el formato JSON o TEXTO sin formato se adapta mejor a sus necesidades.
  + Proporcione permisos de IAM para publicar en CloudWatch o en Kinesis Data Firehose.
+ **[Mejor] **Configure `slowlog-log-slower-than` con un valor distinto al predeterminado.
  + Este parámetro determina cuánto tiempo puede ejecutarse un comando en el motor de Valkey o Redis OSS antes de que se registre como un comando de ejecución lenta. El valor predeterminado es 10 000 microsegundos (10 milisegundos). El valor predeterminado puede ser demasiado alto para algunas cargas de trabajo.
  + Determine un valor que sea más adecuado para su carga de trabajo en función de las necesidades de la aplicación y los resultados de las pruebas; sin embargo, un valor demasiado bajo puede generar un exceso de datos.
+ **[Mejor] **Deje `slowlog-max-len` como valor predeterminado.
  + Este parámetro determina el límite superior del número de comandos de ejecución lenta que se capturan en la memoria de Valkey o Redis OSS en un momento dado. Un valor de 0 desactiva de manera efectiva la captura. Cuanto más alto sea el valor, más entradas se almacenarán en la memoria, lo que reducirá la posibilidad de que se expulse información importante antes de poder revisarla. El valor predeterminado es 128.
  + El valor predeterminado es adecuado para la mayoría de las cargas de trabajo. Si es necesario analizar los datos en un período de tiempo ampliado desde valkey-cli mediante el comando SLOWLOG, considere aumentar este valor. Esto permite que queden más comandos en la memoria de Valkey o Redis OSS.

    Si envía los datos de SLOWLOG a CloudWatch Logs o a Kinesis Data Firehose, los datos se conservarán y se podrán analizar fuera del sistema, lo que reducirá ElastiCache la necesidad de almacenar una gran cantidad de comandos de ejecución lenta en la memoria OSS de Valkey o Redis.
+ **[Recursos]: **
  + [¿Cómo activo la entrega de registros en un clúster?](https://repost.aws/knowledge-center/elasticache-turn-on-slow-log)
  + [Entrega de registro](Log_Delivery.md)
  + [Parámetros específicos de Redis OSS](ParameterGroups.Engine.md#ParameterGroups.Redis)
  + [https://aws.amazon.com/cloudwatch/](https://aws.amazon.com/cloudwatch/)Amazon CloudWatch
  + [Amazon Kinesis Data Firehose](https://aws.amazon.com/kinesis/data-firehose/)

## PE8: ¿Cómo ayuda Auto Scaling a aumentar el rendimiento del ElastiCache clúster?
<a name="PerformanceEfficiencyPillarPE8"></a>

**Introducción a nivel de preguntas: al** implementar la función de escalado automático de Valkey o Redis OSS, ElastiCache sus componentes pueden ajustarse con el tiempo para aumentar o disminuir automáticamente los fragmentos o réplicas deseados. Esto se puede hacer mediante la implementación de políticas de escalado programado o de seguimiento de objetivos.

**Ventaja a nivel de pregunta:** comprender y planificar los picos de carga de trabajo puede garantizar un mejor rendimiento del almacenamiento en caché y la continuidad empresarial. ElastiCache Auto Scaling monitorea continuamente el uso de la CPU/memoria para asegurarse de que el clúster funcione a los niveles de rendimiento deseados.
+ **[Obligatorio]** Al lanzar un clúster ElastiCache para Valkey o Redis OSS:

  1. Asegúrese de que el modo Clúster esté habilitado.

  1. Asegúrese de que la instancia pertenezca a una familia de un cierto tipo y tamaño que admita el escalado automático.

  1. Asegúrese de que el clúster no se ejecute en almacenes de datos globales, Outposts o zonas locales.

  **[Recursos]: **
  + [Escalado de clústeres en Valkey y Redis OSS (modo de clúster habilitado)](scaling-redis-cluster-mode-enabled.md)
  + [Uso de Auto Scaling con particiones](AutoScaling-Using-Shards.md)
  + [Uso de Auto Scaling con réplicas](AutoScaling-Using-Replicas.md)
+ **[Lo mejor] **Identifique si su carga de trabajo requiere mucha lectura o escritura para definir la política de escalado. Para obtener el mejor rendimiento, utilice solo una métrica de seguimiento. Se recomienda evitar tener varias políticas para cada dimensión, ya que las políticas de escalado automático se escalan horizontalmente de forma gradual cuando se alcanza el objetivo, pero solo se reducen horizontalmente cuando todas las políticas de seguimiento de objetivos están listas para reducirse horizontalmente.

  **[Recursos]: **
  + [Políticas de Auto Scaling](AutoScaling-Policies.md)
  + [Defining a scaling policy](AutoScaling-Scaling-Defining-Policy-API.md)
+ **[Lo mejor] **Supervisar el rendimiento a lo largo del tiempo puede ayudar a detectar cambios en la carga de trabajo que pasarían desapercibidos si se hiciera en un momento determinado. Puede analizar CloudWatch las métricas correspondientes a la utilización del clúster durante un período de cuatro semanas para determinar el umbral de valor objetivo. Si aún no está seguro de qué valor elegir, se recomienda comenzar con el valor mínimo admitido de métrica predefinida.

  **[Recursos]: **
  + [Supervise el uso con Metrics CloudWatch ](CacheMetrics.md)
+ **[Mejor]** Le recomendamos que pruebe su aplicación con las cargas de trabajo mínimas y máximas esperadas, a fin de identificar la cantidad exacta shards/replicas necesaria para que el clúster desarrolle políticas de escalado y mitigue los problemas de disponibilidad.

  **[Recursos]: **
  + [Registro de un destino escalable](AutoScaling-Register-Policy.md)
  + [Registrar un objetivo escalable mediante AWS CLI](AutoScaling-Scaling-Registering-Policy-CLI.md)

# Pilar de optimización de costos del enfoque Well-Architected de Amazon ElastiCache
<a name="CostOptimizationPillar"></a>

El pilar de optimización de costes se centra en evitar costos innecesarios. Los temas clave incluyen comprender y controlar dónde se gasta el dinero, seleccionar el tipo de nodo más adecuado (utilice instancias que admitan la organización de datos en niveles en función de las necesidades de la carga de trabajo), el número correcto de tipos de recursos (el número de réplicas leídas), analizar el gasto a lo largo del tiempo y escalar para satisfacer las necesidades empresariales sin gastar de más.

**Topics**
+ [COST 1: ¿Cómo se identifica y se realiza el seguimiento de los costos asociados a los recursos de ElastiCache? ¿Cómo se desarrollan los mecanismos que permiten a los usuarios crear, gestionar y eliminar los recursos creados?](#CostOptimizationPillarCOST1)
+ [COST 2: ¿Cómo se utilizan las herramientas de supervisión continua para ayudar a optimizar los costos asociados a los recursos de ElastiCache?](#CostOptimizationPillarCOST2)
+ [COST 3: ¿Debe usar un tipo de instancia que admita la organización de datos en niveles? ¿Cuáles son las ventajas de la organización de datos en niveles? ¿Cuándo no se deben usar instancias de almacenamiento de datos en niveles?](#CostOptimizationPillarCOST3)

## COST 1: ¿Cómo se identifica y se realiza el seguimiento de los costos asociados a los recursos de ElastiCache? ¿Cómo se desarrollan los mecanismos que permiten a los usuarios crear, gestionar y eliminar los recursos creados?
<a name="CostOptimizationPillarCOST1"></a>

**Introducción a nivel de pregunta: **Para comprender las métricas de costos es preciso la participación y la colaboración de varios equipos: ingeniería de software, gestión de datos, propietarios de productos, finanzas y liderazgo. Identificar los principales factores de los costos requiere que todas las partes involucradas comprendan las herramientas de control del uso de los servicios y las soluciones de compromiso que conlleva la administración de costos. Con frecuencia es la diferencia clave entre los esfuerzos de optimización de costos fructíferos e infructuosos. Garantizar que cuente con procesos y herramientas para realizar un seguimiento de los recursos creados desde el desarrollo hasta la producción y la retirada le ayudara a gestionar los costos asociados a ElastiCache.

**Ventaja a nivel de pregunta: **El seguimiento continuo de todos los costos asociados a la carga de trabajo requiere un conocimiento profundo de la arquitectura que incluye ElastiCache como uno de sus componentes. Además, debe contar con un plan de administración de costos para recopilar y comparar el uso con su presupuesto. 
+ **[Obligatorio] **Establezca un centro de excelencia en la nube (CCoE) que tenga un estatuto constitutivo que se encargue de definir, seguir y tomar medidas relacionado con las métricas en torno al uso de ElastiCache en su organización. Si hay un CCoE y funciona, asegúrese de que sepa cómo interpretar y seguir los costos asociados con ElastiCache. Cuando se creen recursos, utilice políticas y roles de IAM para validar que solo equipos y grupos específicos puedan crear instancias de los recursos. Esto garantiza que los costos estén asociados a los resultados comerciales y que se establezca una línea clara de responsabilidad, desde la perspectiva de los costos.

  1. El CCoE debe identificar, definir y publicar métricas de costos que se actualicen de forma periódica (mensual) en torno al uso clave de ElastiCache en datos categóricos, como: 

     1. Tipos de nodos utilizados y sus atributos: instancias estándar frente a instancias optimizadas para memoria, instancias bajo demanda o reservadas, regiones y zonas de disponibilidad

     1. Tipos de entornos: gratuitos, de desarrollo, de pruebas y de producción

     1. Estrategias de almacenamiento y retención de copias de seguridad

     1. Transferencia de datos dentro y entre regiones

     1. Instancias que se ejecutan en Amazon Outposts 

  1. El CCoE está formado por un equipo multifuncional con representación no exclusiva de los equipos de ingeniería de software, gestión de datos, equipo de productos, finanzas y liderazgo de su organización.

  **[Recursos]: **
  + [Create a Cloud Center of Excellence](https://docs.aws.amazon.com/whitepapers/latest/cost-optimization-laying-the-foundation/cloud-center-of-excellence.html)
  + [Precios de Amazon ElastiCache](https://aws.amazon.com/elasticache/pricing/)
+ **[Obligatorio] **Utilice etiquetas de asignación de costos para realizar un seguimiento de los costos con un nivel de detalle bajo. Utilice la administración de costos de AWS para visualizar, comprender y administrar los costos de AWS y el uso a lo largo del tiempo. 

  1. Puede utilizar etiquetas para organizar los recursos y etiquetas de asignación de costos para realizar un seguimiento de los costos de AWS en un nivel detallado. Después de activar las etiquetas de asignación de costos, AWS las utiliza para organizar los costos de los recursos en el informe de asignación de costos, de forma que le resulte más fácil clasificar en categorías los costos de AWS y hacer un seguimiento de ellos. AWS proporciona dos tipos de etiquetas de asignación de costos, las etiquetas de generadas por AWS y las etiquetas definidas por el usuario. AWS define, crea y aplica las etiquetas generadas por AWS por usted, mientras usted define, crea y aplica las etiquetas definidas por el usuario. Debe activar ambos tipos de etiquetas por separado para que puedan aparecer en Cost Management o en un informe de asignación de costos.

  1. Utilice las etiquetas de asignación de costos para organizar la factura de AWS de modo que refleje su propia estructura de costos. Al agregar etiquetas de asignación de costos a sus recursos en Amazon ElastiCache, podrá realizar un seguimiento de los costos mediante el agrupamiento de los gastos en sus facturas por valores de etiqueta de recursos. Plantéese combinar etiquetas para realizar un seguimiento de los costos con un mayor nivel de detalle.

  **[Recursos]: **
  + [Uso de etiquetas de asignación de costos de AWS](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html)
  + [Monitoreo de costos con etiquetas de asignación de costos](Tagging.md)
  + [AWS Explorador de costos de](https://aws.amazon.com/aws-cost-management/aws-cost-explorer/)
+ **[Lo mejor] **Conecte el costo de ElastiCache con las métricas que llegan a toda la organización.

  1. Tenga en cuenta las métricas empresariales y las métricas operativas, como la latencia: ¿qué conceptos de su modelo de negocio son comprensibles en todos los roles? Las métricas deben ser comprensibles para el mayor número posible de roles de la organización. 

  1. Ejemplos: usuarios atendidos simultáneamente, latencia máxima y promedio por operación y usuario, puntuaciones de participación de los usuarios, tasas de retorno de usuarios por semana, duración de la sesión por usuario, tasa de abandono, tasa de aciertos de caché y seguimiento de las claves.

  **[Recursos]: **
  + [Monitoreo del uso con métricas de CloudWatch](CacheMetrics.md)
+ **[Bueno] **Mantenga una visibilidad operativa y arquitectónica actualizada de las métricas y los costos de toda la carga de trabajo que usa ElastiCache.

  1. Entienda todo su ecosistema de soluciones: ElastiCache suele formar parte de un ecosistema completo de servicios de AWS en su conjunto tecnológico, desde clientes hasta API Gateway, Redshift y QuickSight para las herramientas de generación de informes (por ejemplo). 

  1. Mapee los componentes de su solución, desde los clientes, las conexiones, la seguridad, las operaciones en memoria, el almacenamiento, la automatización de recursos, el acceso y la administración de datos, en su diagrama de arquitectura. Cada capa se conecta a toda la solución y tiene sus propias necesidades y capacidades que aumentan el costo total o ayudan a gestionarlo.

  1. El diagrama debe incluir el uso de políticas de computación, redes, almacenamiento, ciclo de vida y recopilación de métricas, así como los elementos operativos y funcionales de ElastiCache de su aplicación.

  1. Es probable que los requisitos de la carga de trabajo evolucionen con el tiempo por lo que es esencial que siga manteniendo y documentando su comprensión de los componentes subyacentes, así como de sus objetivos funcionales principales, a fin de mantener una actitud proactiva en la gestión de los costes de la carga de trabajo.

  1. El apoyo ejecutivo respecto a la visibilidad, la responsabilidad, la priorización y los recursos es crucial para tener una estrategia de administración de costos eficaz para su ElastiCache.

## COST 2: ¿Cómo se utilizan las herramientas de supervisión continua para ayudar a optimizar los costos asociados a los recursos de ElastiCache?
<a name="CostOptimizationPillarCOST2"></a>

**Introducción a nivel de pregunta: **Debe buscar un equilibrio adecuado entre las métricas de costos de ElastiCache y de rendimiento de la aplicación. Amazon CloudWatch proporciona visibilidad de las métricas operativas clave que pueden ayudarlo a evaluar si sus recursos de ElastiCache están sobreutilizados o infrautilizados, en relación con sus necesidades. Desde el punto de vista de la optimización de costos, debe comprender cuándo está sobreaprovisionado y poder desarrollar los mecanismos adecuados para cambiar el tamaño de sus recursos de ElastiCache y, al mismo tiempo, mantener sus necesidades operativas, de disponibilidad, de resiliencia y de rendimiento. 

**Ventaja a nivel de pregunta: **En un estado ideal, habrá aprovisionado suficientes recursos para satisfacer las necesidades operativas de su carga de trabajo y no tendrá recursos infrautilizados que puedan llevar a un estado de costos deficiente. Debe poder identificar y evitar utilizar recursos de ElastiCache sobredimensionados durante períodos prolongados. 
+ **[Obligatorio] **Utilice CloudWatch para supervisar sus clústeres de ElastiCache y analizar cómo se relacionan estas métricas con sus paneles de AWS Cost Explorer. 

  1. ElastiCache proporciona métricas de nivel de anfitrión (por ejemplo, sobre el uso de la CPU) y métricas específicas del software del motor de caché (por ejemplo, las tasas de caché y los errores de caché). Estas métricas se miden y publican para cada nodo de caché en intervalos de 60 segundos.

  1. Las métricas de rendimiento de ElastiCache (CPUUtilization, EngineUtilization, SwapUsage, CurrConnections y Evictions) pueden indicar que necesita escalar o reducir verticalmente o (utilizar tipos de nodos de caché más grandes o más pequeños) o escalar o reducir horizontalmente (agregar más/menos particiones). Comprenda las implicaciones financieras de las decisiones de escalado mediante la creación de una matriz de estrategias que estime el costo adicional y los períodos de tiempo mínimos y máximos necesarios para cumplir con los umbrales de rendimiento de sus aplicaciones.

  **[Recursos]: **
  + [Monitoreo del uso con métricas de CloudWatch](CacheMetrics.md)
  + [Qué métricas debo monitorear?](CacheMetrics.WhichShouldIMonitor.md)
  + [Precios de Amazon ElastiCache](https://aws.amazon.com/elasticache/pricing/)
+ **[Obligatorio] **Comprenda y documente su estrategia de copias de seguridad y las implicaciones de costos.

  1. Con ElastiCache, las copias de seguridad se almacenan en Amazon S3, que proporciona un almacenamiento duradero. Debe comprender las implicaciones de costos en relación con su capacidad para recuperarse en caso de errores.

  1. Habilite copias de seguridad automáticas que eliminarán los archivos de copia de seguridad que hayan superado el límite de retención.

  **[Recursos]: **
  + [Programación de copias de seguridad automáticas](backups-automatic.md)
  + [Precios de Amazon Simple Storage Service](https://aws.amazon.com/s3/pricing/)
+ **[Lo mejor] **Utilice nodos reservados para sus instancias como estrategia deliberada para administrar los costos de las cargas de trabajo que se conocen bien y están documentadas. Los nodos reservados se cobran por adelantado en función de una tarifa que depende del tipo de nodo y la duración de la reserva: uno o tres años. Dicho cargo es mucho menor que el cargo por uso por hora que se aplica con los nodos bajo demanda.

  1. Es posible que tenga que operar sus clústeres de ElastiCache mediante nodos bajo demanda hasta que haya recopilado suficientes datos para estimar los requisitos de instancias reservadas. Planifique y documente los recursos necesarios para satisfacer sus necesidades y compare los costos esperados entre los tipos de instancias (bajo demanda o reservadas).

  1. Evalúe periódicamente los nuevos tipos de nodos de caché disponibles y determine si tiene sentido, desde una perspectiva de métricas operativas y de costos, migrar su flota de instancias a nuevos tipos de nodos de caché.

## COST 3: ¿Debe usar un tipo de instancia que admita la organización de datos en niveles? ¿Cuáles son las ventajas de la organización de datos en niveles? ¿Cuándo no se deben usar instancias de almacenamiento de datos en niveles?
<a name="CostOptimizationPillarCOST3"></a>

**Introducción a nivel de pregunta: **Seleccionar el tipo de instancia adecuado no solo puede tener un impacto en el rendimiento y el nivel de servicio, sino también en los aspectos financieros. Los tipos de instancias tienen diferentes costos asociados. Una decisión natural es seleccionar uno o varios tipos de instancias grandes que puedan adaptarse a todas las necesidades de almacenamiento de memoria. Sin embargo, esto podría tener un impacto significativo en los costos a medida que el proyecto madure. Para asegurarse de seleccionar el tipo de instancia correcto, es necesario examinar periódicamente el tiempo de inactividad del objeto ElastiCache.

**Ventaja a nivel de pregunta: **Debe tener una idea clara de cómo los distintos tipos de instancias afectan a sus costes en el presente y en el futuro. Los cambios marginales o periódicos en la carga de trabajo no deberían provocar cambios desproporcionados en los costos. Si la carga de trabajo lo permite, los tipos de instancias que admiten la organización de datos en niveles ofrecen un mejor precio por almacenamiento disponible. Gracias al almacenamiento SSD disponible por instancia, las instancias de organización de datos en niveles admiten una capacidad total de datos por instancia mucho mayor.
+ **[Obligatorio] **Comprenda las limitaciones de las instancias de almacenamiento de datos en niveles.

  1. Solo están disponibles para clústeres de ElastiCache para Valkey o Redis OSS.

  1. Solo algunos tipos de instancias admiten la organización de datos en niveles.

  1. Solo se admite la versión 6.2 y superior de ElastiCache para Redis OSS.

  1. Los elementos grandes no se intercambian a SSD. Los objetos de más de 128 MiB se guardan en la memoria.

  **[Recursos]: **
  + [Organización de datos en niveles](data-tiering.md)
  + [Precios de Amazon ElastiCache](https://aws.amazon.com/elasticache/pricing/)
+ **[Obligatorio] **Comprenda a qué porcentaje de su base de datos accede regularmente su carga de trabajo.

  1. Las instancias de almacenamiento de datos en niveles son ideales para cargas de trabajo que, a menudo, acceden a una pequeña parte del conjunto de datos general, pero que aun así requieren un acceso rápido al resto de los datos. En otras palabras, la relación entre datos calientes y templados es de aproximadamente 20:80.

  1. Desarrolle un seguimiento a nivel de clúster del tiempo de inactividad de los objetos.

  1. Las implementaciones grandes de más de 500 Gb de datos son buenas candidatas.
+ **[Obligatorio] **Comprenda que las instancias de organización de datos en niveles no son opcionales para determinadas cargas de trabajo.

  1. El acceso a los objetos que se utilizan con menos frecuencia conlleva un pequeño costo de rendimiento, ya que se intercambian a SSD locales. Si su aplicación depende del tiempo de respuesta, pruebe el impacto en su carga de trabajo.

  1. No resulta adecuado para cachés que almacenan principalmente objetos grandes de más de 128 MiB de tamaño.

  **[Recursos]: **
  + [Limitaciones](data-tiering.md#data-tiering-prerequisites)
+ **[Lo mejor] **Los tipos de instancias reservadas admiten la organización de datos en niveles. Esto garantiza un menor costo en términos de cantidad de almacenamiento de datos por instancia.

  1. Es posible que tenga que operar sus clústeres de ElastiCache mediante instancias sin organización de datos en niveles hasta que comprenda mejor sus requisitos.

  1. Analice el patrón de uso de datos de sus clústeres de ElastiCache.

  1. Cree un trabajo automatizado que recopile periódicamente el tiempo de inactividad de los objetos.

  1. Si observa que un gran porcentaje (alrededor del 80 %) de los objetos permanecen inactivos durante un período de tiempo que considere apropiado para su carga de trabajo, documente los hallazgos y sugiera migrar el clúster a instancias que admitan la organización de datos en niveles.

  1. Evalúe periódicamente los nuevos tipos de nodos de caché disponibles y determine si tiene sentido, desde una perspectiva de métricas operativas y de costos, migrar su flota de instancias a nuevos tipos de nodos de caché.

  **[Recursos]: **
  + [OBJECT IDLETIME](https://valkey.io/commands/object-idletime/)
  + [Precios de Amazon ElastiCache](https://aws.amazon.com/elasticache/pricing/)

# Pasos comunes de solución de problemas y prácticas recomendadas con ElastiCache
<a name="wwe-troubleshooting"></a>

En los temas siguientes se proporcionan consejos para solucionar los errores y problemas que puedan surgir al utilizarlos. ElastiCache Si se encuentra con un problema que no se muestra aquí, puede utilizar el botón de feedback de esta página para notificarlo.

Para obtener más consejos sobre la resolución de problemas y respuestas a preguntas comunes de compatibilidad, visite el [Centro de conocimiento de AWS](https://aws.amazon.com/premiumsupport/knowledge-center/).

**Topics**
+ [Problemas de conectividad](#wwe-troubleshooting.connection)
+ [Errores del cliente de Valkey o Redis OSS](#wwe-troubleshooting.clienterrors)
+ [Solución de problemas de alta latencia en Serverless ElastiCache](#wwe-troubleshooting.latency)
+ [Solución de problemas de limitación en Serverless ElastiCache](#wwe-troubleshooting.throttling)
+ [Problemas de las conexiones persistentes](TroubleshootingConnections.md)
+ [Temas relacionados](#wwe-troubleshooting.related)

## Problemas de conectividad
<a name="wwe-troubleshooting.connection"></a>

Si no puedes conectarte a la ElastiCache memoria caché, considera una de las siguientes opciones:

1. **Uso de TLS:** si se produce un bloqueo de la conexión al dispositivo de ElastiCache punto final, es posible que no esté utilizando TLS en su cliente. Si utiliza ElastiCache Serverless, el cifrado en tránsito siempre está activado. Asegúrese de que su cliente utilice TLS para conectarse a la caché. [Obtenga más información sobre cómo conectarte a una caché con TLS habilitado](connect-tls.md).

1. **VPC:** solo se puede acceder a las ElastiCache cachés desde una VPC. Asegúrese de que la EC2 instancia desde la que accede a la caché y a la ElastiCache caché se crean en la misma VPC. Como alternativa, debe habilitar el emparejamiento de [VPC entre](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html) la VPC en la que EC2 reside la instancia y la VPC en la que va a crear la caché. 

1. **Grupos de seguridad: ElastiCache usa grupos** de seguridad para controlar el acceso a la memoria caché. Considere lo siguiente:

   1. Asegúrese de que el grupo de seguridad utilizado por la ElastiCache memoria caché permita el acceso entrante a la misma desde la EC2 instancia. Consulte [aquí](https://docs.aws.amazon.com/vpc/latest/userguide/security-group-rules.html) cómo configurar correctamente las reglas de entrada en su grupo de seguridad. 

   1. Asegúrese de que el grupo de seguridad utilizado por la ElastiCache memoria caché permita el acceso a los puertos de la memoria caché (6379 y 6380 para los clústeres sin servidor y 6379 de forma predeterminada para los clústeres basados en nodos). ElastiCache utiliza estos puertos para aceptar los comandos OSS de Valkey o Redis. Obtenga más información sobre cómo configurar el acceso a los puertos [aquí](set-up.md#elasticache-install-grant-access-VPN).

Si la conexión sigue siendo difícil, consulte otros pasos en [Problemas de las conexiones persistentes](TroubleshootingConnections.md).

## Errores del cliente de Valkey o Redis OSS
<a name="wwe-troubleshooting.clienterrors"></a>

ElastiCache Solo se puede acceder a Serverless mediante clientes que admitan el protocolo de modo de clúster OSS de Valkey o Redis. Se puede acceder a los clústeres basados en nodos desde los clientes en cualquier modo, según la configuración del clúster.

Si experimenta errores en su cliente, tenga en cuenta lo siguiente:

1. **Modo de clúster:** si se producen errores de CROSSLOT o errores con el comando [SELECT](https://valkey.io/commands/select/), es posible que esté intentando acceder a una caché habilitada en modo de clúster con un cliente OSS de Valkey o Redis que no sea compatible con el protocolo de clúster. ElastiCache Serverless solo admite clientes que admitan el protocolo de clúster OSS de Valkey o Redis. Si desea utilizar Valkey o Redis OSS en el modo de clúster deshabilitado (CMD), debe crear su propio clúster basado en nodos. 

1. **Errores CROSSLOT:** si se produce el error `ERR CROSSLOT Keys in request don't hash to the same slot`, es posible que esté intentando acceder a claves que no pertenecen a la misma ranura de una caché en modo de clúster. Como recordatorio, ElastiCache Serverless siempre funciona en modo clúster. Las operaciones con varias claves, las transacciones o los scripts de Lua que contengan varias claves solo están permitidas si todas las claves involucradas se encuentran en la misma ranura de hash. 

Para conocer más prácticas recomendadas sobre la configuración de los clientes de Valkey o Redis OSS, consulte esta [entrada del blog](https://aws.amazon.com/blogs/database/best-practices-redis-clients-and-amazon-elasticache-for-redis/). 

## Solución de problemas de alta latencia en Serverless ElastiCache
<a name="wwe-troubleshooting.latency"></a>

Si tu carga de trabajo parece experimentar una latencia alta, puedes analizar las `SuccessfulWriteRequestLatency` métricas CloudWatch `SuccessfulReadRequestLatency` y comprobar si la latencia está relacionada con ElastiCache Serverless. Estas métricas miden la latencia, que es interna de ElastiCache Serverless; no se incluyen la latencia del lado del cliente ni los tiempos de recorrido de la red entre el cliente y el terminal ElastiCache Serverless. 

**Solución de problemas de latencia del cliente**

Si observa una latencia elevada en el lado del cliente, pero no un aumento correspondiente en `` CloudWatch `SuccessfulReadRequestLatency` la latencia del lado del servidor, ni `SuccessfulWriteRequestLatency` métricas que la midan, tenga en cuenta lo siguiente:
+ **Asegúrese de que el grupo de seguridad permita el acceso a los puertos 6379 y 6380:** ElastiCache Serverless utiliza el puerto 6379 para el punto final principal y el puerto 6380 para el punto final del lector. Algunos clientes establecen la conectividad con ambos puertos para cada nueva conexión, incluso si la aplicación no utiliza la característica Lectura desde réplica. Si su grupo de seguridad no permite el acceso entrante a ambos puertos, el establecimiento de la conexión puede tardar más. Obtenga más información sobre cómo configurar el acceso a los puertos [aquí](set-up.md#elasticache-install-grant-access-VPN). 

**Solución de problemas de latencia del servidor**

No hay que preocuparse si hay cierta variabilidad y algunos picos ocasionales. Sin embargo, si la `Average` estadística muestra un aumento brusco y persiste, consulte el Personal Health Dashboard Panel de estado y su Personal Health Dashboard para obtener más información. Si es necesario, considere la posibilidad de abrir un caso de soporte con Soporte. 

Tenga en cuenta las siguientes prácticas recomendadas y estrategias para reducir la latencia:
+ **Habilitar Lectura desde réplica:** si su aplicación lo permite, le recomendamos que habilite la característica Lectura desde réplica en su cliente de Valkey o Redis OSS para escalar las lecturas y lograr una latencia más baja. Cuando está activado, ElastiCache Serverless intenta enrutar las solicitudes de lectura a los nodos de caché de réplica que se encuentran en la misma zona de disponibilidad (AZ) que el cliente, lo que evita la latencia de la red entre zonas de disponibilidad. Tenga en cuenta que habilitar la característica Lectura desde réplica en su cliente implica que su aplicación acepta, en última instancia, la coherencia de los datos. Es posible que su aplicación reciba datos antiguos durante algún tiempo si intenta leerlos después de escribirlos en una clave. 
+ **Asegúrese de que la aplicación esté desplegada en la AZs misma ubicación que la caché:** si la aplicación no se implementa en la misma AZs ubicación que la caché, es posible que observe una mayor latencia en el lado del cliente. Al crear una caché sin servidor, puede proporcionar las subredes desde las que la aplicación accederá a la caché, y ElastiCache Serverless crea puntos de enlace de VPC en esas subredes. Asegúrese de que la aplicación esté desplegada en la misma ubicación. AZs De lo contrario, la aplicación podría sufrir un salto entre zonas de disponibilidad al acceder a la caché, lo que provocaría una mayor latencia del cliente. 
+ **Conexiones de reutilización:** las solicitudes ElastiCache sin servidor se realizan a través de una conexión TCP habilitada para TLS mediante el protocolo RESP. Iniciar la conexión (incluida la autenticación de la conexión, si está configurada) lleva tiempo, por lo que la latencia de la primera solicitud es superior a la típica. Las solicitudes a través de una conexión ya inicializada ofrecen ElastiCache una baja latencia constante. Por este motivo, debería considerar la posibilidad de utilizar una agrupación de conexiones o reutilizar las conexiones de Valkey o Redis OSS existentes. 
+ **Velocidad de escalado:** ElastiCache Serverless escala automáticamente a medida que aumenta la tasa de solicitudes. Un aumento importante y repentino de la tasa de solicitudes, más rápido que la velocidad a la que se escala ElastiCache Serverless, puede provocar un aumento de la latencia durante algún tiempo. ElastiCache Por lo general, la tecnología Serverless puede aumentar rápidamente su tasa de solicitudes admitidas, lo que tarda entre 10 y 12 minutos en duplicar la tasa de solicitudes.
+ **Inspeccione los comandos de ejecución prolongada:** algunos comandos de Valkey o Redis OSS, incluidos los scripts de Lua o los comandos de estructuras de datos de gran tamaño, podrían ejecutarse durante mucho tiempo. Para identificar estos comandos, ElastiCache publica las métricas a nivel de comando. Con [ElastiCache Serverless](serverless-metrics-events-redis.md#serverless-metrics) puedes usar las `BasedECPUs` métricas. 
+ **Solicitudes limitadas: cuando las solicitudes** se limitan en ElastiCache Serverless, es posible que experimente un aumento en la latencia del lado del cliente en su aplicación. [Cuando las solicitudes se limitan en ElastiCache Serverless, deberías ver un aumento en la métrica Serverless. `ThrottledRequests` ElastiCache ](serverless-metrics-events-redis.md#serverless-metrics) Consulte la siguiente sección para solucionar problemas de las solicitudes con limitaciones.
+ **Distribución uniforme de las claves y las solicitudes:** en ElastiCache el caso de los OSS de Valkey y Redis, una distribución desigual de las claves o solicitudes por ranura puede dar lugar a un espacio ocupado, lo que puede provocar una latencia elevada. ElastiCache La tecnología Serverless admite hasta 30 000 unidades ECPUs/second (90 000 ECPUs/second si se utiliza la función de lectura desde réplica) en una sola ranura, lo que supone una carga de trabajo que requiere la ejecución de comandos sencillos. SET/GET Le recomendamos que evalúe la distribución de las claves y las solicitudes en las ranuras y que garantice una distribución uniforme si la tasa de solicitudes supera este límite. 

## Solución de problemas de limitación en Serverless ElastiCache
<a name="wwe-troubleshooting.throttling"></a>

En las arquitecturas orientadas a servicios y en los sistemas distribuidos, la limitación de la velocidad a la que los distintos componentes del servicio procesan las llamadas a la API se denomina limitación. Esto suaviza los picos, controla los desajustes en el rendimiento de los componentes y permite realizar recuperaciones más predecibles cuando se produce un evento operativo inesperado. ElastiCache Serverless está diseñado para este tipo de arquitecturas, y la mayoría de los clientes OSS de Valkey o Redis incorporan reintentos para las solicitudes limitadas. Cierto grado de limitación no es necesariamente un problema para su aplicación, pero la limitación persistente de una parte sensible a la latencia de su flujo de trabajo de datos puede afectar negativamente a la experiencia del usuario y reducir la eficacia general del sistema. 

[Cuando las solicitudes se limitan en Serverless, deberías ver un aumento en la ElastiCache métrica Serverless. `ThrottledRequests` ElastiCache ](serverless-metrics-events-redis.md#serverless-metrics) Si observa un número elevado de solicitudes con limitación, tenga en cuenta lo siguiente:
+ **Velocidad de escalado:** ElastiCache Serverless escala automáticamente a medida que se ingieren más datos o se aumenta la tasa de solicitudes. Si la aplicación escala más rápido que la velocidad a la que se escala sin servidor, es posible que sus solicitudes se reduzcan mientras que ElastiCache Serverless escala para adaptarse a su carga de trabajo. ElastiCache ElastiCache Por lo general, Serverless puede aumentar el tamaño de almacenamiento rápidamente, y tarda entre 10 y 12 minutos en duplicar el tamaño de almacenamiento de la memoria caché.
+ **Distribución uniforme de las claves y las solicitudes:** en ElastiCache el caso de Valkey y Redis OSS, una distribución desigual de las claves o solicitudes por ranura puede provocar una sobrecarga. Si la tasa de solicitudes en una sola ranura supera las 30 000 ECPUs/second y si la carga de trabajo requiere ejecutar comandos sencillos, se pueden limitar las solicitudes. SET/GET Del mismo modo, en ElastiCache el caso de Memcached, una tecla de acceso rápido puede provocar una limitación de las solicitudes si la tasa de solicitudes supera las 30 000 por segundo. ECPUs
+ **Lectura desde réplica:** si su aplicación lo permite, considere la posibilidad de utilizar la característica Lectura desde réplica. La mayoría de los clientes de Valkey o Redis OSS se pueden configurar para escalar las lecturas con el fin de dirigir las lecturas a los nodos de réplica. Esta característica le permite escalar el tráfico de lectura. Además, ElastiCache Serverless enruta automáticamente la lectura de las solicitudes de réplica a los nodos de la misma zona de disponibilidad que la aplicación, lo que reduce la latencia. Cuando la función Read from Replica está habilitada, puede alcanzar hasta 90 000 ECPUs/second en una sola ranura, para cargas de trabajo con comandos sencillos. SET/GET 

# Problemas de las conexiones persistentes
<a name="TroubleshootingConnections"></a>

Se deben verificar los siguientes elementos al solucionar problemas de conectividad persistentes con ElastiCache:

**Topics**
+ [Grupos de seguridad](#Security_groups)
+ [ACL de red](#Network_ACLs)
+ [Tablas de enrutamiento](#Route_tables)
+ [Resolución de los DNS](#DNS_Resolution)
+ [Identificación de los problemas con los diagnósticos del lado del servidor](#Diagnostics)
+ [Validación de la conectividad de red](#Connectivity)
+ [Límites relacionados con la red](#Network-limits)
+ [Uso de la CPU](#CPU-Usage)
+ [Conexiones que terminan desde el lado del servidor](#Connections-server)
+ [Solución de problemas del lado del cliente para instancias de Amazon EC2](#Connections-client)
+ [Análisis del tiempo que se tarda en completar una sola solicitud](#Dissecting-time)

## Grupos de seguridad
<a name="Security_groups"></a>

Los grupos de seguridad son firewalls virtuales que protegen su cliente ElastiCache (instancia EC2, función de AWS Lambda, contenedor de Amazon ECS, etc.) y la caché de ElastiCache. Además, son firewalls con estado, lo que significa que, después de permitir el tráfico entrante o saliente, las respuestas para ese tráfico se autorizarán automáticamente en el contexto de ese grupo de seguridad específico.

La característica con estado requiere que el grupo de seguridad realice un seguimiento de todas las conexiones autorizadas. Además, hay un límite para las conexiones monitoreadas. Si se alcanza ese límite, las conexiones nuevas producirán errores. Consulte la sección de solución de problemas para obtener ayuda sobre cómo identificar si se han alcanzado los límites en el lado del cliente o en el de ElastiCache.

Puede tener un único grupo de seguridad asignado tanto para el cliente como para el clúster de ElastiCache a la vez o un grupo de seguridad para cada uno de ellos.

En ambos casos, se debe permitir el tráfico de salida del TCP en el puerto ElastiCache desde la fuente y el tráfico de entrada del mismo puerto a ElastiCache. El puerto predeterminado es 11211 para Memcached y 6379 para Valkey o Redis OSS. De forma predeterminada, los grupos de seguridad permiten el tráfico de salida. En este caso, solo se requiere la regla de entrada en el grupo de seguridad de destino.

A fin de obtener más información, consulte [Patrones de acceso para obtener la entrada a un clúster de ElastiCache en una Amazon VPC](elasticache-vpc-accessing.md).

## ACL de red
<a name="Network_ACLs"></a>

Las listas de control de acceso (ACL) de red son reglas sin estado. El tráfico debe estar permitido en ambas direcciones (tanto de entrada como de salida) para tener éxito. Las ACL de red se asignan a subredes, no a recursos específicos. Se puede tener la misma ACL asignada a ElastiCache y al recurso del cliente, sobre todo si se encuentran en la misma subred.

De forma predeterminada, las ACL de red permiten todo el tráfico. Sin embargo, se pueden modificar para denegar o permitir el tráfico. Además, la evaluación de las reglas de las ACL es secuencial, lo que significa que la regla con el número más bajo que coincida con el tráfico lo permitirá o lo denegará. La configuración mínima para permitir el tráfico de Valkey o Redis OSS es:

ACL de red del lado del cliente:
+ **Reglas de entrada:**
+ Número de regla: preferiblemente inferior a cualquier regla de denegación
+ Tipo: regla de TCP personalizada
+ Protocol: TCP
+ Intervalo de puertos: 1024-65535
+ Fuente: 0.0.0.0/0 (o establezca reglas individuales para las subredes del clúster de ElastiCache)
+ Permitir/Denegar: Permitir
+ **Reglas salientes**
+ Número de regla: preferiblemente inferior a cualquier regla de denegación
+ Tipo: regla de TCP personalizada
+ Protocol: TCP
+ Intervalo de puertos: 6379
+ Fuente: 0.0.0.0/0 (o las subredes del clúster de ElastiCache. Tenga en cuenta que el uso de las direcciones IP específicas puede causar problemas en caso de que ocurra una conmutación por error o debido a la escalabilidad del clúster)
+ Permitir/Denegar: Permitir

ACL de red de ElastiCache:
+ **Reglas de entrada:**
+ Número de regla: preferiblemente inferior a cualquier regla de denegación
+ Tipo: regla de TCP personalizada
+ Protocol: TCP
+ Intervalo de puertos: 6379
+ Fuente: 0.0.0.0/0 (o establezca reglas individuales para las subredes del clúster de ElastiCache)
+ Permitir/Denegar: Permitir
+ **Reglas salientes**
+ Número de regla: preferiblemente inferior a cualquier regla de denegación
+ Tipo: regla de TCP personalizada
+ Protocol: TCP
+ Intervalo de puertos: 1024-65535
+ Fuente: 0.0.0.0/0 (o las subredes del clúster de ElastiCache. Tenga en cuenta que el uso de las direcciones IP específicas puede causar problemas en caso de que ocurra una conmutación por error o debido a la escalabilidad del clúster)
+ Permitir/Denegar: Permitir

Para obtener más información, consulte las [ACL de red](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html).

## Tablas de enrutamiento
<a name="Route_tables"></a>

De manera similar a las ACL de red, cada subred puede tener tablas de enrutamiento diferentes. Si los clientes y el clúster de ElastiCache se encuentran en subredes diferentes, asegúrese de que las tablas de enrutamiento permitan la conexión entre ellos.

Los entornos más complejos, los cuales implican varias VPC, enrutamiento dinámico o firewalls de red, pueden dificultar la resolución de los problemas. Consulte [Validación de la conectividad de red](#Connectivity) para confirmar que la configuración de red es adecuada.

## Resolución de los DNS
<a name="DNS_Resolution"></a>

ElastiCache proporciona los puntos de enlace de servicio basados en nombres de dominio (DNS). Los puntos de enlace disponibles son los puntos `Configuration`, `Primary`, `Reader` y `Node`. Para obtener más información, consulte [Búsqueda de puntos de enlace de conexión](Endpoints.md).

En caso de conmutación por error o de modificación del clúster, la dirección asociada al nombre del punto de conexión puede cambiar y se actualizará de forma automática.

Es posible que la configuración de DNS personalizada (es decir, cuando no se emplea el servicio de DNS de la VPC) no conozca los nombres de dominios que proporciona ElastiCache. Asegúrese de que el sistema pueda resolver los puntos de enlace de ElastiCache con éxito mediante herramientas de sistema como `dig` (como se muestra a continuación) o `nslookup`.

```
$ dig +short example.xxxxxx.ng.0001.use1.cache.amazonaws.com
example-001.xxxxxx.0001.use1.cache.amazonaws.com.
1.2.3.4
```

Además, la resolución de nombres se puede forzar a través del servicio de DNS de la VPC:

```
$ dig +short example.xxxxxx.ng.0001.use1.cache.amazonaws.com @169.254.169.253
example-001.tihewd.0001.use1.cache.amazonaws.com.
1.2.3.4
```

## Identificación de los problemas con los diagnósticos del lado del servidor
<a name="Diagnostics"></a>

Las métricas de CloudWatch y la información de tiempo de ejecución del motor de ElastiCache son recursos o datos frecuentes para identificar las posibles causas de los problemas de conexión. En general, un buen análisis comienza con los siguientes elementos:
+ Uso de la CPU: Valkey o Redis OSS son aplicaciones de múltiples subprocesos. Sin embargo, la ejecución de cada comando ocurre en un solo subproceso (principal). Por este motivo, ElastiCache proporciona las métricas `CPUUtilization` y `EngineCPUUtilization`. La métrica `EngineCPUUtilization` proporciona el uso de la CPU dedicado al proceso de Valkey o Redis OSS y la `CPUUtilization` el uso en todas las vCPU. Los nodos con más de una vCPU suelen tener valores diferentes para `CPUUtilization` y `EngineCPUUtilization`, el segundo suele ser más alto. Una `EngineCPUUtilization` alta puede producirse por un número elevado de solicitudes u operaciones complejas que toman demasiado tiempo de CPU en completarse. Ambos se pueden identificar por:
  + Un número elevado de solicitudes: verifique si hay aumentos en otras métricas que coincidan con el patrón de `EngineCPUUtilization`. Las métricas útiles son:
    + `CacheHits` y `CacheMisses`: el número de solicitudes correctas o solicitudes que no han encontrado un elemento válido en la caché Si la proporción de los errores en comparación con los aciertos es alta, la aplicación está perdiendo tiempo y consta de recursos con solicitudes poco útiles.
    + `SetTypeCmds` y `GetTypeCmds`: estas métricas, las cuales se encuentran correlacionadas con `EngineCPUUtilization`, pueden ayudar a entender si la carga es mucho más elevada para las solicitudes de escritura (medida por `SetTypeCmds`) o lecturas (medida por `GetTypeCmds`). Si la carga son lecturas en su gran mayoría, el uso de varias réplicas de lectura puede equilibrar las solicitudes en varios nodos y ahorrar las principales para las escrituras. En clústeres con el modo de clúster deshabilitado, el uso de réplicas de lectura se puede realizar mediante la creación de una configuración de conexión adicional en la aplicación mediante el punto de conexión del lector de ElastiCache. Para obtener más información, consulte [Búsqueda de puntos de enlace de conexión](Endpoints.md). Las operaciones de lectura deben enviarse a esta conexión adicional. Las operaciones de escritura se realizarán a través del punto de conexión principal habitual. En el modo de clúster habilitado, se aconseja utilizar una biblioteca que admita réplicas de lectura por defecto. Con los indicadores correctos, la biblioteca podrá identificar automáticamente la topología del clúster y los nodos de la réplica, así como también habilitar las operaciones de lectura mediante el comando de Valkey o Redis OSS [READONLY](https://valkey.io/commands/readonly) y enviar las solicitudes de lectura a las réplicas.
  + Número elevado de conexiones:
    + `CurrConnections` y `NewConnections`: `CurrConnection` muestra el número de conexiones establecidas en el momento de la recopilación de puntos de datos, mientras que `NewConnections` muestra cuántas conexiones se crearon en el periodo.

      La creación y la gestión de las conexiones implica una sobrecarga significativa de la CPU. Además, el protocolo de establecimiento de comunicación de tres canales del TCP que se necesita para crear conexiones nuevas afectará negativamente a los tiempos de respuesta generales.

      Un nodo de ElastiCache con miles de `NewConnections` por minuto indica que una conexión es creada y utilizada por unos pocos comandos, lo cual no es óptimo. Una práctica recomendada es mantener las conexiones establecidas y reutilizarlas para operaciones nuevas. Esto es posible cuando la aplicación de cliente admite e implementa correctamente la agrupación de conexiones o conexiones persistentes. Con la agrupación de conexiones, el número de `currConnections` no tiene grandes variaciones y `NewConnections` debe ser lo más bajo posible. Valkey y Redis OSS proporcionan un rendimiento óptimo con un pequeño número de currConnections. Mantener la métrica currConnections en el orden de decenas o centenas minimiza el uso de recursos para admitir conexiones individuales tales como los búferes del lado del cliente y los ciclos de la CPU a fin de servir la conexión.
  + Rendimiento de la red:
    + Determine la banda ancha: los nodos de ElastiCache tienen una banda ancha de red proporcional al tamaño del nodo. Dado que las aplicaciones tienen características diferentes, los resultados pueden variar según la carga de trabajo. Como, por ejemplo, las aplicaciones que tengan una alta tasa de solicitudes pequeñas tienden a afectar más al uso de la CPU que al rendimiento de la red, mientras que las claves más grandes generarán un mayor uso de la red. Por esta razón, se aconseja probar los nodos con la carga de trabajo real para una mejor comprensión de los límites.

      Simular la carga desde la aplicación proporcionaría resultados más precisos. Sin embargo, las herramientas de punto de referencia pueden transmitir una buena noción de los límites.
    + Para los casos en los que las solicitudes son principalmente lecturas, el uso de réplicas para operaciones de lectura aliviará la carga en el nodo primario. Si el caso de uso es predominantemente de escrituras, el uso de muchas réplicas amplificará el uso de la red. Por cada byte escrito en el nodo primario, se enviarán N bytes a las réplicas, siendo N el número de réplicas. La práctica recomendada para las cargas de trabajo intensivas de escritura es usar ElastiCache para Redis con el modo de clúster habilitado a fin de que las escrituras se puedan equilibrar en varias particiones o escalar verticalmente hasta un tipo de nodo con más capacidades de red.
    + Las métricas de CloudWatch `NetworkBytesIn` y `NetworkBytesOut` proporcionan la cantidad de datos que entran o salen del nodo, respectivamente. `ReplicationBytes` es el tráfico dedicado a la reproducción de datos.

    Para obtener más información, consulte [Límites relacionados con la red](#Network-limits).
  + Comandos complejos: los comandos de Redis OSS se ofrecen en un solo subproceso, lo que significa que las solicitudes se ofrecen de forma secuencial. Un solo comando lento puede afectar a otras solicitudes y conexiones, lo que genera tiempos de espera. El uso de comandos que actúan sobre varios valores, claves o tipos de datos debe efectuarse con cuidado. Las conexiones pueden bloquearse o interrumpirse en función del número de parámetros o del tamaño de sus valores de entrada o de salida.

    Un ejemplo notorio es el comando `KEYS`. Analiza todo el espacio de claves en la búsqueda de un patrón dado y bloquea la puesta en marcha de otros comandos durante su ejecución. Redis OSS emplea la notación Big O para describir la complejidad de sus comandos.

    El comando de claves tiene una complejidad de tiempo O(N), siendo N el número de claves en la base de datos. Por lo tanto, cuanto mayor sea el número de claves, más lento será el comando. Sin embargo, el comando `KEYS` puede causar problemas de diferentes maneras. Si no se utiliza un patrón de búsqueda, el comando devolverá todos los nombres de clave disponibles. En las bases de datos con miles o millones de elementos, se creará una enorme salida que saturará a los búferes de red.

    Si se utiliza un patrón de búsqueda, solo las claves que coincidan con el patrón volverán al cliente. No obstante, el motor todavía barrerá todo el espacio de claves en búsqueda de dicho patrón y el tiempo para completar el comando será el mismo. 

    Una alternativa para `KEYS` es el comando `SCAN`. Vuelve a repetir el proceso sobre el espacio de claves y limita las iteraciones en un número específico de elementos, al evitar bloqueos prolongados en el motor.

    El escaneo tiene el parámetro `COUNT`, el cual se utiliza para establecer el tamaño de los bloques de iteración. El valor predeterminado es 10 (10 elementos por iteración).

    En función del número de elementos en la base de datos, los bloques de valores `COUNT` pequeños requerirán más iteraciones para completar un análisis completo, mientras que los valores más grandes mantendrán al motor ocupado durante más tiempo en cada iteración. Mientras que los valores de conteo pequeños harán `SCAN` más lento en las bases de datos de gran tamaño, los valores más elevados pueden causar los mismos problemas presentados para `KEYS`.

    Por ejemplo, ejecutar el comando `SCAN` con un valor de conteo en 10 requerirá 100 000 repeticiones en una base de datos con 1 millón de claves. Si el tiempo promedio de ida y vuelta de la red es de 0,5 milisegundos, cerca de 50 000 milisegundos (50 segundos) se utilizarán para transferir solicitudes.

    Por otro lado, si el valor de conteo fuera 100 000, se requerirá una sola iteración y solo se gastarían 0,5 ms para transferirla. Sin embargo, el motor se encontraría completamente bloqueado para otras operaciones hasta que el comando termine de analizar todo el espacio de claves. 

    Además de `KEYS`, existen otros comandos que son potencialmente dañinos si no se utilizan correctamente. Para ver una lista de todos los comandos, junto con su complejidad de tiempo correspondiente, vaya a [Valkey and Redis OSS commands](https://valkey.io/commands).

    Ejemplos de problemas posibles:
    + Scripts de Lua: Redis proporciona un intérprete de Lua incrustado, lo que permite la ejecución de scripts en el servidor. Los scripts de Lua en Valkey y Redis OSS se ejecutan en el motor y son atómicos por definición, lo que significa que, mientras se está ejecutando un script, no se permitirá la ejecución de otro comando o script. Los scripts de Lua ofrecen la posibilidad de ejecutar diferentes comandos, algoritmos de toma de decisiones, análisis de datos, entre otros, directamente en el motor. Mientras que la atomicidad de los scripts y la posibilidad de descargar la aplicación son tentadoras, los scripts deben emplearse con cuidado y para pequeñas operaciones. En ElastiCache, el tiempo de ejecución de los scripts de Lua se encuentra limitado a 5 segundos. Los scripts que no se hayan escrito en el espacio de claves se interrumpirán de manera automática después del periodo de 5 segundos. Para evitar la corrupción de datos y las inconsistencias, el nodo realizará una conmutación por error si la ejecución del script no se ha completado en 5 segundos y ha tenido alguna escritura durante su ejecución. Las [transacciones](https://valkey.io/topics/transactions) son la alternativa para garantizar la coherencia de varias modificaciones de claves del mismo grupo en Redis OSS. Una transacción permite la ejecución de un bloque de comandos al observar las claves existentes en busca de modificaciones. Si alguna de las claves observadas cambia antes de la finalización de la transacción, se descartan todas las modificaciones.
    + Eliminación masiva de elementos: el comando `DEL` acepta varios parámetros, los cuales son los nombres clave que se eliminarán. Las operaciones de eliminación son síncronas y llevarán mucho tiempo de CPU si la lista de parámetros es grande, o si contiene una lista, un conjunto, un conjunto ordenado o un hash grandes (estructuras de datos que contienen varios subelementos). En otras palabras, incluso la eliminación de una sola clave puede tomar un tiempo considerable si tiene muchos elementos. La alternativa a `DEL` es `UNLINK`, que es un comando asíncrono disponible desde Redis OSS 4. Se debe preferir `UNLINK` a `DEL` siempre que sea posible. A partir de ElastiCache para Redis OSS 6x, el parámetro `lazyfree-lazy-user-del` hace que el comando `DEL` se comporte como `UNLINK` cuando se habilita. Para obtener más información, consulte [Redis OSS 6.0 Parameter Changes](ParameterGroups.Engine.md#ParameterGroups.Redis.6-x). 
    + Comandos que actúan sobre varias claves: se mencionó el comando `DEL` como un comando que acepta varios argumentos y su tiempo de ejecución será directamente proporcional a eso. Sin embargo, Redis OSS proporciona muchos más comandos que funcionan de manera similar. Por ejemplo, los comandos `MSET` y `MGET` permiten la inserción o recuperación de varias claves de cadena a la vez. Su uso puede resultar beneficioso para reducir la latencia de la red inherente a varios comandos `SET` o `GET` individuales. Sin embargo, una lista de parámetros extensa afectará al uso de la CPU.

       Aunque el uso de la CPU por sí sola no es la causa de los problemas de conectividad, dedicar demasiado tiempo a procesar uno o varios comandos a través de varias claves puede causar interrupciones en otras solicitudes y aumentar el uso general de la CPU.

      El número y el tamaño de las claves afectarán a la complejidad del comando y, en consecuencia, al tiempo de finalización.

      Otros ejemplos de comandos que pueden actuar sobre varias claves son `HMGET`, `HMSET`, `MSETNX`, `PFCOUNT`, `PFMERGE`, `SDIFF`, `SDIFFSTORE`, `SINTER`, `SINTERSTORE`, `SUNION`, `SUNIONSTORE`, `TOUCH`, `ZDIFF`, `ZDIFFSTORE`, `ZINTER` y `ZINTERSTORE`.
    + Comandos que actúan sobre varios tipos de datos: Redis OSS también proporciona comandos que actúan sobre una o varias claves, independientemente de su tipo de datos. ElastiCache para Redis OSS proporciona la métrica `KeyBasedCmds` para supervisar dichos comandos. Esta métrica suma la ejecución de los siguientes comandos en el periodo seleccionado:
      + Complejidad O(N):
        + `KEYS`
      + O(1)
        + `EXISTS`
        + `OBJECT`
        + `PTTL`
        + `RANDOMKEY`
        + `TTL`
        + `TYPE`
        + `EXPIRE`
        + `EXPIREAT`
        + `MOVE`
        + `PERSIST`
        + `PEXPIRE`
        + `PEXPIREAT`
        + `UNLINK (O(N)` para recuperar la memoria. No obstante, la tarea de recuperación de memoria ocurre en un subproceso aparte y no bloquea el motor.
      + Tiempos de complejidad diferentes según el tipo de datos:
        + `DEL`
        + `DUMP`
        + Se estima que el comando `RENAME` tiene una complejidad O(1), pero ejecuta `DEL` internamente. El tiempo de ejecución variará en función del tamaño de la clave que ha sido renombrada.
        + `RENAMENX`
        + `RESTORE`
        + `SORT`
      + Hash de gran tamaño: un hash es un tipo de datos que permite una sola clave con varios subelementos de valor de clave. Cada hash puede almacenar 4 294 967 295 elementos y las operaciones en hash grandes pueden volverse costosas. Del mismo modo que `KEYS`, los hashes tienen el comando `HKEYS` con una complejidad de tiempo O(N), siendo N el número de elementos en el hash. Se recomienda emplear `HSCAN` antes que `HKEYS` para evitar comandos de larga ejecución. Los comandos `HDEL`, `HGETALL`, `HMGET`, `HMSET` y `HVALS` se deben utilizar con precaución en hashes grandes.
    + Otras estructuras de big data: además de los hashes, existen otras estructuras de datos que pueden ser pesadas para la CPU. Los conjuntos, las listas, los conjuntos ordenados y los Hyperloglogs también pueden demorar en gestionarse en función del tamaño y de los comandos utilizados. Para obtener más información sobre esos comandos, consulte [Valkey and Redis OSS commands](https://valkey.io/commands).

## Validación de la conectividad de red
<a name="Connectivity"></a>

Luego de revisar las configuraciones de red relacionadas con la resolución de DNS, los grupos de seguridad, las ACL de red y las tablas de enrutamiento, la conectividad se puede validar con el VPC Reachability Analyzer y las herramientas del sistema.

Reachability Analyzer probará la conectividad de red y confirmará si se cumplen todos los requisitos y permisos. Para las siguientes pruebas necesitará el ID de ENI (Identificación de interfaz de red elástica) de uno de los nodos de ElastiCache disponibles en la VPC. Para ello, puede realizar lo siguiente:

1. Diríjase a [https://console.aws.amazon.com/ec2/v2/home?\$1NIC:](https://console.aws.amazon.com/ec2/v2/home?#NIC)

1. Filtre la lista de interfaces por el nombre del clúster de ElastiCache o por la dirección IP obtenida de las validaciones de DNS.

1. Anote o guarde el ID de ENI. Si se muestran varias interfaces, revise la descripción para confirmar que pertenecen al clúster de ElastiCache correcto y elija una de ellas.

1. Continúe con el siguiente paso.

1. Cree una ruta de análisis en [https://console.aws.amazon.com/vpc/home?\$1ReachabilityAnalyzer](https://console.aws.amazon.com/vpc/home?#ReachabilityAnalyzer) y elija las siguientes opciones:
   + **Tipo de fuente**: elija **instance** (instancia) si su cliente de ElastiCache se ejecuta en una instancia de Amazon EC2 o **Network Interface** (Interfaz de red) si utiliza otro servicio, tal como AWS Fargate Amazon ECS con la red awsvpc, AWS Lambda, etc. y el ID de recurso correspondiente (instancia EC2 o ID de ENI);
   + **Tipo de destino**: elija **Network Interface** (Interfaz de red) y seleccione la **ElastiCache ENI** (ENI de ElastiCache) de la lista.
   + **Puerto de destino**: especifique 6379 para ElastiCache para Redis o 11211 para ElastiCache para Memcached. Estos son los puertos definidos con la configuración predeterminada y en este ejemplo se supone que no se modifican.
   + **Protocolo**: TCP

Cree la ruta de análisis y espere unos momentos para obtener el resultado. Si no se puede acceder al estado, abra los detalles del análisis y revise el **Explorador de análisis** para conocer los detalles en los que se bloquearon las solicitudes.

Si se han superado las pruebas de accesibilidad, proceda a la verificación a nivel del sistema operativo.

Validación de la conectividad de TCP en el puerto de servicios de ElastiCache: en Amazon Linux, `Nping` se encuentra disponible en el paquete `nmap` y puede probar la conectividad de TCP en el puerto de ElastiCache, así como proporcionar el tiempo de ida y vuelta de la red para establecer la conexión. Utilice esta opción para validar la conectividad de red y la latencia actual al clúster de ElastiCache, como se muestra a continuación: 

```
$ sudo nping --tcp -p 6379 example.xxxxxx.ng.0001.use1.cache.amazonaws.com

Starting Nping 0.6.40 ( http://nmap.org/nping ) at 2020-12-30 16:48 UTC
SENT (0.0495s) TCP ...
(Output suppressed )

Max rtt: 0.937ms | Min rtt: 0.318ms | Avg rtt: 0.449ms
Raw packets sent: 5 (200B) | Rcvd: 5 (220B) | Lost: 0 (0.00%)
Nping done: 1 IP address pinged in 4.08 seconds
```

De forma predeterminada, `nping` envía 5 sondas con un retraso de 1 segundo entre ellas. Puede utilizar la opción “-c” para aumentar el número de sondas y “-delay” a fin de cambiar el tiempo en que se envía una prueba nueva. 

Si las pruebas con el *VPC Reachability Analyzer* funcionan, pero fracasan con `nping`, pida al administrador del sistema que revise las reglas de firewall basadas en host, las reglas de enrutamiento asimétrico o cualquier otra restricción posible a nivel de sistema operativo.

En la consola de ElastiCache, verifique si el **Cifrado en tránsito** se encuentra habilitado en los detalles del clúster de ElastiCache. Si el cifrado en tránsito se encuentra habilitado, confirme si la sesión de TLS se puede establecer con el siguiente comando:

```
openssl s_client -connect example.xxxxxx.use1.cache.amazonaws.com:6379
```

Se espera un gran resultado si la conexión y la negociación de TLS son exitosas. Verifique el código de retorno que se encuentra disponible en la última línea, el valor debe ser `0 (ok)`. Si OpenSSL devuelve algo diferente, verifique el motivo del error en [https://www.openssl.org/docs/man1.0.2/man1/verify.html\$1DIAGNOSTICS](https://www.openssl.org/docs/man1.0.2/man1/verify.html#DIAGNOSTICS).

Si se han superado todas las pruebas de infraestructura y de sistema operativo pero la aplicación sigue sin poder conectarse a ElastiCache, verifique si las configuraciones de la aplicación cumplen con la configuración de ElastiCache. Los errores frecuentes son:
+ La aplicación no admite el modo clúster de ElastiCache y ElastiCache tiene el modo de clúster habilitado.
+ La aplicación no es compatible con TLS/SSL y ElastiCache tiene el cifrado en tránsito habilitado. 
+ La aplicación es compatible con TLS/SSL, pero no tiene los indicadores de configuración correctos ni las entidades de certificación de confianza. 

## Límites relacionados con la red
<a name="Network-limits"></a>
+ Número máximo de conexiones: hay límites estrictos para conexiones simultáneas. Cada nodo de ElastiCache permite hasta 65 000 conexiones simultáneas en todos los clientes. Este límite se puede monitorear a través de las métricas `CurrConnections` en CloudWatch. Sin embargo, los clientes también tienen sus límites para las conexiones de salida. En Linux, verifique el rango de puertos efímeros permitido con el comando:

  ```
  # sysctl net.ipv4.ip_local_port_range
  net.ipv4.ip_local_port_range = 32768 60999
  ```

  En el ejemplo anterior, se permitirán 28231 conexiones desde la misma fuente a la misma dirección IP de destino (nodo de ElastiCache) y puerto. El siguiente comando muestra cuántas conexiones existen para un nodo de ElastiCache concreto (IP 1.2.3.4):

  ```
  ss --numeric --tcp state connected "dst 1.2.3.4 and dport == 6379" | grep -vE '^State' | wc -l
  ```

  Si el número es demasiado alto, es posible que el sistema se sobrecargue al intentar procesar las solicitudes de conexión. Se recomienda considerar la implementación de técnicas tales como la agrupación de conexiones o conexiones persistentes para controlar las conexiones con mayor facilidad. Siempre que sea posible, configure el grupo de conexiones para limitar el número máximo de conexiones a unos pocos cientos. Además, se recomienda seguir la lógica del retardo para controlar los tiempos de espera u otras excepciones de conexión a fin de evitar la pérdida de conexión en caso de problemas.
+ Límites de tráfico de red: verifique las siguientes [métricas de CloudWatch para Redis OSS](CacheMetrics.Redis.md) con el objetivo de identificar los posibles límites de la red que ha alcanzado el nodo de ElastiCache:
  + `NetworkBandwidthInAllowanceExceeded`/`NetworkBandwidthOutAllowanceExceeded`: paquetes de red configurados porque el rendimiento superó el límite de banda ancha agregado.

    Es importante tener en cuenta que cada byte escrito en el nodo primario se replicará en N réplicas, siendo N el número de réplicas. Es posible que los clústeres con tipos de nodos pequeños, varias réplicas y solicitudes de escritura intensivas no puedan afrontar al retraso de la reproducción. En estos casos, es una práctica recomendada escalar verticalmente (cambiar el tipo de nodo), escalar horizontalmente (agregar particiones en clústeres en modo de clúster habilitado) y disminuir el número de réplicas o el de escrituras.
  + `NetworkConntrackAllowanceExceeded`: paquetes configurados porque se ha superado el número máximo de conexiones rastreadas en todos los grupos de seguridad asignados al nodo. Es probable que las conexiones nuevas fallen durante este periodo.
  + `NetworkPackets PerSecondAllowanceExceeded`: se ha superado el número máximo de paquetes por segundo. Las cargas de trabajo basadas en una alta tasa de solicitudes muy pequeñas pueden alcanzar este límite antes de la banda ancha máxima.

  Las métricas mencionadas son una manera ideal de confirmar que los nodos alcanzan sus límites de red. No obstante, los límites también son identificables por periodos de estancamiento en las métricas de la red.

  Si dichos periodos se observan durante largos plazos de tiempo, es probable que se produzca un retraso en la reproducción, un aumento de los bytes utilizados para caché y un deterioro en la memoria que se puede liberar, en el intercambio alto y en el uso de la CPU. Las instancias de Amazon EC2 también tienen límites de red a los que se puede realizar un seguimiento mediante las [Métricas de los controladores de ENA](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-network-performance-ena.html). Las instancias de Linux con compatibilidad de red mejorada y los controladores de ENA 2.2.10, o más recientes, pueden controlar los contadores de límites con el comando:

  ```
  # ethtool -S eth0 | grep "allowance_exceeded"
  ```

## Uso de la CPU
<a name="CPU-Usage"></a>

La métrica de uso de la CPU es el punto de partida de la investigación y los siguientes elementos pueden ayudar a mermar los posibles problemas en el lado de ElastiCache:
+ Registros lentos de Redis OSS: la configuración predeterminada de ElastiCache retiene los últimos 128 comandos que tardaron más de 10 milisegundos en completarse. El historial de comandos lentos se mantiene durante el tiempo de ejecución del motor y se perderá en caso de interrupción o de reinicio. Si la lista alcanza 128 entradas, los eventos antiguos se eliminarán para crear espacio para otros nuevos. El tamaño de la lista de eventos lentos y el tiempo de ejecución que se considera lento puede modificarse a través de los parámetros `slowlog-max-len` y `slowlog-log-slower-than` en un [grupo de parámetros personalizados](ParameterGroups.md). La lista de registros lentos se puede recuperar al ejecutar `SLOWLOG GET 128` en el motor, siendo 128 los últimos 128 comandos lentos informados. Cada entrada cuenta con los siguientes campos:

  ```
  1) 1) (integer) 1 -----------> Sequential ID
     2) (integer) 1609010767 --> Timestamp (Unix epoch time)of the Event
     3) (integer) 4823378 -----> Time in microseconds to complete the command.
     4) 1) "keys" -------------> Command
        2) "*" ----------------> Arguments 
     5) "1.2.3.4:57004"-> Source
  ```

  El evento anterior ocurrió el 26 de diciembre, a las 19:26:07 UTC, tardó 4,8 segundos (4823 ms) en completarse y fue causado por el comando `KEYS` solicitado desde el cliente 1.2.3.4.

  En Linux, la marca de tiempo puede convertirse con la fecha del comando:

  ```
  $ date --date='@1609010767'
  Sat Dec 26 19:26:07 UTC 2020
  ```

  Con Python:

  ```
  >>> from datetime import datetime
  >>> datetime.fromtimestamp(1609010767)
  datetime.datetime(2020, 12, 26, 19, 26, 7)
  ```

  O en Windows con PowerShell:

  ```
  PS D:\Users\user> [datetimeoffset]::FromUnixTimeSeconds('1609010767')
  DateTime      : 12/26/2020 7:26:07 PM
  UtcDateTime  
                  : 12/26/2020 7:26:07 PM
  LocalDateTime : 12/26/2020 2:26:07 PM
  Date          : 12/26/2020 12:00:00 AM
  Day           : 26
  DayOfWeek    
                  : Saturday
  DayOfYear     : 361
  Hour          : 19
  Millisecond   : 0
  Minute        : 26
  Month        
                  : 12
  Offset        : 00:00:00Ticks         : 637446075670000000
  UtcTicks     
                  : 637446075670000000
  TimeOfDay     : 19:26:07
  Year          : 2020
  ```

  Muchos comandos lentos en un corto periodo de tiempo (el mismo minuto o menos) son motivo de preocupación. Revise la naturaleza de los comandos y cómo se pueden optimizar (consulte los ejemplos anteriores). Si los comandos con complejidad de tiempo O(1) son frecuentes, verifique los demás factores para el elevado uso de la CPU mencionado anteriormente.
+ Métricas de latencia: ElastiCache para Redis OSS proporciona métricas de CloudWatch para supervisar la latencia media de diferentes clases de comandos. El punto de datos se calcula al dividir el número total de ejecuciones de comandos en la categoría por el tiempo total de ejecución en el periodo. Es importante entender que los resultados de la métrica de latencia son un agregado de varios comandos. Un solo comando puede provocar resultados inesperados, como tiempos de espera, sin un impacto significativo en las métricas. En tales casos, los eventos de registro lento serían una fuente de información más precisa. La siguiente lista contiene las métricas de latencia disponibles y los comandos respectivos que les afectan.
  + EvalBasedCmdsLatency: relacionada con los comandos de lenguaje de scripting Lua, `eval`, `evalsha`;
  + GeoSpatialBasedCmdsLatency: `geodist`, `geohash`, `geopos`, `georadius`, `georadiusbymember`, `geoadd`;
  + GetTypeCmdsLatency: comandos de lectura, independientemente del tipo de datos;
  + HashBasedCmdsLatency: `hexists`, `hget`, `hgetall`, `hkeys`, `hlen`, `hmget`, `hvals`, `hstrlen`, `hdel`, `hincrby`, `hincrbyfloat`, `hmset`, `hset`, `hsetnx`;
  + HyperLogLogBasedCmdsLatency: `pfselftest`, `pfcount`, `pfdebug`, `pfadd`, `pfmerge`;
  + KeyBasedCmdsLatency: comandos que pueden actuar sobre diferentes tipos de datos: `dump`, `exists`, `keys`, `object`, `pttl`, `randomkey`, `ttl`, `type`, `del`, `expire`, `expireat`, `move`, `persist`, `pexpire`, `pexpireat`, `rename`, `renamenx`, `restoreK`, `sort`, `unlink`;
  + ListBasedCmdsLatency: lindex, llen, lrange, blpop, brpop, brpoplpush, linsert, lpop, lpush, lpushx, lrem, lset, ltrim, rpop, rpoplpush, rpush, rpushx; 
  + PubSubBasedCmdsLatency: psubscribe, publish, pubsub, punsubscribe, subscribe, unsubscribe; 
  + SetBasedCmdsLatency: `scard`, `sdiff`, `sinter`, `sismember`, `smembers`, `srandmember`, `sunion`, `sadd`, `sdiffstore`, `sinterstore`, `smove`, `spop`, `srem`, `sunionstore`; 
  + SetTypeCmdsLatency: comandos de escritura, independientemente del tipo de datos;
  + SortedSetBasedCmdsLatency: `zcard`, `zcount`, `zrange`, `zrangebyscore`, `zrank`, `zrevrange`, `zrevrangebyscore`, `zrevrank`, `zscore`, `zrangebylex`, `zrevrangebylex`, `zlexcount`, `zadd`. `zincrby`, `zinterstore`, `zrem`, `zremrangebyrank`, `zremrangebyscore`, `zunionstore`, `zremrangebylex`, `zpopmax`, `zpopmin`, `bzpopmin`, `bzpopmax`; 
  + StringBasedCmdsLatency: `bitcount`, `get`, `getbit`, `getrange`, `mget`, `strlen`, `substr`, `bitpos`, `append`, `bitop`, `bitfield`, `decr`, `decrby`, `getset`, `incr`, `incrby`, `incrbyfloat`, `mset`, `msetnx`, `psetex`, `set`, `setbit`, `setex`, `setnx`, `setrange`; 
  + StreamBasedCmdsLatency: `xrange`, `xrevrange`, `xlen`, `xread`, `xpending`, `xinfo`, `xadd`, `xgroup`, `readgroup`, `xack`, `xclaim`, `xdel`, `xtrim`, `xsetid`; 
+ Comandos de tiempo de ejecución de Redis OSS: 
  + info commandstats: proporciona una lista de comandos ejecutados desde que se inició el motor, el número de ejecuciones acumuladas, el tiempo total de ejecución y el tiempo promedio de ejecución por comando.
  + client list: proporciona una lista de clientes conectados actualmente e información relevante como el uso de los búferes, el último comando ejecutado, entre otros.
+ Copia de seguridad y replicación: las versiones de ElastiCache para Redis OSS anteriores a la 2.8.22 utilizan un proceso bifurcado para crear copias de seguridad y procesar sincronizaciones completas con las réplicas. Este método puede incurrir en una sobrecarga significativa de la memoria para casos de uso intensivos de escritura.

  A partir de ElastiCache Redis OSS 2.8.22, AWS introdujo un método de copia de seguridad y de replicación sin ramificaciones. El método nuevo puede retrasar las escrituras a fin de evitar errores. Ambos métodos pueden causar periodos de mayor uso de la CPU y dar lugar a tiempos de respuesta más altos, lo que, en consecuencia, conlleva a tiempos de espera del cliente durante su ejecución. Siempre verifique si los errores del cliente se producen durante el periodo de copia de seguridad o si la métrica `SaveInProgress` fue 1 en el periodo. Se aconseja programar el periodo de copia de seguridad para periodos de baja utilización con el objetivo de minimizar los posibles problemas con los clientes o los errores de la copia de seguridad.

## Conexiones que terminan desde el lado del servidor
<a name="Connections-server"></a>

La configuración predeterminada de ElastiCache para Redis OSS mantiene las conexiones de cliente establecidas por tiempo indefinido. Sin embargo, en algunos casos, la interrupción de la conexión puede ser deseable. Por ejemplo:
+ Los errores en la aplicación cliente pueden hacer que se olviden las conexiones y que se mantengan establecidas con un estado inactivo. Esto se denomina “fuga de conexión”. Su consecuencia es un aumento constante en el número de conexiones establecidas que se observaron en la métrica `CurrConnections`. Este comportamiento puede generar una saturación en el lado cliente o en el de ElastiCache. Cuando no se puede encontrar una solución inmediata desde el lado del cliente, algunos administradores establecen un valor de “tiempo de espera” en su grupo de parámetros de ElastiCache. El tiempo de espera es el tiempo permitido (medido en segundos) para que las conexiones inactivas persistan. Si el cliente no envía una solicitud durante el periodo, el motor terminará la conexión tan pronto como alcance el valor de tiempo de espera. Los valores de tiempo de espera pequeños pueden dar lugar a desconexiones innecesarias de manera que los clientes necesitarán ocuparse correctamente de ellas y volver a conectarse, lo que genera retrasos.
+ La memoria empleada para almacenar claves se comparte con los búferes del cliente. Los clientes lentos con grandes solicitudes o respuestas pueden exigir una cantidad significativa de memoria para operar sus búferes. Las configuraciones predeterminadas de ElastiCache para Redis OSS no restringen el tamaño de los búferes de salida frecuentes del cliente. Si se alcanza el límite de `maxmemory`, el motor intentará expulsar elementos para cumplir con el uso del búfer. En condiciones de memoria extremadamente baja, ElastiCache para Redis OSS puede optar por desconectar clientes que consumen búferes de salida de clientes grandes a fin de liberar memoria y retener el estado del clúster. 

  Se puede limitar el tamaño de los búferes de cliente mediante configuraciones personalizadas por lo que cuando un cliente alcance ese límite se desconectará. No obstante, los clientes deben ser capaces de resolver desconexiones inesperadas. Los parámetros para manejar el tamaño de los búferes para los clientes regulares son los siguientes:
  + client-query-buffer-limit: tamaño máximo de una sola solicitud de entrada;
  + client-output-buffer-limit-normal-soft-limit: límite bajo para las conexiones de cliente. La conexión se interrumpirá si permanece por encima del límite bajo durante más tiempo que el tiempo en segundos definido en client-output-buffer-limit-normal-soft-seconds o si alcanza el límite alto;
  + client-output-buffer-limit-normal-soft-seconds: tiempo permitido para las conexiones que superan el client-output-buffer-limit-normal-soft-limit; 
  + client-output-buffer-limit-normal-hard-limit: una conexión que alcance este límite se interrumpirá de inmediato.

  Además de los búferes de los clientes frecuentes, las siguientes opciones controlan el búfer para los nodos de réplica y los clientes de publicación/suscripción:
  + client-output-buffer-limit-replica-hard-limit;
  + client-output-buffer-limit-replica-soft-seconds;
  + client-output-buffer-limit-replica-hard-limit;
  + client-output-buffer-limit-pubsub-soft-limit;
  + client-output-buffer-limit-pubsub-soft-seconds;
  + client-output-buffer-limit-pubsub-hard-limit;

## Solución de problemas del lado del cliente para instancias de Amazon EC2
<a name="Connections-client"></a>

La carga y la capacidad de respuesta en el lado del cliente también pueden afectar a las solicitudes a ElastiCache. Los límites de la instancia EC2 y del sistema operativo deben revisarse con cuidado mientras se solucionan problemas de conectividad intermitente o de tiempo de espera. Algunos puntos clave a observar:
+ CPU: 
  + El uso de la CPU de la instancia EC2: asegúrese de que la CPU no se encuentre saturada o cerca del 100 %. El análisis histórico se puede realizar a través de CloudWatch, sin embargo, tenga en cuenta que la granularidad de los puntos de datos es de 1 minuto (con el monitoreo detallado habilitado) o de 5 minutos.
  + Si utiliza [instancias EC2 ampliables](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html), asegúrese de que no se haya agotado el saldo de crédito de la CPU. Esta información se encuentra disponible en la métrica de CloudWatch `CPUCreditBalance`.
  + Los periodos cortos de uso elevado de la CPU pueden generar tiempos de espera que no repercuten en su uso total en CloudWatch. Estos casos requieren un monitoreo en tiempo real con herramientas de sistema operativo como `top`, `ps` y `mpstat`.
+ Network
  + Verifique si el rendimiento de la red se encuentra por debajo de los valores aceptables de acuerdo con las capacidades de la instancia. Para obtener más información, consulte [Tipos de instancia de Amazon EC2](https://aws.amazon.com/ec2/instance-types/)
  + En instancias que dispongan de un controlador de red mejorado `ena`, verifique las [estadísticas de ENA](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/troubleshooting-ena.html#statistics-ena) para los tiempos de espera o los límites excedidos. Las siguientes estadísticas son útiles para confirmar la saturación de los límites de red:
    + `bw_in_allowance_exceeded`/`bw_out_allowance_exceeded`: número de paquetes moldeados debido a un rendimiento excesivo de entrada o de salida;
    + `conntrack_allowance_exceeded`: número de paquetes descartados debido a los [límites de seguimiento de conexiones](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-connection-tracking.html#connection-tracking-throttling) de los grupos de seguridad. Las conexiones nuevas fallarán cuando este límite se encuentre saturado.
    + `linklocal_allowance_exceeded`: número de paquetes descartados debido a solicitudes excesivas de metadatos de instancia, NTP a través de DNS de la VPC El límite es de 1024 paquetes por segundo para todos los servicios.
    + `pps_allowance_exceeded`: número de paquetes descartados debido a una proporción excesiva de paquetes por segundo. Se puede alcanzar el límite de PPS cuando el tráfico de red consiste en miles o millones de solicitudes muy pequeñas por segundo. El tráfico de ElastiCache se puede optimizar para aprovechar los paquetes de red a través de canalizaciones o comandos que realizan varias operaciones a la vez tal como `MGET` en lugar de `GET`.

## Análisis del tiempo que se tarda en completar una sola solicitud
<a name="Dissecting-time"></a>
+ En la red: `Tcpdump` y `Wireshark` (tshark en la línea de comandos) son herramientas útiles para comprender cuánto tiempo se tomó la solicitud en viajar por la red, en alcanzar al motor de ElastiCache y en regresar. En el próximo ejemplo se resalta una sola solicitud que se creó con el siguiente comando: 

  ```
  $ echo ping | nc example.xxxxxx.ng.0001.use1.cache.amazonaws.com 6379
  +PONG
  ```

  Del mismo modo que el comando anterior, tcpdump se encontraba en ejecución y volvió:

  ```
  $ sudo tcpdump -i any -nn port 6379 -tt
  tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
  listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
  1609428918.917869 IP 172.31.11.142.40966
      > 172.31.11.247.6379: Flags [S], seq 177032944, win 26883, options [mss 8961,sackOK,TS val 27819440 ecr 0,nop,wscale 7], length 0
  1609428918.918071 IP 172.31.11.247.6379 > 172.31.11.142.40966: Flags [S.], seq 53962565, ack 177032945, win
      28960, options [mss 1460,sackOK,TS val 3788576332 ecr 27819440,nop,wscale 7], length 0
  1609428918.918091 IP 172.31.11.142.40966 > 172.31.11.247.6379: Flags [.], ack 1, win 211, options [nop,nop,TS val 27819440 ecr 3788576332], length 0
  1609428918.918122
      IP 172.31.11.142.40966 > 172.31.11.247.6379: Flags [P.], seq 1:6, ack 1, win 211, options [nop,nop,TS val 27819440 ecr 3788576332], length 5: RESP "ping"
  1609428918.918132 IP 172.31.11.142.40966 > 172.31.11.247.6379: Flags [F.], seq 6, ack
      1, win 211, options [nop,nop,TS val 27819440 ecr 3788576332], length 0
  1609428918.918240 IP 172.31.11.247.6379 > 172.31.11.142.40966: Flags [.], ack 6, win 227, options [nop,nop,TS val 3788576332 ecr 27819440], length 0
  1609428918.918295
      IP 172.31.11.247.6379 > 172.31.11.142.40966: Flags [P.], seq 1:8, ack 7, win 227, options [nop,nop,TS val 3788576332 ecr 27819440], length 7: RESP "PONG"
  1609428918.918300 IP 172.31.11.142.40966 > 172.31.11.247.6379: Flags [.], ack 8, win
      211, options [nop,nop,TS val 27819441 ecr 3788576332], length 0
  1609428918.918302 IP 172.31.11.247.6379 > 172.31.11.142.40966: Flags [F.], seq 8, ack 7, win 227, options [nop,nop,TS val 3788576332 ecr 27819440], length 0
  1609428918.918307
      IP 172.31.11.142.40966 > 172.31.11.247.6379: Flags [.], ack 9, win 211, options [nop,nop,TS val 27819441 ecr 3788576332], length 0
  ^C
  10 packets captured
  10 packets received by filter
  0 packets dropped by kernel
  ```

  De la salida anterior podemos confirmar que el protocolo de establecimiento de comunicación de tres canales de TCP se completó en 222 microsegundos (918091 - 917869) y el comando ping se envió y devolvió en 173 microsegundos (918295 - 918122).

   Desde la solicitud hasta la interrupción de la conexión pasaron 438 microsegundos (918307 - 917869). Esos resultados confirmarían que los tiempos de respuesta de la red y del motor son buenos por lo que la investigación puede centrarse en otros componentes.
+ En el sistema operativo: `Strace` puede ayudar a identificar brechas de tiempo a nivel de sistema operativo. El análisis de las aplicaciones reales sería mucho más extenso y se aconseja utilizar depuradores o perfiles de aplicaciones especializados. El siguiente ejemplo solo muestra si los componentes del sistema operativo base funcionan como se esperaba, de lo contrario, podría requerirse una investigación adicional. Con el mismo comando `PING` de Redis OSS con `strace` obtenemos:

  ```
  $ echo ping | strace -f -tttt -r -e trace=execve,socket,open,recvfrom,sendto nc example.xxxxxx.ng.0001.use1.cache.amazonaws.com (http://example.xxxxxx.ng.0001.use1.cache.amazonaws.com/)
      6379
  1609430221.697712 (+ 0.000000) execve("/usr/bin/nc", ["nc", "example.xxxxxx.ng.0001.use"..., "6379"], 0x7fffede7cc38 /* 22 vars */) = 0
  1609430221.708955 (+ 0.011231) socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
  1609430221.709084
      (+ 0.000124) socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
  1609430221.709258 (+ 0.000173) open("/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 3
  1609430221.709637 (+ 0.000378) open("/etc/host.conf", O_RDONLY|O_CLOEXEC) = 3
  1609430221.709923
      (+ 0.000286) open("/etc/resolv.conf", O_RDONLY|O_CLOEXEC) = 3
  1609430221.711365 (+ 0.001443) open("/etc/hosts", O_RDONLY|O_CLOEXEC) = 3
  1609430221.713293 (+ 0.001928) socket(AF_INET, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, IPPROTO_IP) = 3
  1609430221.717419
      (+ 0.004126) recvfrom(3, "\362|\201\200\0\1\0\2\0\0\0\0\rnotls20201224\6tihew"..., 2048, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("172.31.0.2")}, [28->16]) = 155
  1609430221.717890 (+ 0.000469) recvfrom(3, "\204\207\201\200\0\1\0\1\0\0\0\0\rnotls20201224\6tihew"...,
      65536, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("172.31.0.2")}, [28->16]) = 139
  1609430221.745659 (+ 0.027772) socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) = 3
  1609430221.747548 (+ 0.001887) recvfrom(0, 0x7ffcf2f2ca50, 8192,
      0, 0x7ffcf2f2c9d0, [128]) = -1 ENOTSOCK (Socket operation on non-socket)
  1609430221.747858 (+ 0.000308) sendto(3, "ping\n", 5, 0, NULL, 0) = 5
  1609430221.748048 (+ 0.000188) recvfrom(0, 0x7ffcf2f2ca50, 8192, 0, 0x7ffcf2f2c9d0, [128]) = -1 ENOTSOCK
      (Socket operation on non-socket)
  1609430221.748330 (+ 0.000282) recvfrom(3, "+PONG\r\n", 8192, 0, 0x7ffcf2f2c9d0, [128->0]) = 7
  +PONG
  1609430221.748543 (+ 0.000213) recvfrom(3, "", 8192, 0, 0x7ffcf2f2c9d0, [128->0]) = 0
  1609430221.752110
      (+ 0.003569) +++ exited with 0 +++
  ```

   En el ejemplo anterior, el comando tardó un poco más de 54 milisegundos en completarse (752110 - 697712 = 54398 microsegundos).

   Se necesitó una cantidad significativa de tiempo, cerca de 20 ms, para representar a nc y realizar la resolución de nombres (de 697712 a 717890). Luego, se necesitaron 2 ms para crear el socket de TCP (745659 a 747858) y 0,4 ms (747858 a 748330) a fin de enviar y recibir la respuesta para la solicitud. 

## Temas relacionados
<a name="wwe-troubleshooting.related"></a>
+ [Procedimientos recomendados y estrategias de almacenamiento en caché de ElastiCache](BestPractices.md)