Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo descreve as práticas recomendadas para o gerenciamento de memória no Cache do Azure para Redis.
Escolha a política de remoção correta
Escolha uma política de remoção que funcione para o seu aplicativo. A política padrão do Cache do Azure para Redis é volatile-lru
, o que significa que somente as chaves que têm um valor TTL (vida útil) definida com um comando como EXPIRE são qualificadas 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, considere a allkeys-lru
política.
Definir uma data de expiração para as chaves
A expulsão devido à pressão de memória pode aumentar a carga no servidor. Defina um valor de expiração em suas chaves para remover chaves proativamente em vez de aguardar até que haja pressão de memória. Para obter mais informações, consulte a documentação para os comandos Expire eEXPIREAT do Redis.
Minimizar a fragmentação de memória
Valores de chave 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
Monitore o uso de memória para garantir que você não fique sem memória. Crie alertas para dar a você a chance de dimensionar o cache antes que ocorram problemas.
Definir sua configuração de maxmemory-reserved
Defina sua configuração de maxmemory-reserved para maximizar a capacidade de resposta do sistema. Configurações adequadas de reserva são especialmente importantes para workloads com alto volume de gravação ou se você estiver armazenando valores de 100 KB ou mais em seu cache.
A
maxmemory-reserved
configuração configura a quantidade de memória, em MB por instância em um cluster, reservada para operações de noncache, 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.A
maxfragmentationmemory-reserved
configuração configura 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 está disponível para armazenar dados armazenados em cache. Por padrão, quando você cria um cache, aproximadamente 10% da memória disponível são reservadas para maxmemory-reserved
, e outras 10% são reservadas para maxfragmentationmemory-reserved
. Você poderá aumentar a quantidade reservada se tiver cargas com uso intensivo de gravação.
Os intervalos permitidos para maxmemory-reserved
e para maxfragmentationmemory-reserved
são 10%-60% de maxmemory
. Se você tentar definir esses valores para menos de 10% ou mais de 60%, eles serão reavaliados e definidos como 10% (mínimo) e 60% (máximo).
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, se maxmemory-reserved
for definido como 3 GB em um cache de 6 GB e você dimensionar para um cache de 12 GB, a configuração será atualizada automaticamente para 6 GB durante o dimensionamento. Se você o reduzir verticalmente, o inverso acontecerá.
Considere como alterar um valor de reserva de memória maxmemory-reserved
ou maxfragmentationmemory-reserved
pode afetar um cache com uma grande quantidade de dados nele que já está em execução. Por exemplo, se você tiver um cache de 53 GB com os valores reservados definidos como os mínimos de 10%, a memória máxima disponível para o sistema será de aproximadamente 42 GB. Se os valores used_memory
ou used_memory_rss
atuais forem superiores a 42 GB, o sistema deverá remover dados até ambos used_memory
e used_memory_rss
estarem abaixo de 42 GB.
O descarte pode aumentar a carga do servidor e a fragmentação de memória. 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ê dimensiona um cache para cima ou para baixo programaticamente usando o Azure PowerShell, a CLI do Azure ou a API REST, qualquer configuração incluída maxmemory-reserved
ou maxfragmentationmemory-reserved
é ignorada como parte da solicitação de atualização. Somente a alteração de escala é respeitada. Você pode atualizar as configurações de memória após a conclusão da operação de dimensionamento.