

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Gerenciamento de memória reservada para Valkey e Redis OSS
<a name="redis-memory-management"></a>

A memória reservada é a memória reservada para o uso não relacionado a dados. Ao executar um backup ou failover, o Valkey e o Redis OSS usam a memória disponível para registrar operações de gravação no seu cluster enquanto os dados do cluster estão sendo gravados no arquivo .rdb. Se você não tiver memória suficiente disponível para todas as gravações, o processo falhará. A seguir, você encontrará informações sobre opções para gerenciar memória reservada para o ElastiCache para Redis OSS e como aplicar essas opções.

**Topics**
+ [De quanta memória reservada você precisa?](#redis-memory-management-need)
+ [Parâmetros para gerenciar memória reservada](#redis-memory-management-parameters)
+ [Especificação do parâmetro de gerenciamento de memória reservada](#redis-reserved-memory-management-change)

## De quanta memória reservada você precisa?
<a name="redis-memory-management-need"></a>

Se você estiver executando uma versão do Redis OSS anterior à 2.8.22, reserve mais memória para backups e failover do que se estiver executando o Redis OSS 2.8.22 ou posterior. Este requisito é devido às diferentes maneiras como o ElastiCache para Redis OSS implementa o processo de backup. A regra geral é reservar metade do valor `maxmemory` de um tipo de nó para a sobrecarga do Redis OSS para versões anteriores à 2.8.22 e um quarto para o Redis OSS versão 2.8.22 e posterior. 

Devido às diferentes maneiras pelas quais o ElastiCache implementa o processo de backup e replicação, a regra geral é reservar 25% do valor `maxmemory` de um tipo de nó usando o parâmetro `reserved-memory-percent`. Este é o valor padrão e recomendado para a maioria dos casos.

Quando os tipos de instância micro e pequena com capacidade de intermitência estão operando perto dos limites de `maxmemory`, eles podem experimentar o uso de troca. Para melhorar a confiabilidade operacional desses tipos de instância durante o backup, a replicação e o tráfego intenso, recomendamos aumentar o valor do parâmetro `reserved-memory-percent` em até 30% nos tipos de instâncias pequenas e até 50% nos tipos de instâncias micro.

Para workloads com uso intenso de gravação em clusters do ElastiCache com classificação de dados em níveis, recomendamos aumentar `reserved-memory-percent` para até 50% da memória disponível do nó.

Para obter mais informações, consulte:
+ [Garantir que você tem memória suficiente para criar um snapshot do Valkey ou Redis OSS](BestPractices.BGSAVE.md)
+ [Como a sincronização e o backup são implementados](Replication.Redis.Versions.md)
+ [Classificação de dados em níveis no ElastiCache](data-tiering.md)

## Parâmetros para gerenciar memória reservada
<a name="redis-memory-management-parameters"></a>

Desde 16 de março de 2017, o Amazon ElastiCache fornece dois parâmetros mutuamente exclusivos para gerenciar memória do Valkey ou Redis OSS, `reserved-memory` e `reserved-memory-percent`. Nenhum desses parâmetros faz parte da distribuição do Valkey ou Redis OSS. 

Dependendo de quando você se tornou cliente do ElastiCache, um desses dois parâmetros será o parâmetro de gerenciamento de memória padrão. Esse parâmetro se aplica quando você cria um novo grupo de replicação ou cluster do Valkey ou Redis OSS e usa um grupo de parâmetros padrão. 
+ Para clientes que iniciaram antes de 16 de março de 2017, quando você criar um grupo de replicação ou cluster do Redis OSS usando o grupo de parâmetros padrão, o parâmetro de gerenciamento de memória será `reserved-memory`. Nesse caso, zero (0) bytes de memória são reservados. 
+ Para clientes que iniciaram de 16 de março de 2017 em diante, quando você criar um grupo de replicação ou cluster do Valkey ou Redis OSS usando o grupo de parâmetros padrão, o parâmetro de gerenciamento de memória será `reserved-memory-percent`. Nesse caso, 25% do valor `maxmemory` dos seus nós será reservado para fins não de dados.

Depois de ler sobre os dois parâmetros de gerenciamento de memória do Valkey ou Redis OSS, você pode preferir usar aquele que não é o padrão, ou com valores não padrão. Se esse for o caso, você poderá alterar para o outro parâmetro de gerenciamento de memória reservada. 

Para alterar o valor desse parâmetro, você pode criar um grupo de parâmetros personalizado e modificá-lo para usar o parâmetro e o valor de gerenciamento de memória preferidos. Você pode usar o grupo de parâmetros personalizado sempre que criar um novo cluster ou grupo de replicação do Valkey ou Redis OSS. Para clusters ou grupos de replicação existentes, você pode modificá-los para usar o parameter group personalizado.

 Para obter mais informações, consulte: 
+ [Especificação do parâmetro de gerenciamento de memória reservada](#redis-reserved-memory-management-change)
+ [Criação de um grupo de parâmetros do ElastiCache](ParameterGroups.Creating.md)
+ [Modificação de um grupo de parâmetros do ElastiCache](ParameterGroups.Modifying.md)
+ [Modificação de um cluster do ElastiCache](Clusters.Modify.md)
+ [Modificação de um grupo de replicação](Replication.Modify.md)

### O parâmetro reserved-memory
<a name="redis-memory-management-parameters-reserved-memory"></a>

Antes de 16 de março de 2017, todo o gerenciamento de memória reservado do ElastiCache para Redis OSS era feito com o uso do parâmetro `reserved-memory`. O valor padrão de `reserved-memory` é 0. Este padrão não reserva memória para a sobrecarga do Valkey ou Redis OSS e permite que o Valkey ou Redis OSS consuma toda a memória de um nó com dados. 

A alteração do parâmetro `reserved-memory` para que você tenha memória suficiente disponível para backups e failovers requer que você crie um parameter group personalizado. Neste grupo de parâmetros personalizado, você define `reserved-memory` como um valor apropriado para a versão do Valkey ou Redis OSS executada no seu cluster e o tipo de nó do cluster. Para obter mais informações, consulte . [De quanta memória reservada você precisa?](#redis-memory-management-need)

O parâmetro `reserved-memory` é específico do ElastiCache e não faz parte da distribuição geral do Redis OSS.

O procedimento a seguir mostra como usar `reserved-memory` para gerenciar a memória no seu cluster do Valkey ou Redis OSS.

**Para reservar memória usando reserved-memory**

1. Crie um parameter group personalizado especificando a família de parameter groups que corresponde à versão do mecanismo que você está executando, por exemplo, especificando a família de parameter groups `redis2.8`. Para obter mais informações, consulte [Criação de um grupo de parâmetros do 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 quantos bytes de memória reservar para a sobrecarga do Valkey ou Redis OSS. Você pode encontrar o valor de `maxmemory` para o seu tipo de nó em [Parâmetros específicos de node-type do Redis OSS](ParameterGroups.Engine.md#ParameterGroups.Redis.NodeSpecific).

1. Modifique o parameter group personalizado para que o parâmetro `reserved-memory` seja o número de bytes que você calculou na etapa anterior. O seguinte exemplo da AWS CLI supõe que você esteja executando uma versão do Redis OSS anterior à 2.8.22 e precisa reservar metade da `maxmemory` do nó. Para obter mais informações, consulte [Modificação de um grupo de parâmetros do ElastiCache](ParameterGroups.Modifying.md).

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

   Observe que você precisa de um grupo de parâmetros personalizado separado para cada tipo de nó utilizado, pois cada tipo de nó possui um valor de `maxmemory` diferente. Assim, cada tipo de nó precisa de um valor diferente para `reserved-memory`.

1. Modifique seu cluster ou grupo de replicação do Redis OSS para usar seu grupo de parâmetros personalizado.

   O exemplo de CLI a seguir modifica o cluster ` my-redis-cluster` para começar a usar imediatamente o parameter group `redis28-m3xl`. Para obter mais informações, consulte [Modificação de um cluster do ElastiCache](Clusters.Modify.md).

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

   O exemplo de CLI a seguir modifica o grupo de replicação `my-redis-repl-grp` para começar a usar imediatamente o parameter group `redis28-m3xl`. Para obter mais informações, [Modificação de um grupo de replicação](Replication.Modify.md).

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

### O parâmetro reserved-memory-percent
<a name="redis-memory-management-parameters-reserved-memory-percent"></a>

Em 16 de março de 2017, o Amazon ElastiCache introduziu o parâmetro `reserved-memory-percent` e o disponibilizou em todas as versões do ElastiCache para Redis OSS. O objetivo de `reserved-memory-percent` é simplificar o gerenciamento da memória reservada em todos os seus clusters. Ele faz isso permitindo que você tenha um único parameter group para cada família de parameter groups (como `redis2.8`) para gerenciar a memória reservada dos seus clusters, independentemente do tipo de nó. O valor padrão para `reserved-memory-percent` é 25 (25%).

O parâmetro `reserved-memory-percent` é específico do ElastiCache e não faz parte da distribuição geral do Redis OSS.

Se o cluster estiver usando um tipo de nó da família r6gd e o uso de memória atingir 75%, a classificação de dados em níveis será acionada automaticamente. Para obter mais informações, consulte [Classificação de dados em níveis no ElastiCache](data-tiering.md).

**Para reservar memória usando reserved-memory-percent**  
Para usar `reserved-memory-percent` para gerenciar a memória no seu cluster do ElastiCache para Redis OSS, siga um destes procedimentos:
+ Se você estiver executando o Redis OSS 2.8.22 ou posterior, atribua o grupo de parâmetros padrão ao cluster. O padrão de 25 por cento deve ser adequado. Caso contrário, siga as etapas descritas a seguir para alterar o valor.
+ Se você estiver executando uma versão do Redis OSS anterior à 2.8.22, provavelmente precisará reservar mais memória do que o padrão de 25% de `reserved-memory-percent`. Para fazer isso, use o procedimento a seguir. 

**Para alterar o valor percentual de reserved-memory-percent**

1. Crie um parameter group personalizado especificando a família de parameter groups que corresponde à versão do mecanismo que você está executando, por exemplo, especificando a família de parameter groups `redis2.8`. Um grupo de parâmetros personalizado é necessário, pois você não pode modificar um grupo de parâmetros padrão. Para obter mais informações, consulte [Criação de um grupo de parâmetros do 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}}
   ```

   Como `reserved-memory-percent` reserva a memória como uma porcentagem da `maxmemory` de um nó, você não precisa de um parameter group personalizado para cada tipo de nó.

1. Modifique o parameter group personalizado para que `reserved-memory-percent` seja 50 (50%). Para obter mais informações, consulte [Modificação de um grupo de parâmetros do 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 esse grupo de parâmetros personalizado para qualquer cluster ou grupo de replicação do Redis OSS que esteja executando uma versão do Redis OSS anterior à 2.8.22.

   O exemplo da CLI a seguir modifica o cluster do Redis OSS `my-redis-cluster` para começar a usar imediatamente o grupo de parâmetros `redis28-50`. Para obter mais informações, consulte [Modificação de um cluster do ElastiCache](Clusters.Modify.md).

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

   O exemplo da CLI a seguir modifica o grupo de replicação do Redis OSS `my-redis-repl-grp` para começar a usar imediatamente o grupo de parâmetros `redis28-50`. Para obter mais informações, consulte [Modificação de um grupo de replicação](Replication.Modify.md).

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

## Especificação do parâmetro de gerenciamento de memória reservada
<a name="redis-reserved-memory-management-change"></a>

Se você já era cliente ativo do ElastiCache em 16 de março de 2017, seu parâmetro de gerenciamento de memória reservada padrão é `reserved-memory` com zero (0) byte de memória reservada. Se você se tornou cliente do ElastiCache depois de 16 de março de 2017, seu parâmetro de gerenciamento de memória reservada padrão é `reserved-memory-percent`, com 25 por cento da memória do nó reservada. Isso se aplica sempre que você cria um cluster ou grupo de replicação do ElastiCache para Redis OSS. Entretanto, você pode alterar seu parâmetro de gerenciamento de memória reservada usando a AWS CLI ou a API do ElastiCache.

Os parâmetros `reserved-memory` e `reserved-memory-percent` são mutuamente exclusivos. Um grupo de parâmetros sempre terá um, mas nunca os dois. Você pode alterar o parâmetro usado por um parameter group para o gerenciamento da memória reservada, modificando o parameter group. O grupo de parâmetros deve ser personalizado, pois não é possível modificar grupos de parâmetros padrão. Para obter mais informações, consulte [Criação de um grupo de parâmetros do ElastiCache](ParameterGroups.Creating.md).

**Para especificar reserved-memory-percent**  
Para usar `reserved-memory-percent` como o parâmetro de gerenciamento de memória reservada, modifique um grupo de parâmetros usando o comando `modify-cache-parameter-group`. Use o parâmetro `parameter-name-values` para especificar `reserved-memory-percent` e um valor para ele.

O seguinte exemplo de CLI modifica o parameter group personalizado `redis32-cluster-on` para que ele use `reserved-memory-percent` para gerenciar a memória reservada. Um valor deve ser atribuído a `ParameterValue` para que o grupo de parâmetros use o parâmetro `ParameterName` para gerenciamento de memória reservada. Para obter mais informações, consulte [Modificação de um grupo de parâmetros do 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 usar `reserved-memory` como o parâmetro de gerenciamento de memória reservada, modifique um grupo de parâmetros usando o comando `modify-cache-parameter-group`. Use o parâmetro `parameter-name-values` para especificar `reserved-memory` e um valor para ele.

O seguinte exemplo de CLI modifica o parameter group personalizado `redis32-m3xl` para que ele use `reserved-memory` para gerenciar a memória reservada. Um valor deve ser atribuído a `ParameterValue` para que o grupo de parâmetros use o parâmetro `ParameterName` para gerenciamento de memória reservada. Como a versão do mecanismo é mais recente do que 2.8.22, definimos o valor como `3565158400`, que equivale a 25% da `cache.m3.xlarge` de um `maxmemory`. Para obter mais informações, consulte [Modificação de um grupo de parâmetros do ElastiCache](ParameterGroups.Modifying.md).

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