Partilhar via


Expiration and Eviction (AppFabric 1.1 Caching)

No Microsoft AppFabric 1.1 para Windows Server, os objetos armazenados em cache não permanecem na memória permanentemente. Além de serem removidos explicitamente do cache usando o método Remove, objetos armazenados em cache também podem expirar ou serem removidos do cluster de cache.

Vencimento

A expiração do cache permite que o cluster de cache remova automaticamente objetos armazenados do cache. Ao usar os métodos Put ou Add, um valor opcional de tempo limite do objeto pode ser definido para o objeto específico armazenado em cache. Esse valor determinará quanto tempo ele ficará no cache. Se o valor de tempo limite do objeto não for fornecido no momento em que o objeto for armazenado em cache, os valores especificados nas definições de configuração do cluster para o cache nomeado serão usados para determinar a vida útil do objeto em cache.

Quando os objetos armazenados em cache forem bloqueados para fins de simultaneidade, eles não serão removidos do cache mesmo se passarem de sua expiração. Assim que forem desbloqueados, eles serão imediatamente removidos do cache se o período de expiração for ultrapassado.

Para evitar a remoção instantânea no momento do desbloqueio de objetos expirados, o método Unlock também dá suporte à extensão da expiração do objeto em cache. Para obter mais informações sobre os modelos e métodos de simultaneidade compatíveis, consulte Modelos de simultaneidade (Cache do AppFabric 1.1) e Métodos de simultaneidade.

Invalidação do cache local

Há dois tipos complementares de invalidação para o cache local: Invalidação com base no tempo limite e invalidação com base em notificações. Para obter um exemplo de como habilitar programaticamente o cache local, consulte Habilitar cache local do AppFabric 1.1. Para obter um exemplo de como usar um arquivo de configuração de aplicativo para habilitar o cache local, consulte Habilitar cache local (XML).

Dica

Depois que os objetos são armazenados no cache local, seu aplicativo continua a usar esses objetos até que sejam invalidados, independentemente do fato de esses objetos serem atualizados por outro cliente no cluster de cache. Por esse motivo, é melhor usar o cache local para dados que não são alterados frequentemente.

Invalidação com base no tempo limite

Depois que os objetos são baixados para o cache local, eles ficam lá até que atinjam o valor de tempo limite especificado nas definições de configuração do cliente de cache. Depois que atingem esse valor de tempo limite, os objetos são invalidados para que o objeto possa ser atualizado no cluster de cache na próxima vez em que ele for necessário.

Invalidação com base em notificações

Se seu cliente de cache possui um cache local habilitado, também é possível usar notificações de cache para invalidar automaticamente seus objetos armazenados em cache localmente. Ao encurtar a vida útil desses objetos conforme necessário, será possível reduzir a possibilidade de seu aplicativo usar dados obsoletos.

Quando você usa as notificações de cache, seu aplicativo verifica o cluster de cache em um intervalo regular para ver se há alguma notificação nova disponível. Esse intervalo, chamado de intervalo de sondagem, é de 300 segundos por padrão. O intervalo de sondagem é especificado em unidades de segundos nas definições de configuração do aplicativo. Observe que, mesmo com a invalidação com base em notificações, os tempos limite ainda se aplicam a itens no cache local. Isso torna a invalidação com base em notificações complementar à invalidação com base no tempo limite.

Aviso

Para que seu aplicativo use notificações, é necessário habilitá-las em um cache nomeado. Use o parâmetro NotificationsEnabled com os comandos New-Cache ou Set-CacheConfig. Para obter mais informações, consulte Administração de cache com o Windows PowerShell (AppFabric 1.1).

Remoção

Para manter a capacidade de memória disponível de cache em cada host de cache, o AppFabric dá suporte à remoção LRU (menos utilizado recentemente). Os limites, chamados de marcas d´água, são usados para certificar que a memória seja distribuída igualmente em todos os hosts de cache no cluster.

Quando o consumo de memória do serviço de cache em um servidor de cache excede o limite baixo da marca d´água, o AppFabric começa a remover os objetos expirados.

Quando o consumo de memória excede o limite máximo de marca d´água, os objetos são removidos da memória, independentemente de terem expirado ou não, até que o consumo da memória volte para a marca d´água baixa. Objetos armazenados em cache subsequentemente podem ser reencaminhados para outros hosts, a fim de manter uma distribuição ideal da memória.

Especificando as definições de expiração e remoção

O comportamento da expiração e da remoção é configurado no nível do cache nomeado nas definições de configuração do cluster. Essas definições no nível do cache podem ser configuradas com a ferramenta de administração de cache do Windows PowerShell. Para obter mais informações, consulte Administração de cache com o Windows PowerShell (AppFabric 1.1).

Além disso, os seguintes métodos permitem que você substitua as definições padrão que estão no cache:

  • Os métodos Add e Put oferecem sobrecargas que permitem que você especifique um valor de tempo limite de expiração apenas para o objeto que você está adicionando ao cache.

  • Os métodos PutAndUnlock e Unlock oferecem sobrecargas que permitem que você estenda a expiração de um objeto depois de desbloqueá-lo.

  • O método ResetObjectTimeout permite que você estenda explicitamente a vida útil de um objeto, substituindo as definições de expiração do cache.

Independentemente das definições de expiração ou remoção, se um cluster de cache é reiniciado, todos os objetos no cache são liberados. O código do seu aplicativo deverá carregar o cache de uma fonte de dados se os dados não forem encontrados no cache. Isso geralmente é chamado de padrão de programação do cache.

Consulte também

Conceitos

Diagrama de arquitetura física de cache do AppFabric (Cache do AppFabric 1.1)
Diagrama de arquitetura lógica de cache do AppFabric (Cache do AppFabric 1.1)

  2012-03-05