Wann möchten Sie NICHT Memcached in einer Ruby on Rails-Anwendung verwenden?
-
03-07-2019 - |
Frage
Unter der Annahme einer MySQL-Datenspeicher, wenn würden Sie nicht auf Schienen in einem Ruby Memcached verwenden möchten app?
Lösung
Memcache ist ein starker verteilten Cache, ist aber nicht schneller als lokaler Caching für einige Inhalte. Caching sollte Ihnen ermöglichen, um Engpässe zu vermeiden, die in der Regel von Datenbankanforderungen und Netzwerkanforderungen. Wenn Sie Ihre ganze Seite lokal als HTML-Cache kann, weil es nicht sehr oft ändern (ist nicht sehr dynamisch), dann können Sie Ihre Web-Server diese dienen viel schneller als memcache abfragt. Dies gilt insbesondere, wenn Ihr memcache Server, wie die meisten Memcached-Server sind auf unterschiedlichen Maschinen.
Kehrseite davon ist, dass ich manchmal memcache lokal anstelle von anderen Caching-Optionen verwenden, weil ich weiß, einen Tag werde ich es bewegen müssen, um einen eigenen Server aus.
Andere Tipps
Verwenden Sie keine Memcached, wenn Ihre Anwendung in der Lage ist, schnell alle Anfragen zu bearbeiten. Hinzufügen von Memcached ist extra psychischen Aufwand, wenn es um Codierung Ihrer Anwendung kommt, so tun Sie es nicht tun, wenn Sie es brauchen.
Die Skalierung der " ein Dünung Problem haben ".
Der Hauptvorteil von Memcached ist, dass es sich um eine verteilt Cache. Das heißt, Sie einmal erzeugen können, und dienen aus dem Cache über viele Server (aus diesem Grund Memcached erstellt wurde). Alle bisherigen Antworten scheinen dies zu ignorieren - es macht mich fragen, ob sie jemals eine hoch skalierbare App zu bauen hatte (das ist genau das, was für Memcached ist)
Danga Interactive entwickelt Memcached zur Verbesserung der Geschwindigkeit LiveJournal.com, eine Website, die war dabei bereits 20 Millionen + dynamische Seite Aufrufe pro Tag für 1 Million Benutzer mit ein Bündel von webservers sowie ein Bündel von Datenbankserver . memcached gesunken die Datenbanklast auf fast nichts, wodurch man schneller Ladezeiten für Benutzer, eine bessere Ressourcennutzung, und schnellerer Zugriff auf die Datenbanken auf ein memcache verpassen.
(My bolding)
Die Antwort ist also:., Wenn Ihre Anwendung ist immer nur wahrscheinlich auf einem einzigen Server bereitgestellt werden
Wenn Sie jemals wahrscheinlich mehr als ein Server zu verwenden (für Skalierbarkeit und Redundanz) Memcached ist (fast) immer eine gute Idee.
Wenn Sie haben wollen, feinkörnige Kontrolle über die Dinge ablaufen. Von meinen Tests scheint Memcached nur eine Zeitauflösung von etwa einer Sekunde zu haben.
Zum Beispiel: Wenn Sie etwas sagen, in 1 Sekunde abläuft, könnte es bleiben um zwischen 1 und knapp über 2 Sekunden
.