Memcached ist ein als FOSS veröffentlichter Cache-Server, der beliebige Daten im Arbeitsspeicher eines Servers für einen erneuten Abruf vorhält. Eingesetzt wird er vor allem bei dynamischen Webseiten zur Leistungsverbesserung, die eine Aufrufzahl haben. Beispiele dafür sind unter anderem Wikipedia, Twitter und Youtube."> Memcached ist ein als FOSS veröffentlichter Cache-Server, der beliebige Daten im Arbeitsspeicher eines Servers für einen erneuten Abruf vorhält. Eingesetzt wird er vor allem bei dynamischen Webseiten zur Leistungsverbesserung, die eine Aufrufzahl haben. Beispiele dafür sind unter anderem Wikipedia, Twitter und Youtube." />

Memcached auf dem Uberspace

Memcached ist ein als FOSS veröffentlichter Cache-Server, der beliebige Daten im Arbeitsspeicher eines Servers für einen erneuten Abruf vorhält. Eingesetzt wird er vor allem bei dynamischen Webseiten zur Leistungsverbesserung, die eine Aufrufzahl haben. Beispiele dafür sind unter anderem Wikipedia, Twitter und Youtube.

Memcached speichert Daten in einem Key-Value Verfahren temporär oder dauerhaft im Arbeitsspeicher. Gedacht ist dieses Verfahren vor allem für die temporäre Speicherung von Ergebnissen aus Datenbankabfragen.

Installation auf dem Uberspace

Die eigentliche Installation von memcached gestaltet sich dank Toast sehr einfach. Tatsächlich ist dafür nur der Befehl toast arm memcached notwendig.

Jetzt können wir memcached direkt in der Konsole aufrufen. Dies hat aber diverse Nachteile. So würde bei einem direkten Aufruf ohne Argumente memcached für alle Nutzer des Servers offen sein. Deshalb starten wir memcached mit der Option -s [file]. Dadurch können wir einen UNIX-Socket an dem entsprechenden Ort erstellen.

Nun wollen wir mit Hilfe der daemontools daraus einen immer laufenden Dienst machen. Wir richten uns also wie dort beschrieben ein eigene Instanz ein:

$  test -d ~/service || uberspace-setup-svscan

Dann erstellen wir den memcached-Daemon:

$ mkdir ~/etc/run-memcached
$ cat <<__EOF__ > ~/etc/run-memcached/run
#! /bin/sh
exec memcached -s /home/may/memcached.socket 2>&1
__EOF__
$ chmod +x ~/etc/run-memcached/run

Nun folgt noch das Logging:

$ mkdir ~/etc/run-memcached/log
$ cat <<__EOF__ > ~/etc/run-memcached/log/run
#! /bin/sh
exec multilog t ./main
__EOF__
$ chmod +x ~/etc/run-memcached/log/run

Damit dies nun auch wirklich als Daemon läuft müssen wir noch einen Symlink nach ~/service/ anlegen:

$ ln -s ~/etc/run-memcached ~/service/memcached

Jetzt können wir unter /home/USER/ den Unix Socket finden.

Integration in PHP

Für die Integration in PHP benutzen wir das PECL Modul Memcached. Da dies die Bibliothek libmemcached vorraussetzt gestaltet sich die Installation zur Zeit ein bisschen umständlicher. Denn wir müssen diese zuerst installieren.

Einmal der gesamte Installationsprozess:

$ toast arm libmemcached
[Hier folgt nun eine lange Ausgabe, die ich hier weglasse]
$ pear config-create ~ ~/.pearrc
$ uberspace-install-pecl memcached

Danach ist die PECL-Erweiterung installiert und kann sofort verwendet werden. Da wir memcached über einen UNIX-Socket verwenden wollen, müssen wir ihn in PHP beispielsweise so einbinden:

<?php
$m = new Memcached();
$m->addServer('/home/USER/memcached.socket',0);
$m->set('testkey', 'Hallo Welt');
echo $m->get('testkey');
?>

Speichern wir dies in einer Datei und führen die aus, so erhalten wir "Hallo Welt".

Weitere Funktionen und eine weitergehende Dokumentation zu Memcached findet sich unter http://www.php.net/manual/de/book.memcached.php.

Facebook Twitter Google+ WhatsApp

von Florian Schmidt

Gründer von Netzleben. Studiert IT System Engineering am Hasso-Plattner-Institut in Potsdam. Kauft viel zu viel Technik online ein. Liebt Kekse.

Hinterlasse einen Kommentar

Kommentare

Tobias

Die Installation über “$ toast arm memcached” funktioniert bei mir nicht.
Überall kommt 404 – File not found!

Gruß Tobi

Hierauf antworten

schmidtflo

Hast du in deinem Befehl das $-Zeichen mit geschrieben? Das muss nämlich weg bleiben, es dient hier nur dazu klar zu machen, was Shell-Befehl ist und was Ausgabe ist.

Hierauf antworten

F1nn

Leider hat diese Anleitung bei mir nicht funktioniert. Mit Hilfe des Uberspace-Supportes habe ich es letztendlich doch geschafft. Folgende Befehle habe ich der Reihe nach verwendet:

  1. $ toast arm http://memcached.org/files/memcached-1.4.20.tar.gz
  2. $ test -d ~/service || uberspace-setup-svscan
  3. $ uberspace-setup-service memcache /usr/bin/memcached -s $HOME/memcached.sock
  4. $ toast arm https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
  5. $ pear config-create ~ ~/.pearrc
  6. $ uberspace-install-pecl memcached

Dann muss im Testscript folgendet Pfad verwendet werden: ‘/home/USER/memcached.sock’ STATT ‘/home/USER/memcached.socket’

Hierauf antworten

Manuel

Vielen Dank für den Originalartikel und die Ergänzung von F1nn!

Wer (wie ich) Memcached für das Wordpress-PlugIn "W3 Total Cache" einrichten möchte, setzt (nach den oben beschriebenen Schritten; die aktuellen tar.gz-Pakete sind auf den jeweiligen Homepages referenziert) in den "Advanced"-Sections der Konfigurationsbereiche "[Page|Database|Object|Browser] Cache" den Eintrag "Memcached hostname:port / IP:port:" auf "//home/USER/memcached.socket" (mit zwei Backslash am Beginn).

Der in einigen Anleitungen angegebene Eintrag "unix:/home/USER/memcached.socket" funktionierte bei mir (W3 TC 0.9.5.4 auf WP 4.8) NICHT.

Hierauf antworten

Tjommel

Hallo,
ich habe da mal eine Frage der php.ini betreffend.
Wenn ich memcached als session handler verwenden möchte so muss ich ja nur folgendes in der php.ini einstellen:

session.save_handler = memcache
session.save_path = “127.0.0.1:11211″

Leider bekomme ich dann Fehler das auf die session datein nciht geschrieben werden kann, da der save_path falsch wäre. Was wäre denn der richtige für uberspace?

Hierauf antworten

Uli

Hallo,

vielen Dank für deine Arbeit und diese Anleitung. Konnte damit alles auf meinem uberspace installieren. Allerdings verlangt nun Drupal mindestens PECL Memcache version 3.0.6. Kannst du vielleicht schreiben, wie man seine Version updaten kann? Bei mir ist nun die 2.2.7 installiert.

Hierauf antworten

Clemens

Hallo,

Danke für die Anleitung.

Ich bekomme leider nach kürzester Zeit von Uberspace eine automatische E-Mail, dass der Dienst deaktiviert wurde, weil er nicht richtig funktioniert.
Im Log file steht: &#34;Keine Berechtigung&#34;.

Hast Du eine Idee, wie ich das Problem beheben kann? Habe alles 1:1 so ausgeführt, wie von Dir beschrieben.

Vielen Dank!

Hierauf antworten