2010-11-22 3 views
1

J'utilise PHP PECL/Memcached pour la première fois et je n'arrive pas à comprendre quand et comment je devrais mettre à jour les éléments modifiés dans Memcached.Quand et comment mettez-vous à jour un article modifié dans Memcached?

J'ai essayé d'utiliser à la fois Memcached::add et Memcached::set et ni l'un ni l'autre n'obtient les résultats attendus.

Memcached::set remplace automatiquement la valeur

$memcached->set('key', 'value', time() + 300); 
$memcached->set('key', 'value2', time() + 300); 
var_dump($memcached->get('key')); // Outputs "value2" 

et Memcached::add ne remplacera pas la valeur si elle est déjà définie dans Memcached

$memcached->add('key', 'value'); 
$memcached->add('key', 'value2'; 
var_dump($memcached->get('key')); // Outputs "value" 

Alors, quelle est la pratique courante pour les valeurs de mise à jour à Memcached?

+0

Quel * est * le résultat attendu, alors? Votre premier exemple vous montre comment le mettre à jour ... –

+0

Eh bien, c'est le résultat attendu pour cette méthode. Je ne suis pas sûr que ce soit vraiment ce que je devrais faire. Ensuite, j'écrirais à Memcached tout le temps, ce qui aurait (je pense) vaincu le but. –

Répondre

2

Vous appelez memcached :: get.

Si la valeur de retour n'est pas false, votre valeur était dans le cache et vous l'avez maintenant et pouvez l'utiliser.

Si la valeur de retour est false, elle n'est pas dans le cache (elle n'a jamais existé ou a expiré). Calculez la valeur, enregistrez-la dans votre memcache, puis continuez avec votre programme.

Le but du cache est de vous éviter d'effectuer une tâche gourmande en ressources en le faisant une fois, puis en le mettant en cache pendant un certain temps et en réutilisant la valeur sur les demandes futures.

+0

Merci pour ça. Ce que je ne comprenais pas fondamentalement, c'était qu'il y avait une expiration lors de l'utilisation de 'Memcached :: add'. –

Questions connexes