# Anleitung zur Verbindung von Shopware 5 und Redis

Ab der Version 5.3 ermöglicht Shopware 5 die Integration von Redis Datenbanken. Laut den offiziellen Shopware-Dokumenten werden dabei die Funktionen für Sessions, Backend Cache und Model Cache unterstützt.

Im folgenden Abschnitt präsentieren wir eine detaillierte Anleitung, wie man Shopware 5 mit einer Redis Instanz verbindet und konfiguriert. Bitte beachten Sie, dass diese Anleitung speziell auf der Version Shopware 5.7.10 basiert. Bei älteren Versionen kann es sein, dass bestimmte Funktionen oder Eigenschaften nicht wie erwartet funktionieren.

Stand: 11.05.2023


# Festgelegte Konfigurationen

In diesem Abschnitt werden wir die vordefinierten Einstellungen erläutern. Bitte beachten Sie, dass diese Einstellungen zurzeit festgelegt sind und daher nicht geändert werden können.

Wir arbeiten kontinuierlich daran, unser System zu verbessern und zu erweitern. In der Zukunft planen wir, zusätzliche Einstellmöglichkeiten einzuführen, die Sie nach Ihren Bedürfnissen konfigurieren können.

Name Value
maxmemory 256mb
maxmemory-policy volatile-lfu
databases 10
port 0

Wenn der Redis-Instanzspeicher voll ist und ein neuer Schreibvorgang eingeht, werden die Schlüssel von Redis entfernt, um Platz für den Schreibvorgang zu schaffen. Dieser Vorgang basiert auf der Maximalspeicherrichtlinie Ihrer Instanz. Die standardmäßige Richtlinie für maxmemory-policy für Redis ist volatile-lfu.

  • noeviction : Gibt einen Fehler zurück, wenn die Redis-Instanz den Höchstspeicher (maxmemory) erreicht. Daten werden nicht überschrieben oder entfernt.
  • allkeys-lfu : Verfügbar in Redis-Version 4.0 oder höher. Entfernt die am wenigsten verwendeten Schlüssel aus dem gesamten Keyset.
  • allkeys-lru : Entfernt die am weitesten in der Vergangenheit verwendeten (LRU) Schlüssel aus dem gesamten Keyset.
  • volatile-lfu : Verfügbar in Redis Version 4.0 oder höher. Löscht die am weitesten in der Vergangenheit verwendeten Schlüssel, die mit TTL-Ablauf (Lebensdauer) festgelegt sind.
  • volatile-lru : Entfernt die am weitesten in der Vergangenheit verwendeten (LRU)-Schlüssel, die mit TTL-Ablaufzeiten festgelegt sind.
  • allkeys-random : Entfernt zufällige Schlüssel aus dem gesamten Schlüsselbereich.
  • volatile-random : Entfernt zufällige Schlüssel aus den Schlüsseln mit TTL-Ablauf.
  • volatile-ttl : Entfernt die Schlüssel mit der kürzesten TTL aus den Schlüsseln mit TTL-Ablauf.

# Config.php

Die Einstellungen für den Radis Cache fügen wir direkt in der config.php von Shopware 5 ein. Die config.php finden wir in dem Shopware 5 Hauptverzeichnis. Bevor man beginnt die Datei config.php anzupassen, sollte eine Sicherheitskopie der Datei angelegt werden.


# Session Konfiguration

Beispiel Konfiguration für Frontend und Backend Sessions mit Redis.

Shopware Dokumentation
https://developers.shopware.com/sysadmins-guide/sessions/#configuration-0

config.php
    // Sessions für Backend und Frontend in der Datenbank 0 abspeichern
    'session' => [
        'save_handler' => 'redis',
        'save_path' => '/var/www/vhosts/[DOMAIN]/private/redis.sock?database=0',
    ],
    'backendsession' => [
        'save_handler' => 'redis',
        'save_path' => '/var/www/vhosts/[DOMAIN]/private/redis.sock?database=0',
    ],

# Model Cache

Beispiel Konfiguration für den Model Cache mit Redis.

Shopware Dokumentation
https://developers.shopware.com/developers-guide/shopware-config/#redis-configuration

config.php
    // Models Cache in der Datenbank 1 abspeichern
    'model' => [
        'redisHost' => '/var/www/vhosts/[DOMAIN]/private/redis.sock',
        'redisPort' => '0',
        'redisDbIndex' => '1',
        'cacheProvider' => 'redis'
    ],

# Backend Cache

Beispiel Konfiguration für den Backend Cache mit Redis.

Shopware Dokumentation
https://developers.shopware.com/developers-guide/shopware-config/#redis-configuration

config.php
    // Shopware Backend Cache in der Datenbank 2 abspeichern
    'cache' => [
        'backend' => 'redis',
        'backendOptions' => [
            'servers' => [
                [
                    'host' => '/var/www/vhosts/[DOMAIN]/private/redis.sock',
                    'port' => '0',
                    'dbindex' => '2'
                ],
            ],
        ],
    ],

# Komplette Shopware 5 config.php

Die komplette Shopware 5 Konfiguratione sieht in unserem Beispiel wie folgt aus.

Shopware Dokumentation
https://developers.shopware.com/developers-guide/shopware-config/#redis-configuration

config.php
<?php return [
    'db' => [
        'host' => 'localhost',
        'port' => '3306',
        'username' => '[database_username]',
        'password' => '[database_password]',
        'dbname' => '[database_name]',
    ],

    // Sessions für Backend und Frontend in der Datenbank 0 abspeichern
    'session' => [
        'save_handler' => 'redis',
        'save_path' => '/var/www/vhosts/[DOMAIN]/private/redis.sock?database=0',
    ],
    'backendsession' => [
        'save_handler' => 'redis',
        'save_path' => '/var/www/vhosts/[DOMAIN]/private/redis.sock?database=0',
    ],

    // Models Cache in der Datenbank 1 abspeichern
    'model' => [
        'redisHost' => '/var/www/vhosts/[DOMAIN]/private/redis.sock',
        'redisPort' => '0',
        'redisDbIndex' => '1',
        'cacheProvider' => 'redis'
    ],

    // Shopware Backend Cache in der Datenbank 2 abspeichern
    'cache' => [
        'backend' => 'redis',
        'backendOptions' => [
            'servers' => [
                [
                    'host' => '/var/www/vhosts/[DOMAIN]/private/redis.sock',
                    'port' => '0',
                    'dbindex' => '2'
                ],
            ],
        ],
    ],
];

# Cache leeren

Bevor die neue Konfiguration greift, muss vorher der Shopware 5 Cache geleert werden. Der Cache kann entweder im Backend oder per SSH geleert werden. Im Backend befindet sich die Einstellung unter Einstellungen -> Caches / Performance -> Cache. Bitte wählen hier alles aus und Leeren den kompletten Cache.


# Cache über die SSH Console leeren

cd httpdocs
php bin/console sw:cache:clear

#