Memcached: Der In-Memory-Speicher einfach erklärt

Memcached kommt häufig zum Einsatz, wenn es um die Leistungssteigerung dynamischer Anwendungen mit Datenbankanbindung geht. Der In-Memory-Datenspeicher sorgt unter anderem dafür, dass für das Abrufen von Daten im Arbeitsspeicher kein Zugriff auf die Festplatte nötig ist. Dies entlastet nicht nur Back-End-Systeme, sondern verkürzt auch die Latenzzeit erheblich. Bekannte Websites wie YouTube, Facebook, Twitter und Wikipedia nutzen die Vorteile der Open-Source-Lösung schon lange und ermöglichen Internetnutzern auf diese Weise ein verbessertes Surferlebnis. Aber wie genau funktioniert Memcached und wie sehen die ersten Schritte damit aus? Alles Wissenswerte zum beliebten Caching-System erfahren Sie hier.

Managed Database von IONOS

Datenbank-Services ohne Aufwand. Maßgeschneidert auf Ihre Bedürfnisse und individuell anpassbar!

Hochverfügbar
Sicher
Individuell

Was ist Memcached?

Hinter dem Namen Memcached verbirgt sich ein hoch-performantes Caching-System, das die Firma Danga Interactive vor fast zwanzig Jahren für das Internetportal LiveJournal entwickelt hat. Der Cache-Server entstand mit dem Ziel, zeitraubende Datenbankzugriffe bei der Verwendung anspruchsvoller Web-Anwendungen zu umgehen. Eine Lösung stellte der Einsatz eines In-Memory-Datenspeichers dar, der in der Lage ist, Website-Nutzern zwischengespeicherte Elemente in kürzester Zeit bereitzustellen. Dabei ist die Memcached-Software sehr nutzerfreundlich und einfach hinsichtlich Installation, Aufbau und Handhabung. Auch läuft sie unter der der BSD-Lizenz, sodass sie frei verwendet, verändert oder kopiert werden darf.

Wie sieht die Memcached-Architektur aus?

Der generelle Aufbau der Memcached-Architektur ist relativ simpel. Sie erinnert an ein verteiltes Datenbanksystem und setzt sich aus der Anwendung, einer Client-Bibliothek und einem Pool von Memcached-Instanzen zusammen. Diese sind in beliebiger Anzahl auf dem Hauptspeicher eines Servers zu installieren. Am besten aktivieren Sie auf jedem Server, der Speicher entbehren kann, eine Instanz. Zusammen akquirieren diese Instanzen den freien Platz, der für Cache verfügbar ist. Schnittstelle zwischen der jeweiligen Anwendung und Memcached ist die Client-Bibliothek. Diese nimmt die zu speichernden Daten auf und legt sie auf einem vorhandenen Server ab. Durch seine Multi-Thread-Architektur kann Memcached außerdem mehrere Prozesskerne auf einmal nutzen.

Hinweis

Neben Memcached ist auch Redis ein beliebter In-Memory-Datenspeicher. Während Memcached mit seiner Einfachheit punktet, bietet Redis eine Vielzahl von Anwendungsmöglichkeiten und Funktionen. In unserem direkten Vergleich Memcached vs. Redis können Sie nachlesen, welche Software sich für ihre Zwecke am ehesten anbietet.

Wie funktioniert Memcached?

Herkömmliche Datenbanken speichern Daten auf einer Festplatte, präferiert auf einer Solid-State-Disk (SSD). Bei Memcached hingegen verweilen die Daten im Speicher, sodass sie in Mikrosekunden verfügbar sind – die Verzögerung, die bei einem Datenabruf durch Suchzeiten 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 automatisch gelöscht. Das liegt daran, dass es sich bei Memcached um einen reinen Cache handelt und nicht um eine Datenbank im klassischen Sinne. So werden die am wenigsten nachgefragten Daten entfernt, sobald es keinen Platz mehr für neue Elemente gibt. Aber wie genau läuft der Speicherungsprozess ab?

Bei Memcached spricht man auch von einem In-Memory-Schlüssel-Wert-Speicher. Mithilfe der Protokolle TCP und IP wird zunächst eine Verbindung mit dem Server hergestellt. Möchte ein Nutzer nun bestimmte Daten abrufen, überprüft Memcached, ob diese im Cache vorhanden sind. Ist dies nicht der Fall, werden die benötigten Daten aus dem Hauptspeicher bezogen. Der Client versieht anschließend die jeweiligen Daten mit einem Schlüsselwert bzw. diese werden durch die Programmbibliothek serialisiert. Durch einen Hashing-Algorithmus wählt der Client dann aus, auf welchem Memcached-Server die Daten in Form von Zeichenketten abgelegt werden. Hier die fünf wichtigsten Punkte, die Memcached charakterisieren:

  • Daten werden nur an einen Server weitergeleitet.
  • Daten werden in Form von Schlüssel-Wert-Paaren gespeichert.
  • Die verschiedenen Server teilen keine Daten untereinander.
  • Die Server speichern nur im Arbeitsspeicher.
  • Bei Platzmangel 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 Ansprüchen und der Komplexität der jeweiligen Anwendung ab. Besonders sinnvoll ist das temporäre Speichersystem zum Beispiel für Webanwendungen mit hohem Traffic und Seiten, die auf riesige Datenbanken zugreifen. Neben vielen Vorteilen gibt es natürlich auch ein paar mögliche Nachteile. Im Folgenden ein kleiner Überblick:

Vorteile Nachteile
Extrem kurze Reaktionszeiten durch In-Memory-Wert-Speicherung Speichert Daten nur temporär und verliert diese bei Ausfall einer Memcached-Instanz
Multi-Thread-Architektur erlaubt vertikale Skalierung der Rechnerkapazität Daten können nicht eingesehen werden, was das Debuggen erschwert
Ausgereifte Open-Source-Lösung mit offenem Datenspeicher Schlüssellänge der Werte ist auf 250 Zeichen begrenzt (1 MB)
Bietet einfache Handhabung und Flexibilität in der Anwendungsentwicklung Mangelnde Sicherheitsmechanismen erfordern zusätzliche Firewall
Unterstützt offene Datenformate und die meisten gängigen Clients bzw. Programmiersprachen Nicht redundant, d.h. keine Ausfallsicherheit durch Spiegelung oder Back-up der Daten

Wo wird Memcached eingesetzt?

Die Einsatzgebiete von Memcached umfassen das Caching und Speichern von Sitzungsdaten. Beim Caching werden zwischengespeicherte Elemente wie Dateien, Metadaten und Bilder blitzschnell bereitgestellt. Dies ermöglicht Ihnen eine kostengünstige Skalierung im Fall eines erhöhten Workloads und verbessert die Leistung der jeweiligen Anwendung. Entwickler nutzen den In-Memory-Speicher auch, um Sitzungsdaten wie Nutzerprofile oder den Sitzungsstatus auf Internetebene zu verwalten. Hierbei wird jedoch vorausgesetzt, dass die Persistenz der Daten kein wichtiges Kriterium ist. In den meisten Fällen ist Memcached eine gute Lösung, wenn Anwendungen einen hoch-performanten und groß angelegten Cache erfordern.

Erste Schritte mit Memcached

Die größten Stärken von Memcached sind ohne Zweifel seine Geschwindigkeit, Skalierbarkeit und die Tatsache, dass alle gängigen APIs und Sprachen unterstützt werden. Dazu zählen unter anderem Ruby, Java, JavaScript, Python, Go, PHP, C, C++, C# und Node.js. Zudem ist auch die Installation auf einem Windows- oder Unix-Betriebssystem nicht besonders kompliziert. Der Memcached-Daemon wird von Danga Interactive zum kostenlosen Download bereitgestellt. Neben dem passenden Entwicklerpaket benötigen Sie auch eine libevent-Bibliothek, die asynchrone Ereignisbenachrichtigungen ermöglicht. Je nach verwendeter Programmiersprache gibt es nach der Installation verschiedene Konfigurationsmöglichkeiten 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 mitgestaltet. Dies hat den Vorteil, dass Ihnen detaillierte Informationen zur Anwendung, Verwaltung und Problembehebungen für verschiedene APIs und Betriebssysteme online zur Verfügung stehen.