Shopware mit Redis verbinden

Shopware 5 und Redis verbinden

Redis ist eine In-Memory Datenbank, deren Inhalte besonders schnell gelesen und geschrieben werden können, weil diese direkt im Arbeitsspeicher des Servers verarbeitet werden. Die Community Edition von Shopware 5 kann, laut Dokumentation, von Haus aus die Sessions, den Backend Cache und den Model Cache in Redis ablegen.

In diesem Beitrag wollen wir zeigen, wie Sie Shopware 5 mit einer Redis Instanz konfigurieren. Bitte beachten Sie: Diese Anleitung ist auf Basis der Shopware Version 5.6.8 erstellt. Redis als Cache Backend ist ab Shopware 5.3 implementiert. Es kann jedoch sein, dass bei früheren Versionen Feature nicht funktionieren. Mögliche Bugs können wir im Rahmen dieser Anleitung nicht berücksichtigen.

Redis Instanz mit 3 Datenbanken anlegen

Damit Sie die entsprechenden Informationen in Redis ablegen können, erstellen Sie im ersten Schritt eine Redis Instanz mit mindestens 3 Datenbanken. Wie Sie eine Redis Instanz anlegen, haben wir in der Anleitung Redis Instanz einrichten zusammengefasst. In Schritt 4 im Formular bei "Max. Anzahl Datenbanken" tragen Sie bitte mindestens 3 ein, da Sie 3 Datenbanken benötigen. Sie können auch eine bestehende Redis Instanz bearbeiten und die Anzahl der Datenbanken anpassen.

Notieren Sie sich die Zugangsdaten

Nach dem Speichern und einem Klick auf die Redis Intanz, werden uns die jeweiligen Zugangsdaten und Pfade angezeigt. Sie finden alle Redis Datenbanken unter "Webseiten"  im Untermenü "Redis Datenbanken".


Notieren Sie sich:

  • Redis Socket Pfad
  • Redis Passwort

Ergebnis: Die Zugangsdaten haben Sie notiert!


Redis als Session Speicher einrichten

Im Standard speichert Shopware die Informationen einer Session in eine SQL Datenbank (MariaDB / MySQL). Bei jedem Seitenaufruf werden also Informationen über den Besucher verarbeitet, aus der (SQL) Datenbank gelesen und / oder in die (SQL) Datenbank geschrieben. Mithilfe der Sessions kann sich ein User durch einen Shop klicken, ohne dass er seinen Warenkorb verliert. Außerdem wird zum Beispiel der Login-Status festgehalten, die zuletzt angesehenen Artikel gespeichert und vieles mehr, was das Shoppen für den Besucher im Shop einfacher macht.

Dadurch, dass die Informationen zu der Session in Redis abgelegt werden, gewinnt man Performance-Vorteile, weil das Aktualisieren einer Information in Redis keine blockierende Eigenschaft hat und die Information direkt im Arbeitsspeicher des Servers abgelegt wird.

Damit php die Anweisung bekommt, die Session Informationen in Redis zu speichern, müssen wir noch die php.ini Einstellung anpassen.

Managed vServer, Managed Server & Cloud: Loggen Sie sich bitte über Ihr Server Control Panel ein.


1

  • Loggen Sie sich ein (siehe Hinweis).
  • Wählen Sie im Hauptmenü den Punkt "Webseiten".

Ergebnis: Die Seite "Webseiten" wird angezeigt.



2

  • Es werden alle zu verwaltenden Websites aufgelistet.
  • Die entsprechende Website für die Konfiguration anklicken.

Ergebnis: Die Seite Webseite wird angezeigt.



3

  • Es gibt mehrere Bereiche für die Konfiguration der Webseite.
  • Hier den Reiter Optionen wählen.

Ergebnis: Das Formular Optionen wird angezeigt.



4

  • Füllen Sie das Feld individuelle php.ini-Einstellungen aus.
  • Dafür die vorgefertigte Konfiguration [Redis Session Save Handler.] anklicken.
  • Die Eingabe mit dem grünen Button Speichern bestätigen.

Ergebnis: Die Platzhalter werden mit den Daten aus der Redis Instanz befüllt und in die php Konfiguration geschrieben.


config.php bearbeiten

In der config.php erhält Shopware zusätzlich noch die Anweisung die entsprechenden Daten aus Redis abzurufen bzw. dort auch abzuspeichern.

Bevor man beginnt die config.php Einstellungen zu verändern, sollte man sich eine Kopie der Datei im Ordner private/ ablegen.


config.php öffnen

Sie müssen Ergänzungen in der config.php vornehmen.

  • Loggen Sie sich mit Ihrem FTP-Zugang ein.
  • Wählen Sie "web" und danach "config.php".
  • Öffnen Sie mit einem Editor die Datei.

Ergebnis: Die config.php ist geöffnet!



Session Konfiguration

Beispiel Konfiguration für Frontend und Backend Sessions im Redis (Shopware-Doku)
Ersetzen Sie alle nötigen Angaben.

// Sessions für Backend und Frontend im Redis in der DB0
  'session' => [
      'save_handler' => 'redis',
      'save_path' => '/var/www/clients/clientX/webY/private/redis.sock?database=0&auth=RedisPASSWORT',
  ],

  'backendsession' => [
      'save_handler' => 'redis',
      'save_path' => '/var/www/clients/clientX/webY/private/redis.sock?database=0&auth=RedisPASSWORT',
  ],


Model Cache

Beispiel Konfiguration für Model Cache im Redis (Shopware-Doku).
Ersetzen Sie alle nötigen Angaben.

// Models Cache im Redis in der DB1
  'model' => [
      'redisHost' => '/var/www/clients/clientX/webY/private/redis.sock',
      'redisPort' => '0',
      'redisDbIndex' => '1',
      'cacheProvider' => 'redis',
      'redisAuth' => 'RedisPASSWORT'
  ],



Backend Cache

Beispiel Konfiguration für Backend Cache im Redis.
Ersetzen Sie alle nötigen Angaben.

// Shopware Backend Cache im Redis in der DB2
  'cache' => [
          'backend' => 'redis',
          'backendOptions' => [
              'servers' => [
              [
              'host' => '/var/www/clients/clientX/webY/private/redis.sock',
              'port' => '0',
              'redisAuth' => 'RedisPASSWORT',
              'redisDbIndex' => '2',
              ],
          ],
      ],
  ],



Shopware config.php

Die gesamte Konfiguration sieht in unserem Beispiel dann so aus.
Ersetzen Sie alle nötigen Angaben.


<?php return array (
  
// MySQL / MariaDB Datenbank-Zugansgdaten
  'db' =>
  array (
    'host' => 'localhost',
    'port' => '3306',
    'username' => 'DATENBANKUSERNAME',
    'password' => 'DBUserPasswort',
    'dbname' => 'DATENBANKNAME',
  ),

// Sessions für Backend und Frontend im Redis in der DB0
  'session' => [
      'save_handler' => 'redis',
      'save_path' => '/var/www/clients/clientX/webY/private/redis.sock?database=0&auth=RedisPASSWORT',
  ],

  'backendsession' => [
      'save_handler' => 'redis',
      'save_path' => '/var/www/clients/clientX/webY/private/redis.sock?database=0&auth=RedisPASSWORT',
  ],

// Models Chache im Redis in der DB1
  'model' => [
      'redisHost' => '/var/www/clients/clientX/webY/private/redis.sock',
      'redisPort' => '0',
      'redisDbIndex' => '1',
      'cacheProvider' => 'redis',
      'redisAuth' => 'RedisPASSWORT'
  ],

// Shopware Backend Cache im Redis in der DB2
  'cache' => [
          'backend' => 'redis',
          'backendOptions' => [
              'servers' => [
              [
              'host' => '/var/www/clients/clientX/webY/private/redis.sock',
              'port' => '0',
              'redisAuth' => 'RedisPASSWORT',
              'redisDbIndex' => '2',
              ],
          ],
      ],
  ],
  
);




config.php hochladen

  • Loggen Sie sich mit Ihrem FTP-Zugang ein.
  • Wählen Sie "web".
  • Laden Sie die bearbeitete Datei "config.php" wieder hoch.

Ergebnis: Die config.php ist angepasst und hochgeladen.


Cache leeren & aufräumen.

Dadurch, dass die Sessions und weitere Daten anders gespeichert werden als bisher, muss der Shopware 5 Cache einmal geleert werden. Das lässt sich sehr schnell in der Shell (Anleitung Shell Benutzer anlegen) mit der Shopware Console erledigen.

cd /var/www/website-name.tld/web/
php bin/console sw:cache:clear

Hier muss beachtet werden, dass man sich im richtigen Verzeichnis befindet. Sollte der Document Root abweichend sein, muss man die Pfade im Beispiel entsprechend anpassen. Wer einen Shell User ohne Jailkit benutzt, müsste hier vorher noch die PHP-Version der Seite im ISPConfig ablesen und dann den vollen Pfad zur PHP-Binary nutzen. Wenn man PHP 7.3.1 benutzt, würde das so aussehen:

cd /var/www/website-name.tld/web/
/opt/php-7.3.1/bin/php bin/console sw:cache:clear

Fragen & Antworten

Es gibt mehrere Möglichkeiten, die übersehen oder vergessen worden sein können. Probieren Sie bitte folgendes:

  • Prüfen Sie in der config.php, ob alle Klammern (]) und Kommas (,) korrekt gesetzt sind. Wie schnell übersieht man hier etwas.
  • Wurden die php.ini Einstellungen gespeichert?
  • Wurde der Cache korrekt geleert?
  • Gegebenenfalls einen Blick in das error.log werfen. Das kann bei der Fehlersuche hilfreich sein: "Fehlermeldung, was kann ich tun?"

Geschafft: Sie haben Redis und Shopware 5 verbunden und den Cache geleert!

Finden Sie den passenden Tarif

Unser Tarifberater hilft Ihnen dabei, das passende Paket zu finden. Bei Fragen berät Sie unser Sales-Team sehr gerne unter +49 (0) 4131 / 22 78 1-25 oder sales@timmehosting.de.

Bitte beachten Sie: Der Tarifberater dient nur der groben Orientierung. Ihr tatsächlicher Bedarf kann durch den Ressourcenbedarf Ihrer Anwendung(en), tageszeitabhängige/saisonale/aktionsbedingte Schwankungen des Besucheraufkommens, geplantes Wachstum und weitere Faktoren von der Empfehlung abweichen.

  • 1
  • 2
  • 3
  • 4
  • 5

Was möchten Sie hosten?

Möchten Sie einen oder mehrere Shops hosten? (Eine Multishop-Installation gilt als ein Shop.)

Möchten Sie eine oder mehrere Websites hosten? (Eine Multisite-Installation gilt als eine Website.)

Wieviele Besucher haben Sie insgesamt pro Tag?

Wieviele Besucher haben Sie insgesamt pro Tag?

Wieviele Besucher haben Sie insgesamt pro Tag?

Wieviele Artikel haben Sie insgesamt in Ihrem Shop/Ihren Shops (inkl. Varianten)?

Wieviele Artikel haben Sie insgesamt in Ihrem Shop/Ihren Shops (inkl. Varianten)?

Wieviel Speicherplatz benötigen Sie insgesamt?

Wieviel Speicherplatz benötigen Sie insgesamt?

Wieviel Speicherplatz benötigen Sie insgesamt?

Wir empfehlen Ihnen unser

Managed vServer Hosting

Zu den Managed vServer Paketen

Managed Server Hosting

Zu den Managed Server Paketen

Private Cloud Hosting

Zu den Private Cloud Paketen