Question

En supposant un datastore MySQL, quand ne voudriez-vous PAS utiliser memcached dans une application Ruby on Rails?

Était-ce utile?

La solution

Memcache est un cache distribué puissant, mais n’est pas plus rapide que la mise en cache locale pour certains contenus. La mise en cache devrait vous permettre d'éviter les goulots d'étranglement, qui sont généralement des demandes de base de données et des demandes de réseau. Si vous pouvez mettre en cache localement l'intégralité de votre page sous forme HTML, car elle ne change pas très souvent (elle n'est pas très dynamique), votre serveur Web peut le servir beaucoup plus rapidement que l'interrogation de memcache. Cela est particulièrement vrai si votre serveur memcache, comme la plupart des serveurs memcached, se trouve sur des ordinateurs distincts.

Le problème, c’est que j’utilise parfois memcache localement au lieu d’autres options de mise en cache, car je sais qu’un jour j’aurai besoin de le transférer sur son propre serveur.

Autres conseils

N'utilisez pas memcached si votre application est capable de gérer toutes les demandes rapidement. L'ajout de memcached est une charge mentale supplémentaire lorsqu'il s'agit de coder votre application, ne le faites pas sauf si vous en avez besoin.

Scaling & problème de swell à avoir

.

Le principal avantage de memcached est qu’il s’agit d’un cache distribué . Cela signifie que vous pouvez générer une fois et servir à partir de la mémoire cache sur plusieurs serveurs (c’est pourquoi memcached a été créé). Toutes les réponses précédentes semblent ignorer cela - je me demande s’ils ont déjà construit une application hautement évolutive (ce qui est exactement ce à quoi memcached est destiné)

  

Danga Interactive a développé memcached   pour améliorer la vitesse de   LiveJournal.com, un site qui a été   fait déjà 20 millions + page dynamique   vues par jour pour 1 million d'utilisateurs avec    un groupe de serveurs Web et un groupe de   serveurs de base de données . memcached a chuté   la base de données ne charge presque rien,   donnant des temps de chargement de page plus rapides pour   utilisateurs, meilleure utilisation des ressources,   et un accès plus rapide aux bases de données sur   un memcache manque.

(mon gras)

La réponse est donc la suivante: si votre application n’est susceptible d’être déployée que sur un seul serveur.

S'il est probable que vous utiliserez plus d'un serveur (pour l'évolutivité et la redondance), memcached est (presque) toujours une bonne idée.

Lorsque vous souhaitez avoir un contrôle précis de l’expiration des documents. D'après mes tests, memcached semble avoir une résolution temporelle d'environ une seconde.

EG: si vous dites à quelque chose d’expirer en 1 seconde, il pourrait rester entre 1 et un peu plus de 2 secondes.

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