2009-07-29 19 views
17

¿Hay alguna forma de invalidar entradas en Memcache de acuerdo con una clave comodín?¿Memcache invalida las entradas según un patrón?

Así que si tengo las siguientes claves: memcache

data/1 
data/2 
data/3 

¿Hay alguna manera de invalidar esas llaves con algo así como data/*? Sería extremadamente útil borrar un montón de datos viciados de un solo golpe.

Respuesta

23

La mejor forma de hacerlo es proporcionar una clave de versiones al crear su clave Memcache. Hacemos esto al proporcionar una única función/método para crear una clave en nuestro sistema.

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

makeKey() utiliza la información de la matriz y vuelve cacheKeyVersions:

5:monkeyInfo:123:456 

Aviso 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 la misma llamada se busca

6:monkeyInfo:123:456 

Aquí está un ejemplo de lo que la versión de serie de la clave puede ser similar. La llamada 'makeKey()' simplemente busca en esta matriz para obtener el número de versión de cualquier clave dada.

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

Puede hacer todo tipo de cosas para que la implementación satisfaga sus necesidades, pero esa es la esencia básica de la misma.

+0

También tenga en cuenta que su función/método makeKey también podría incluir una versión global que le permita eliminar todo el caché si es necesario. O puede usarlo para vaciar dominios específicos de claves, etc. Depende de usted. – conceptDawg

+0

Manera muy inteligente para lograr la tarea. Gracias por la visión. – Kekoa

+0

@ConceptDawg ¿tiene usted o conoce alguna biblioteca (preferiblemente PHP) que implementaría este algoritmo? – romaninsh

5

memcached no admite eliminaciones de espacio de nombres.

El official wiki tiene una sugerencia sobre cómo trabajar alrededor de ella:

Cuestiones relacionadas