Memcached kommt häufig zum Einsatz, wenn es um die Leis­tungs­stei­ge­rung dy­na­mi­scher An­wen­dun­gen mit Da­ten­bank­an­bin­dung geht. Der In-Memory-Da­ten­spei­cher sorgt unter anderem dafür, dass für das Abrufen von Daten im Ar­beits­spei­cher kein Zugriff auf die Fest­plat­te nötig ist. Dies entlastet nicht nur Back-End-Systeme, sondern verkürzt auch die La­tenz­zeit erheblich. Bekannte Websites wie YouTube, Facebook, Twitter und Wikipedia nutzen die Vorteile der Open-Source-Lösung schon lange und er­mög­li­chen In­ter­net­nut­zern auf diese Weise ein ver­bes­ser­tes Surf­erleb­nis. Aber wie genau funk­tio­niert Memcached und wie sehen die ersten Schritte damit aus? Alles Wis­sens­wer­te zum beliebten Caching-System erfahren Sie hier.

Managed Database Services
Da­ten­ban­ken – Auf´s We­sent­li­che kon­zen­trie­ren
  • IONOS Cloud-Partner: Die Experten für Ihren Datenbank-Betrieb
  • Flexibel: Maß­ge­schnei­der­te Datenbank-Lösungen ganz auf Ihre Be­dürf­nis­se
  • Re­chen­zen­tren in Deutsch­land: Ihre Daten sind sicher

Was ist Memcached?

Hinter dem Namen Memcached verbirgt sich ein hoch-per­for­man­tes Caching-System, das die Firma Danga In­ter­ac­ti­ve vor fast zwanzig Jahren für das In­ter­net­por­tal Li­ve­Jour­nal ent­wi­ckelt hat. Der Cache-Server entstand mit dem Ziel, zeit­rau­ben­de Da­ten­bank­zu­grif­fe bei der Ver­wen­dung an­spruchs­vol­ler Web-An­wen­dun­gen zu umgehen. Eine Lösung stellte der Einsatz eines In-Memory-Da­ten­spei­chers dar, der in der Lage ist, Website-Nutzern zwi­schen­ge­spei­cher­te Elemente in kürzester Zeit be­reit­zu­stel­len. Dabei ist die Memcached-Software sehr nut­zer­freund­lich und einfach hin­sicht­lich In­stal­la­ti­on, Aufbau und Hand­ha­bung. Auch läuft sie unter der der BSD-Lizenz, sodass sie frei verwendet, verändert oder kopiert werden darf.

Wie sieht die Memcached-Ar­chi­tek­tur aus?

Der generelle Aufbau der Memcached-Ar­chi­tek­tur ist relativ simpel. Sie erinnert an ein ver­teil­tes Da­ten­bank­sys­tem und setzt sich aus der Anwendung, einer Client-Bi­blio­thek und einem Pool von Memcached-Instanzen zusammen. Diese sind in be­lie­bi­ger Anzahl auf dem Haupt­spei­cher eines Servers zu in­stal­lie­ren. Am besten ak­ti­vie­ren Sie auf jedem Server, der Speicher entbehren kann, eine Instanz. Zusammen ak­qui­rie­ren diese Instanzen den freien Platz, der für Cache verfügbar ist. Schnitt­stel­le zwischen der je­wei­li­gen Anwendung und Memcached ist die Client-Bi­blio­thek. Diese nimmt die zu spei­chern­den Daten auf und legt sie auf einem vor­han­de­nen Server ab. Durch seine Multi-Thread-Ar­chi­tek­tur kann Memcached außerdem mehrere Pro­zess­ker­ne auf einmal nutzen.

Hinweis

Neben Memcached ist auch Redis ein beliebter In-Memory-Da­ten­spei­cher. Während Memcached mit seiner Ein­fach­heit punktet, bietet Redis eine Vielzahl von An­wen­dungs­mög­lich­kei­ten und Funk­tio­nen. In unserem direkten Vergleich Memcached vs. Redis können Sie nachlesen, welche Software sich für ihre Zwecke am ehesten anbietet.

Wie funk­tio­niert Memcached?

Her­kömm­li­che Da­ten­ban­ken speichern Daten auf einer Fest­plat­te, prä­fe­riert auf einer Solid-State-Disk (SSD). Bei Memcached hingegen verweilen die Daten im Speicher, sodass sie in Mi­kro­se­kun­den verfügbar sind – die Ver­zö­ge­rung, die bei einem Da­ten­ab­ruf durch Such­zei­ten entsteht, entfällt also. Obwohl es möglich ist, Daten über einen längeren Zeitraum zu speichern, werden die meisten Daten nach einer gewissen Zeit au­to­ma­tisch gelöscht. Das liegt daran, dass es sich bei Memcached um einen reinen Cache handelt und nicht um eine Datenbank im klas­si­schen Sinne. So werden die am wenigsten nach­ge­frag­ten Daten entfernt, sobald es keinen Platz mehr für neue Elemente gibt. Aber wie genau läuft der Spei­che­rungs­pro­zess ab?

Bei Memcached spricht man auch von einem In-Memory-Schlüssel-Wert-Speicher. Mithilfe der Pro­to­kol­le TCP und IP wird zunächst eine Ver­bin­dung mit dem Server her­ge­stellt. Möchte ein Nutzer nun bestimmte Daten abrufen, überprüft Memcached, ob diese im Cache vorhanden sind. Ist dies nicht der Fall, werden die be­nö­tig­ten Daten aus dem Haupt­spei­cher bezogen. Der Client versieht an­schlie­ßend die je­wei­li­gen Daten mit einem Schlüs­sel­wert bzw. diese werden durch die Pro­gramm­bi­blio­thek se­ria­li­siert. Durch einen Hashing-Al­go­rith­mus wählt der Client dann aus, auf welchem Memcached-Server die Daten in Form von Zei­chen­ket­ten abgelegt werden. Hier die fünf wich­tigs­ten Punkte, die Memcached cha­rak­te­ri­sie­ren:

  • Daten werden nur an einen Server wei­ter­ge­lei­tet.
  • Daten werden in Form von Schlüssel-Wert-Paaren ge­spei­chert.
  • Die ver­schie­de­nen Server teilen keine Daten un­ter­ein­an­der.
  • Die Server speichern nur im Ar­beits­spei­cher.
  • Bei Platz­man­gel verwirft der Server die ältesten Daten.

Was sind die Vor- und Nachteile von Memcached?

Ob Memcached als Caching-Lösung die beste Option ist, hängt von den An­sprü­chen und der Kom­ple­xi­tät der je­wei­li­gen Anwendung ab. Besonders sinnvoll ist das temporäre Spei­cher­sys­tem zum Beispiel für Web­an­wen­dun­gen mit hohem Traffic und Seiten, die auf riesige Da­ten­ban­ken zugreifen. Neben vielen Vorteilen gibt es natürlich auch ein paar mögliche Nachteile. Im Folgenden ein kleiner Überblick:

Vorteile Nachteile
Extrem kurze Re­ak­ti­ons­zei­ten durch In-Memory-Wert-Spei­che­rung Speichert Daten nur temporär und verliert diese bei Ausfall einer Memcached-Instanz
Multi-Thread-Ar­chi­tek­tur erlaubt vertikale Ska­lie­rung der Rech­ner­ka­pa­zi­tät Daten können nicht ein­ge­se­hen werden, was das Debuggen erschwert
Aus­ge­reif­te Open-Source-Lösung mit offenem Da­ten­spei­cher Schlüs­sel­län­ge der Werte ist auf 250 Zeichen begrenzt (1 MB)
Bietet einfache Hand­ha­bung und Fle­xi­bi­li­tät in der An­wen­dungs­ent­wick­lung Mangelnde Si­cher­heits­me­cha­nis­men erfordern zu­sätz­li­che Firewall
Un­ter­stützt offene Da­ten­for­ma­te und die meisten gängigen Clients bzw. Pro­gram­mier­spra­chen Nicht redundant, d.h. keine Aus­fall­si­cher­heit durch Spie­ge­lung oder Back-up der Daten

Wo wird Memcached ein­ge­setzt?

Die Ein­satz­ge­bie­te von Memcached umfassen das Caching und Speichern von Sit­zungs­da­ten. Beim Caching werden zwi­schen­ge­spei­cher­te Elemente wie Dateien, Metadaten und Bilder blitz­schnell be­reit­ge­stellt. Dies er­mög­licht Ihnen eine kos­ten­güns­ti­ge Ska­lie­rung im Fall eines erhöhten Workloads und ver­bes­sert die Leistung der je­wei­li­gen Anwendung. Ent­wick­ler nutzen den In-Memory-Speicher auch, um Sit­zungs­da­ten wie Nut­zer­pro­fi­le oder den Sit­zungs­sta­tus auf In­ter­netebe­ne zu verwalten. Hierbei wird jedoch vor­aus­ge­setzt, dass die Per­sis­tenz der Daten kein wichtiges Kriterium ist. In den meisten Fällen ist Memcached eine gute Lösung, wenn An­wen­dun­gen einen hoch-per­for­man­ten und groß an­ge­leg­ten Cache erfordern.

Erste Schritte mit Memcached

Die größten Stärken von Memcached sind ohne Zweifel seine Ge­schwin­dig­keit, Ska­lier­bar­keit und die Tatsache, dass alle gängigen APIs und Sprachen un­ter­stützt werden. Dazu zählen unter anderem Ruby, Java, Ja­va­Script, Python, Go, PHP, C, C++, C# und Node.js. Zudem ist auch die In­stal­la­ti­on auf einem Windows- oder Unix-Be­triebs­sys­tem nicht besonders kom­pli­ziert. Der Memcached-Daemon wird von Danga In­ter­ac­ti­ve zum kos­ten­lo­sen Download be­reit­ge­stellt. Neben dem passenden Ent­wick­ler­pa­ket benötigen Sie auch eine libevent-Bi­blio­thek, die asyn­chro­ne Er­eig­nis­be­nach­rich­ti­gun­gen er­mög­licht. Je nach ver­wen­de­ter Pro­gram­mier­spra­che gibt es nach der In­stal­la­ti­on ver­schie­de­ne Kon­fi­gu­ra­ti­ons­mög­lich­kei­ten für Client und Server.

Da es sich bei Memcached um ein Open-Source-Projekt handelt, wird es seit vielen Jahren von einer großen Community genutzt und mit­ge­stal­tet. Dies hat den Vorteil, dass Ihnen de­tail­lier­te In­for­ma­tio­nen zur Anwendung, Ver­wal­tung und Pro­blem­be­he­bun­gen für ver­schie­de­ne APIs und Be­triebs­sys­te­me online zur Verfügung stehen.

Zum Hauptmenü