memcached - ¿Memcache invalida entradas según un patrón?
clear invalidation (2)
¿Hay una manera de invalidar las entradas en memcache de acuerdo con una clave de comodín?
Así que si tengo las siguientes claves de memcache:
data/1
data/2
data/3
¿Hay alguna forma de invalidar esas claves con algo como data/*
? Sería extremadamente útil eliminar un montón de datos obsoletos de una sola vez.
La mejor manera es proporcionar una clave de control de versiones al crear su clave memcache. Hacemos esto proporcionando una sola función / método para crear una clave en nuestro sistema.
$var1 = 123;
$var2 = 456;
$cacheKey = makeKey(''monkeyInfo'', $var1, $var2, ...);
makeKey()
usa la información en la matriz cacheKeyVersions y devuelve:
5:monkeyInfo:123:456
Observe el ''5'' al principio. Eso viene de una matriz codificada de keyNames => versiones. Entonces, si queremos invalidar CADA valor de caché ''monkeyInfo'' en el sistema, simplemente tenemos que cambiar ese número a 6 en la matriz. A partir de entonces se buscará la misma llamada.
6:monkeyInfo:123:456
Aquí hay un ejemplo de cómo podría verse la matriz de la versión clave. La makeKey()
'' makeKey()
'' simplemente busca en esta matriz para obtener el número de versión de una clave determinada.
$cacheKeyVersions = array(
''monkeyInfo'' => 5,
''zebraInfo'' => 2
);
Podría hacer todo tipo de cosas para que la implementación se ajuste a sus necesidades, pero eso es lo esencial.
memcached no admite eliminaciones de espacios de nombre.
La wiki oficial tiene una sugerencia sobre cómo trabajar alrededor de ella: