Question

Existe-t-il un moyen d'invalider des entrées dans memcache en fonction d'une clé générique?

Donc, si j'ai les clés memcache suivantes:

data/1
data/2
data/3

Existe-t-il un moyen d'invalider ces clés avec quelque chose comme data / * ? Il serait extrêmement utile d'éliminer un tas de données périmées d'un seul coup.

Était-ce utile?

La solution

Le meilleur moyen est de fournir une clé de version lors de la création de votre clé memcache. Nous faisons cela en fournissant une fonction / méthode unique pour créer une clé sur notre système.

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

makeKey () utilise les informations du tableau cacheKeyVersions et renvoie:

5:monkeyInfo:123:456

Notez le "5" au début. Cela vient d'un tableau codé en dur de keyNames = > versions. Donc, si nous voulons invalider TOUTES les valeurs de cache 'monkeyInfo' dans le système, nous devons simplement changer ce nombre en 6 dans le tableau. A partir de là, le même appel sera à la recherche de

6:monkeyInfo:123:456

Voici un exemple de tableau de version de clé. L’appel makeKey () recherche dans ce tableau pour obtenir le numéro de version d’une clé donnée.

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

Vous pouvez faire toutes sortes de choses pour que la mise en œuvre corresponde à vos besoins, mais c'est l'essentiel.

Autres conseils

memcached ne prend pas en charge les suppressions à espace de noms.

Le wiki officiel contient des suggestions sur la manière de contourner le problème. ça:

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top