2010-12-07 6 views
2

Je travaille donc sur une application web qui doit être construite pour l'évolutivité. Il stocke les requêtes MySQL fréquentes dans le cache. J'ai à peu près tout construit et prêt à partir - mais je suis préoccupé par les meilleures pratiques en matière de gestion de la mise en cache des données. J'ai parlé à quelques personnes et l'une d'entre elles a suggéré de diviser chaque clé/valeur sur tous les nœuds memcache.bonne pratique avec memcache/php - nœuds multi memcache

qui signifie que si je stocke l'exemple: « somekey », «c'est la valeur »

il sera réparti sur 3 serveurs permet de dire de memcache.

Est-ce une meilleure façon? ou est-ce que memcache est plus construit sur une relation 1 à 1? Par exemple.

valeur de stockage sur le serveur A jusqu'à ce qu'il soit défectueux - allez au serveur B et stockez-le.

C'est ma compréhension actuelle de la recherche que j'ai faite et de mon expérience passée avec memcache.

Quelqu'un pourrait-il me diriger dans la bonne direction dans ce domaine et laissez-moi savoir quel est le meilleur moyen ou si j'ai complètement mixxed.

Merci

Répondre

0

J'utiliser hashage cohérent en php

Voir http://php.net/manual/en/memcached.constants.php

De cette façon, si un serveur memcache tombe en panne, vos clés ne seront pas redistribuées :)

Dans mon L'expérience des serveurs memcache a été vraiment fiable, et ils sont généralement redémarrés en raison des mises à niveau du système d'exploitation et autres.

Si vous n'utilisez pas le hachage consistant, alors si un serveur s'éteint et revient, il est possible qu'un ancien élément de données soit mis en cache sur ce serveur.

serveurs IE Memcache A, B

A: set key = 1234, value = 'abc', expires = 1 day 
B: 
after a time 
A: vanishes 
B: get key = 1234 
    returns nothing 
B: set key = 1234, value = 'def', exipres = 1 day 
after more time 
A: comes back! 

retours get_key (1234) 'abc', parce que A est maintenant disponible.!

-daniel

Questions connexes