Redis Support mit ISPConfig

,

Redis ist eine In-Memory-Datenbank und liegt demzufolge im Arbeitsspeicher. Die Abfragen einer solchen Datenbank erfolgen somit wesentlich schneller als die Abfrage eine Datenbank, die auf der Festplatte gespeichert ist. Mit Redis ist es möglich, aus einer Website noch mehr Leistung herauszuholen. Als Beispiel sei hier nur das Speichern der Sessions aufgeführt, was sich ausgesprochen positiv auf die Ladezeit auswirkt.

Um die PHP-Sessions in eine Redis Instanz abzuelegen, musst Du nur in ISPConfig eine Redis Instanz für die Webseite erstellen und danach die Einstellungen für die php.ini um den „Session Save Handler“ für Redis erweitern. Danach musst Du evtl. noch die Konfiguration Deines CMS oder Shopsystems anpassen.

Mögliche Einstellungen für eine Redis Instanz

Die für eine Webseite eingerichtete und abgesicherte Redis Instanz ist fest mit der Webseite verbunden und kann die folgenden Werte haben:

  • Max. 10 Datenbanken
  • Max. Größe der Datenbank: Es stehen 50 % des auf dem Server verfügbaren Arbeitspeichers zur Verfügung.
  • Individuelle MaxMemory Policy um zu entscheiden, wie sich Redis verhält, wenn der Arbeitsspeicher voll ist.
  • Automatische Vergabe eines Ports
  • Automatische Vergabe eines Passwortes
  • Zugriff auf Logfiles

Redis für eine Webseite einrichten

Unter Webseite öffnest Du das Menü „Redis Databases“ und legst über den Button „Neue Redis Instanz anlegen“ eine neue Redis Instanz an.

Wähle die passende Webseite aus und gib der Instanz einen Namen. Zusätzlich kannst Du noch die maximale Anzahl der Datenbanken und die Gesamtgröße festlegen.
Die Größe ist auf max. 50% des Arbeitsspeichers limitiert. Wenn Du hier „-1“ einträgst, wird automatisch der maximale Wert genommen. Beachte aber unbedingt, dass andere Dienste auf Deinem Server auch Arbeitsspeicher benötigen.

 

Redis Richtlinien

Unter Richtlinien kannst Du verschiedene Regeln definieren, wie sich die Redis Datenbank verhält, wenn ihr Speicher ausgeschöpft ist.

  • noeviction Fehler zurückgeben, wenn die Speichergrenze erreicht wurde und der Client versucht, Befehle auszuführen, die zu mehr zu verwendendem Speicher führen könnten (die meisten Schreibbefehle, aber DEL und einige weitere Ausnahmen).
  • allkeys-lru Schlüssel entfernen, indem versucht wird, die weniger kürzlich verwendeten (LRU-)Schlüssel zu entfernen, um Platz für die neu hinzugefügten Daten zu schaffen.
  • volatile-lru Schlüssel entfernen, indem versucht wird, zuerst die weniger kürzlich verwendeten (LRU-)Schlüssel zu entfernen, aber nur unter den Schlüsseln, die einen Expire-Satz haben, um Platz für die neu hinzugefügten Daten zu schaffen.
  • allkeys-random Schlüssel nach dem Zufallsprinzip entfernen, um Platz für die neu hinzugefügten Daten zu schaffen.
  • volatile-random Schlüssel nach dem Zufallsprinzip ersetzen, um Platz für die neu hinzugefügten Daten zu schaffen, aber nur Schlüssel mit einem expire set ersetzen.
  • volatile-ttl Schlüssel mit einem expire set entfernen und versuchen, zuerst Schlüssel mit einer kürzeren Lebenszeit (TTL) zu entfernen, um Platz für die neu hinzugefügten Daten zu schaffen.

Redis-Instanz bearbeiten

Wenn Du eine Redis Instanz angelegt hast, kannst Du z.B. die Richtlinie und die Datenbank-Größe jederzeit ändern. Du musst dazu nur in ISPConfig die entsprechende Instanz öffnen.

PHP-Direktive eintragen

Wenn PHP die Redis Datenbank als Session Speicher nutzen soll, dann musst Du as in den individuellen php.ini Einstellungen eintragen. Auch hierzu kannst Du ISPConfig benutzen – wenn nichts anderes eingestellt ist, nutzt PHP für den Session Speicher die Datenbank 0 der Redis Instanz.

Öffne in ISPConfig die Webseite und wähle den Reiter „Optionen“. Unter „Individuelle php.ini Einstellungen“ klickst Du dann nur noch auf „[Redis Session Save Handler]“. Damit ist die Datenbank 0 der Redis-Instanz für PHP-Sessions eingetragen.

 

Mehr über Redis

Redis Dokumentation (in englisch)