• This forum has a zero tolerance policy regarding spam. If you register here to publish advertising, your user account will be deleted without further questions.

HOWTO memcached

Darkdream

Registered User
Wie der Titel schon sagt geht es um die Installation von memcached. Memcached ist ein Caching System, man setzt es ein um die Performance von Dynamischen Seiten zu steigern. Es wird hierfür eine Art Ramdrive angelegt, wo die gecachten Objekte gespeichert werden. Ich habe per Google nicht wirklich brauchbare Informationen dazu gefunden, also hab ich mir gedacht ich schreib einmal ein HowTo (mein Erstes übrigens, bin also für konstruktive Kritik gerne zu haben).

Memcached braucht als Voraussetzung libevent. Falls ihr das schon installiert habt, könnt ihr diesen Punkt überspringen.

Code:
cd /usr/src/
wget http://www.monkey.org/~provos/libevent-1.2a.tar.gz
tar xzvf libevent-1.2a.tar.gz
cd libevent-1.2a
./configure && make && make install
make verify
Wenn make verfiy überall mit OKAY durchläuft dann hat es bei der Installation keine Fehler gegeben. Wenn ihr Fehler hattet --> Google oder Dokumentation von LibEvent :p

Jetzt gehts an die eigentliche Installation von Memcached.

Code:
cd /usr/scr/
wget http://www.danga.com/memcached/dist/memcached-1.2.1.tar.gz
tar xzvf memcached-1.2.1.tar.gz
cd memcached-1.2.1/
./configure && make && make install

Eigentlich sollte Memcached nun Einsatzbereit sein, jedoch bei mir war der Fehler, dass die LibEvent Libary nicht gefunden werden konnte. Also müssen wir Memcached noch dazu bringen, dass es uns sagt wo es nach den Libaries sucht. Dies geschieht mit:
Code:
LD_DEBUG=libs memcached -v
Danach die libevent-1.2a.so.1 einfach in einen der Ordner kopieren. Bei mir war das Problem mit einem
Code:
cp /usr/local/lib/libevent-1.2a.so.1 /usr/lib/libevent-1.2a.so.1
gelöst.

Der letzte Schritt ist das Starten von Memcached. Memcached läuft nicht unter root. Also einfach einen neuen Benutzer mit yast (Suse), adduser (debian) oder einfach mit dem allgemeinen Befehlt useradd anlegen.

Gestartet wird Memcached nun folgendermaßen:
Code:
./memcached -d -m 2048 -l 123.123.123.123 -p 11211 -u USERNAME

Zur Erklärung der Parameter:
-m Größe des Caches im Arbeitsspeicher in MB
-l IP auf der der Daemon lauschen soll
-p Port auf dem gelauscht werden soll
-u Der Username mit dem der Daemon gestartet werden soll. Beachtet, dass wenn ihr den User schon gewechselt habt (also nicht mehr als root eingeloggt seid) braucht ihr den -u USERNAME Teil nicht mehr.

Nachdem ihr jetzt keine Fehlermeldungen bekommen habt, ist Memcached einsatzbereit ;)

Jetzt stellt sich nur noch die Frage, wie man dieses kleine aber feine Tool verwendet.

Vorher:
PHP:
function get_foo (int userid) {
   result = db_select("SELECT * FROM users WHERE userid = ?", userid);
   return result;
}
Quelle: Wikipedia

Nacher:
PHP:
function get_foo (int userid) {
    result = memcached_fetch("userrow:" + userid);
    if (!result) {
        result = db_select("SELECT * FROM users WHERE userid = ?", userid);
        memcached_add("userrow:" + userid,  result);
    }
    return result;
}
Quelle: Wikipedia

-- EOF --
 
Last edited by a moderator:
Hallo,

sehr schönes HowTo.

Sehr gut finde ich vor allem das du auch erwähnt hast wozu das ganze gut ist und was die einzelnen Startoptionen bedeuten.
 
Gutes Howto, memcached läuft bei uns auf 3 DB - Backends, die sich alle den Cache brav teilen. Vielleicht noch die Möglichkeit erwähnen memcached im Netzwerk einzusetzen.
 
Hallo,

die Anleitung ist super.
Ich habe das nun mal durch.
Leider kann ich das aber irgendwie nicht ansprechen.
Der Dienst läuft bei mir und ich kann auch ein telnet auf Port 11211 machen.

Aber wenn ich ein kleines php-Skript starte, welches die memcache Klasse ansprechen soll, existiert sie einfach nicht.

Der Apache wurde auch neu gestartet...

Kann mir wer helfen ?

Danke
Gruß
Marco
 
Also soviel ich das jetzt verstanden hab tut der memcache nur die mySQL abfragen cachen oder hab ich da was falsch verstanden?
Macht es dann sinn smarty-cache mit memcache zu ergänzen? Eher nicht, oder?
 
Last edited by a moderator:
Du kannst (als Programmierer) damit alles Cachen was Du willst.
Das entscheidende ist nur, dass es im RAM liegen bleibt und nicht als Datei abgespeichert wird. Ob es sich in den Smarty einbauen läßt, weiß ich nicht.

huschi.
 
Back
Top