Gerenciamento de memória

Política de remoção

Escolha uma política de remoção que funcione para o seu aplicativo. A política padrão para o Cache do Azure para Redis é volatile-lru, o que significa que somente as chaves com um valor de TTL definido com um comando como EXPIRE são elegíveis para remoção. Se não houver chaves com valor TTL, o sistema não removerá nenhuma delas. Se você quiser que o sistema permita a remoção de qualquer chave caso esteja sob pressão de memória, convém considerar a política allkeys-lru.

Expiração de chaves

Defina um valor de expiração nas suas chaves. A expiração remove chaves proativamente, sem aguardar que haja pressão de memória. Quando a remoção é acionada devido à pressão de memória, isso pode aumentar a carga no servidor. Para mais informações, consulte a documentação sobre os comandos EXPIRE e EXPIREAT.

Minimizar a fragmentação de memória

Valores grandes podem deixar a memória fragmentada na remoção e podem levar ao alto uso de memória e à carga do servidor.

Monitorar o uso de memória

Adicione monitoramento sobre o uso de memória para garantir que você não fique sem memória e tenha a chance de dimensionar o cache antecipadamente aos problemas.

Definir sua configuração de maxmemory-reserved

Defina sua configuração de maxmemory-reserved para melhorar a capacidade de resposta do sistema:

  • Uma configuração de reserva suficiente é especialmente importante no caso de cargas pesadas de gravação ou de armazenamento de valores de 100 KB ou mais no cache. Por padrão, quando você cria um cache, são reservados aproximadamente 10% da memória disponível para maxmemory-reserved. Outros 10% são reservados para maxfragmentationmemory-reserved. Você poderá aumentar a quantidade reservada se tiver cargas com uso intensivo de gravação.

  • A configuração maxmemory-reserved define a quantidade de memória, em MB por instância em um cluster, reservada para operações que não são de cache, como replicação durante o failover. Definir esse valor permite que você tenha uma experiência mais consistente do servidor Redis quando sua carga varia. Esse valor deve ser definido como maior para cargas de trabalho que gravam grandes quantidades de dados. Quando a memória é reservada para essas operações, ela não fica disponível para o armazenamento de dados armazenados em cache. O intervalo permitido para maxmemory-reserved é de 10%-60% de maxmemory. Se você tentar definir esses valores com menos de 10% ou mais de 60%, eles serão reavaliados e definidos como 10% (mínimo) e 60% (máximo). Os valores são renderizados em megabytes.

  • A configuração maxfragmentationmemory-reserved define a quantidade de memória, em MB por instância em um cluster, reservada para acomodar a fragmentação de memória. Quando você define esse valor, a experiência do servidor Redis fica mais consistente quando o cache está cheio ou quase cheio e a taxa de fragmentação é alta. Quando a memória é reservada para essas operações, ela não fica disponível para o armazenamento de dados armazenados em cache. O intervalo permitido para maxfragmentationmemory-reserved é de 10%-60% de maxmemory. Se você tentar definir esses valores com menos de 10% ou mais de 60%, eles serão reavaliados e definidos como 10% (mínimo) e 60% (máximo). Os valores são renderizados em megabytes.

  • Um aspecto a ser considerado ao escolher um novo valor de reserva de memória (maxmemory-reserved ou maxfragmentationmemory-reserved) é como essa alteração pode afetar um cache com grandes volumes de dados que já está em execução. Por exemplo, se você tem um cache de 53 GB com 49 GB de dados, altere o valor de reserva para 8 GB para a memória máxima disponível do sistema cair para 45 GB. Se os valores used_memory ou used_memory_rss atuais forem maiores que o novo limite de 45 GB, o sistema precisará remover os dados até que used_memory e used_memory_rss fiquem abaixo de 45 GB. A remoção pode aumentar a fragmentação de memória e carregamento do servidor. Para obter mais informações sobre as métricas de cache, como used_memory e used_memory_rss, confira Criar suas próprias métricas.

Observação

Quando você escala ou reduz verticalmente um cache, as configurações maxmemory-reserved e maxfragmentationmemory-reserved são dimensionadas automaticamente em proporção ao tamanho do cache. Por exemplo, maxmemory-reserved se for definido como 3 GB em um cache de 6 GB e você dimensionar para um cache de 12 GB, as configurações serão atualizadas automaticamente para 6 GB durante o dimensionamento. Quando você reduz verticalmente, o inverso acontece. Quando você aumenta ou reduz um cache por meio de programação, usando o PowerShell, a CLI ou a API REST, qualquer maxmemory-reserved ou maxfragmentationmemory-reserved é ignorado como parte da solicitação de atualização. Somente a alteração de escala é respeitada. Você pode atualizar essas configurações de memória após a conclusão da operação de escala.

Próximas etapas