Memcache invalide les entrées selon un motif?
-
05-07-2019 - |
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.
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: