memcached – RAM-Cache ist numal schneller

Wenn man eine Webseite hat die sehr viele Datenbankabfragen macht kann das eine Datenbank, und damit die Webseite, langsam machen. Wenn man nun ein paar Rechner hat auf denen etwas RAM „übrig“ ist kann man damit einen sehr schnellen RAM-Cache (ja, auch über mehrere Maschinen verteilt) für u.a. solche Datenbankabfragen bauen. Was eine große Geschwindigkeits- und Resourcenoptimierung sein kann da der Cache etwas Globaler funktioniert und nicht auf Threads o.ä. beschränkt ist.
APIs hierfür gibt es für Perl, PHP, Java, C und ein paar andere mehr.
Übrigends kann man diesen Cache auch für anderes als „nur“ Datenbankabfragen nutzen. 😉

 

HP: https://memcached.org/

Dependency: libevent & libevent-dev

Für den Daemon richte ich erstmal einen eigenen, unprivilierten, User „memcached“ an:
/etc/passwd: memcached:x:888:888:memcached:/var/tmp/memcache:/bin/false
/etc/shadow: memcached:*:13635::::::
/etc/group: memcached:x:888:

 

Installation:

Endweder via paketmanager (yum/zypper/apt-get) oder händisch:

/usr/local/src # wget http://www.memcached.org/files/memcached-1.4.37.tar.gz
/usr/local/src # tar xzf memcached-*.tar.gz
/usr/local/src # memcached-*/
/usr/local/src/memcached # ./configure && make && make test && make install && make clean

 

Starten:
(Mit 1GB RAM-Cache, nur local; „man memcached“)
# memcached -d -u memcached -m 1024 -p 1888 -l 127.0.0.1

Das Startscript ist Hausaufgabe. 😉

 

Anschließend die APIs
Für Perl:
/usr/local/src/memcached # cpan -i Cache::Memcached
( Dokumentation: http://search.cpan.org/dist/Cache-Memcached/lib/Cache/Memcached.pm )

Für PHP:
http://pecl.php.net/get/memcache-2.1.2.tgz
PHP muss mit „–enable-memcache[=DIR]“ kompiliert sein/werden und in der php.ini muss „extension=memcache.so“ hinzugefügt werden.
( Dokumentation: http://de.php.net/memcache )

Für Java:
http://www.whalin.com:81/memcached#download
( Dokumentation: http://www.whalin.com/ )

Die Restlichen APIs lasse ich jetzt mal aus.

Und das wars auch schon.
Der memcached ansich kann im Prinzip alles Cachen was man möchte. Nicht nur Datenbankabfragen.