Open Source Software Tools und Tipps

WordPress mit Redis Caching

WordPress ist ein mächtiges Content Management System, das durchaus seine Schwierigkeiten mit der Ladezeit hat. Für mehr Performance gibt es zahlreiche Caching Plugins, die WordPress Seiten schneller machen sollen. Die meisten Plugins legen die Artikel entweder in der Datenbank ab oder generieren statische HTML Seiten, welche beim Artikel Aufruf geladen werden. So wird die Datenbank geschont und die Ladezeit wird deutlich verkürzt. Ich gehe da einen anderen Weg und setzte auf die zur NoSQL Familie gehörende In-Memory Datenbank Redis.

Was ist Redis?

Redis gehört zur NoSQL Familie und ist weniger für komplexe Datenstrukturen gedacht. Das Datenbanksystem arbeitet mit einer ganz einfachen Datenstruktur, die es hauptsächlich erlaubt Daten anhand eines Schlüssels (key) mit einem Wert (value) abzuspeichern. So wird überwiegend nur mit einfachen SET und GET Angaben gearbeitet. Hier ein kleines Beispiel in PHP mit der Predis Klasse:

<?php
// Daten Schlüssel zum Aufrufen
$key = "cms_version";

$client = new Predis\Client();

// Daten von Redis auslesen
$version = $client->get( $key ); 

// Ist kein Eintrag vorhanden, setze den Wert
if( is_null($version) ){
 $version = $client->set( $key, "Version 1.2.3" );
}

// Wert ausgeben
echo $version;

Eine Redis Installationsanleitung für Linux gibt es auf der offiziellen Seite (Quick Start) zu finden.

Redis Object Cache

Für meine Installation habe ich das WordPress Plugin Redis Object Cache installiert. Das Plugin muss nur installiert und aktiviert werden. Den Rest übernimmt das Plugin von alleine. Als einzige Optionen gibt es Flush Cache zum leeren der Datenbank und ein Knopf um das Caching zu deaktivieren.

Zwar gibt es eine kleine Übersicht mit welchen Verbindungsinformationen sich das Plugin auf die Redis Datenbank verbindet, doch das war es dann auch. Eine Anzeige wie viele Werte in der Datenbank liegen gibt es leider nicht.

[appbox wordpress redis-cache]

Ist mein Blog jetzt schneller?

Das ist schwer zu sagen. Einerseits habe ich Serverseitig schon die ein oder andere Performance Optimierungen vorgenommen, so dass netzware.net allgemein schon sehr schnell lädt. Anderer Seits merke ich das die Seite mit dem Redis Caching einen kleinen Schub bekommen hat. Ich spreche hier von wenigen Millisekunden.

Wenn ich mir die genaue Ladezeit in der Browser Konsole ansehe bleibt die Ladezeit gleich. Die meisten Artikel-Seiten laden in ungefähr. ~600ms. Mit und ohne Redis Caching. Könnt ihr eine bessere Ladezeit seit gestern wahrnehmen oder ist alles beim alten geblieben? Auf welche Caching Methoden setzt ihr?

Kommentare (3)

  1. Lt. Header wird dieses Blog mit Nginx betrieben. Nginx hat bereits ein eingebautes Interface für eine In-Memory-Datenbank, welche auch nach dem Key/Value-Prinzip arbeitet: memcached. Was dann nur noch fehlt ist ein WordPress-Plugin, welches fertige Seiten im memcached (mit einer Verfallszeit) ablegt: Cachify. Durch entsprechende Regeln in der Nginx-Konfiguration werden Seiten anschließend direkt von Nginx aus dem Speicher ausgeliefert. So setze ich das auf meinem Blog ein und bin durchweg zufrieden.

    • Auf der Konsole kann Redis getestet werden, in dem du dich per „redis-cli“ in Redis einloggst und den Befehl „monitor“ eintippst. Damit wird live in der Konsole angezeigt was Redis gerade schreibt und ausliest.

      Sehr hilfreich ist das Redis Cheat Sheet: http://lzone.de/cheat-sheet/Redis

Kommentare sind geschlossen.