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 paramaxfragmentationmemory-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 paramaxmemory-reserved
é de 10%-60% demaxmemory
. 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 paramaxfragmentationmemory-reserved
é de 10%-60% demaxmemory
. 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
oumaxfragmentationmemory-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 valoresused_memory
ouused_memory_rss
atuais forem maiores que o novo limite de 45 GB, o sistema precisará remover os dados até queused_memory
eused_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, comoused_memory
eused_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.