entradas Invalidate Memcache de acordo com um padrão?
-
05-07-2019 - |
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.
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: