Partilhar via


Gestão da memória

Política de expulsão

Escolha uma política de despejo que funcione para o seu aplicativo. A política padrão para o Cache Redis do Azure é volatile-lru, o que significa que apenas as chaves que têm um valor TTL definido com um comando como EXPIRE são elegíveis para remoção. Se nenhuma chave tiver um valor TTL, o sistema não removerá nenhuma chave. Se você quiser que o sistema permita que qualquer chave seja removida se estiver sob pressão de memória, então você pode querer considerar a allkeys-lru política.

Expiração das chaves

Defina um valor de expiração nas suas chaves. Uma expiração remove as chaves proativamente em vez de esperar até que haja pressão de memória. Quando a remoção acontece devido à pressão da memória, pode causar mais carga no servidor. Para obter mais informações, consulte a documentação dos comandos EXPIRE e EXPIREAT .

Minimizar a fragmentação da memória

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

Monitorizar utilização da 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 seu cache antes de ver problemas.

Configure sua configuração maxmemory-reserved

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

  • Uma configuração de reserva suficiente é especialmente importante para cargas de trabalho de gravação pesada ou se você estiver armazenando valores de 100 KB ou mais em seu cache. Por padrão, quando você cria um cache, aproximadamente 10% da memória disponível é reservada para maxmemory-reserved. Outros 10% estão reservados para maxfragmentationmemory-reserved. Você pode aumentar o valor reservado se tiver cargas pesadas de gravação.

  • A maxmemory-reserved configuração configura a quantidade de memória, em MB por instância em um cluster, reservada para operações que não sejam de cache, como replicação durante o failover. Definir este valor permite-lhe ter uma experiência de servidor do Redis mais consistente quando a sua carga varia. Este valor tem de ser definido mais alto para cargas de trabalho que escrevem grandes quantidades de dados. Quando a memória é reservada para tais operações, não está disponível para armazenamento de dados em cache. O intervalo permitido para maxmemory-reserved é de 10% - 60% de maxmemory. Se tentar definir estes valores inferiores a 10% ou superiores a 60%, estes são reavaliados e definidos para o mínimo de 10% e máximo de 60%. Os valores são renderizados em megabytes.

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

  • Uma coisa a considerar ao escolher um valor de reserva de memória (maxmemory-reserved ou maxfragmentationmemory-reserved) é como essa alteração pode afetar um cache com grandes quantidades de dados nele que já está em execução. Por exemplo, se você tiver um cache de 53 GB com os valores reservados definidos para o mínimo de 10 GB, a memória máxima disponível para o sistema é de aproximadamente 42 GB. Se os seus valores atuais used_memory ou used_memory_rss superiores ao limite de 42 GB, o sistema deve remover os dados até que ambos used_memory estejam used_memory_rss abaixo de 42 GB. A remoção pode aumentar a carga do servidor e a fragmentação da memória. Para obter mais informações sobre métricas de cache, como used_memory e , consulte Criar suas próprias métricasused_memory_rss.

Nota

Quando você dimensiona um cache para cima ou para baixo, ambas as maxmemory-reserved configurações são maxfragmentationmemory-reserved dimensionadas automaticamente proporcionalmente ao tamanho do cache. Por exemplo, se maxmemory-reserved estiver definido como 3 GB em um cache de 6 GB e você dimensionar para cache de 12 GB, as configurações serão atualizadas automaticamente para 6 GB durante o dimensionamento. Quando você reduz a escala, acontece o inverso. Quando você dimensiona um cache para cima ou para baixo programaticamente, usando PowerShell, CLI ou API Rest, qualquer maxmemory-reserved um ou maxfragmentationmemory-reserved é ignorado como parte da solicitação de atualização. Apenas a sua alteração de escala é honrada. Você pode atualizar essas configurações de memória após a conclusão da operação de dimensionamento.

Próximos passos