2009-07-29 12 views
17

C'è un modo per invalidare le voci in memcache in base a una chiave jolly?Memcache annulla le voci secondo uno schema?

Quindi, se ho i seguenti tasti: memcache

data/1 
data/2 
data/3 

C'è un modo per invalidare quelle chiavi con qualcosa come data/*? Sarebbe estremamente utile cancellare un gruppo di dati obsoleti in un colpo solo.

risposta

23

Il modo migliore è quello di fornire una chiave di controllo delle versioni quando si crea la chiave memcache. Lo facciamo fornendo una singola funzione/metodo per la creazione di una chiave sul nostro sistema.

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

makeKey() utilizza le informazioni nella matrice cacheKeyVersions e ritorni:

5:monkeyInfo:123:456 

Avviso il '5' all'inizio. Questo deriva da un array hard-coded di keyNames => versioni. Quindi, se vogliamo invalidare OGNI valore di cache 'monkeyInfo' nel sistema, dobbiamo semplicemente cambiare quel numero a 6 nell'array. Da allora in poi la stessa chiamata sarà alla ricerca di

6:monkeyInfo:123:456 

Ecco un esempio di ciò che la chiave dell'array versione potrebbe essere simile. La chiamata 'makeKey()' controlla semplicemente in questo array per ottenere il numero di versione per una determinata chiave.

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

Si potrebbe fare un sacco di cose per rendere l'attuazione corrispondono ai suoi bisogni, ma questo è il senso di base di esso.

+0

Si noti inoltre che la funzione/metodo makeKey potrebbe anche includere una versione globale che consentirebbe di svuotare l'intera cache se necessario. Oppure puoi usarlo per svuotare specifici domini di chiavi, ecc. Dipende da te. – conceptDawg

+0

Modo molto intelligente per eseguire l'operazione. Grazie per l'intuizione. – Kekoa

+0

@ConceptDawg hai o conosci qualche libreria (preferibilmente PHP) che implementerebbe questo algoritmo? – romaninsh

5

memcached non supporta le eliminazioni di namespace.

Il official wiki ha un suggerimento su come lavorare intorno ad esso:

Problemi correlati