Pergunta

Existe uma maneira de entradas Invalidate em memcache de acordo com uma chave curinga?

Então, se eu tenho as seguintes chaves memchache:

data/1
data/2
data/3

Existe uma maneira que eu possa invalidar essas chaves com algo como data/*? Seria extremamente útil para limpar um monte de dados obsoletos de uma só vez.

Foi útil?

Solução

A melhor maneira é fornecer uma chave de versões ao criar sua chave memcache. Fazemos isto fornecendo uma única função / método para criar uma chave em nosso sistema.

$var1 = 123;
$var2 = 456;
$cacheKey = makeKey('monkeyInfo', $var1, $var2, ...);

makeKey() usa as informações na matriz cacheKeyVersions e volta:

5:monkeyInfo:123:456

Observe o '5' no início. Que vem de uma matriz codificados de keynames => versões. Portanto, se queremos para invalidar valor do cache de cada 'monkeyInfo' no sistema que simplesmente tem que mudar esse número para 6 na matriz. A partir de então a mesma chamada estará procurando

6:monkeyInfo:123:456

Aqui está um exemplo do que a matriz versão da chave pode parecer. A chamada 'makeKey()' simplesmente olha para essa matriz para obter o número de versão para qualquer chave dada.

$cacheKeyVersions = array(
    'monkeyInfo'   => 5,
    'zebraInfo'    => 2
);

Você pode fazer todo tipo de coisas para tornar a implementação corresponder às suas necessidades, mas essa é a essência básica do mesmo.

Outras dicas

memcached não suporta exclusões namespaced.

O oficial wiki tem uma sugestão sobre como resolver -lo:

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top