Anleitung zur Verbindung von Shopware 6 und Redis

Shopware 6 unterstützt die Redis Datenbank für alle Cache Adapter. Laut der Dokumentation von Shopware werden Sessions und alle Cache Adapter unterstützt.

Im folgenden Abschnitt erklären wir Ihnen, wie Sie Shopware 6 mit einer Redis Instanz verbinden und konfigurieren. Wählen Sie dafür unter dem Titel Ihre Shopware-Version aus.

Diese Anleitung wurde mit Shopware 6.5.0.0 geprüft.

Anleitung für Shopware 6.6 und 6.7 in Prüfung

Die folgende Konfiguration haben wir mit Shopware 6.5 geprüft. Für Shopware 6.6 und 6.7 prüfen wir sie derzeit, weil sich dort die Einbindung von Redis geändert hat. Bis die geprüfte Fassung hier steht, richtet unser Support Redis gern für Sie ein. Schreiben Sie dazu an kundenservice@enerspace.de.

Stand: 10.07.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.

Aus Sicherheitsgründen ist zur Zeit der Redis Cache nur über eine *.sock Datei erreichbar. In Zukunft werden von uns automatisch Ports zur verfügung gestellt.

NameValue
maxmemory256mb
maxmemory-policyvolatile-lfu
databases10
port0
Information Redis Verdrängungsstrategie

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. Entfernt unter den Schlüsseln mit Ablaufzeit (TTL) die am seltensten verwendeten.
  • 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.

Shopware 6 vorbereiten

In Shopware 6 müssen 3 Verschiedene Dateien hinzugefügt/bearbeitet werden damit Redis als Cache Adapter eingesetzt werden kann.

  • config/packages/redis_enerspace.yaml
  • .env.local

Die individuellen Einstellungen für den Radis Cache fügen wir am Ende der .env Datei von Shopware 6 ein. Die .env Datei befindet sich oberhalb des /public Ordners von deiner Shopware 6 Instanz. Bevor man beginnt die .env Datei anzupassen, sollte eine Sicherheitskopie im Ordner private/ abgelegt werden.

Verzeichnisse oder Dateien, die mit einem Punkt beginnen, also beispielsweise .env oder .ssh, werden üblicherweise unter Linux versteckt. Es kann daher sein, dass Ihr SCP oder Ihr FTP Programm nicht alle Dateien auflistet. Dieses Verhalten lässt sich üblicherweise über die Einstellung des jeweiligen Programmes ändern.

Tipp

Unser Datei-Manager im Plesk Panel zeigt immer alle Dateien an.


redis_enerspace.yaml

Navigieren Sie in den Ordner config/packages/ und erstellen Sie die Datei: redis_enerspace.yaml.

Bitte verwenden Sie in *.yaml Datei ausschließlich leerzeichen und keine Tabs. Tabs führen entweder zu einer Fehlermeldung oder einer weißen Seite.

Fügen Sie den folgenden Code hinzu:

config/packages/redis_enerspace.yaml
yaml
parameters:
    app.es.redis.session.socket: "%env(REDIS_ES_SESSION_SOCKET)%"
    app.es.redis.session.password: "%env(REDIS_ES_SESSION_PASSWORD)%"
    app.es.redis.session.database: "%env(int:REDIS_ES_SESSION_DATABASE)%"
    app.es.redis.cache.socket: "%env(REDIS_ES_CACHE_SOCKET)%"
    app.es.redis.cache.password: "%env(REDIS_ES_CACHE_PASSWORD)%"
    app.es.redis.cache.database: "%env(int:REDIS_ES_CACHE_DATABASE)%"
    
services:
    Redis:
        class: Redis
        calls:
            - method: connect
              arguments:
                  - "%app.es.redis.session.socket%"
            # uncomment the following if your Redis server requires a password
            #- method: auth
            #  arguments:
            #      - "%app.es.redis.session.password%"
            - method: select
              arguments:
                  - "%app.es.redis.session.database%"

    Symfony\Component\HttpFoundation\Session\Storage\Handler\RedisSessionHandler:
        arguments:
            - "@Redis"

framework:
    cache:
        app: cache.adapter.redis
        system: cache.adapter.redis
        pools:
            cache.serializer:
                adapter: cache.adapter.redis
            cache.annotations:
                adapter: cache.adapter.redis
            cache.property_info:
                adapter: cache.adapter.redis
            cache.messenger:
                adapter: cache.adapter.redis
            cache.property_access:
                adapter: cache.adapter.redis
            cache.object:
                default_lifetime: 3600
                adapter: cache.adapter.redis
            cache.http:
                default_lifetime: 3600
                adapter: cache.adapter.redis
        default_redis_provider: "redis://%app.es.redis.cache.password%@%app.es.redis.cache.socket%/%app.es.redis.cache.database%"
    session:
        handler_id: Symfony\Component\HttpFoundation\Session\Storage\Handler\RedisSessionHandler

Datei: .env.local

Öffnen Sie die Datei .env in Ihrem Hauptverzeichnis von Shopware 6. Fügen Sie der Datei am Ende bitte den folgenden Code hinzu:

Bitte tauschen Sie [DOMAIN] mit dem Domain Namen aus, den Sie unter dem Pfad: /var/www/vhosts/ finden können. Zum Beipsiel: enerspace.de.

.env.local
dotenv
# Sollten eine Testumgebung erstellt werden, müssen in der Testumgebung
# die Variablen: REDIS_ES_SESSION_DATABASE und REDIS_ES_CACHE_DATABASE angepasst werden
# oder Die Datei config/packages/redis_enerspace.yaml gelöscht werden.
# Anschließend muss der Cache geleert werden.
REDIS_ES_SESSION_SOCKET="/var/www/vhosts/[DOMAIN]/private/redis.sock"
REDIS_ES_SESSION_PASSWORD=""
REDIS_ES_SESSION_DATABASE="0"

REDIS_ES_CACHE_SOCKET="/var/www/vhosts/[DOMAIN]/private/redis.sock"
REDIS_ES_CACHE_PASSWORD=""
REDIS_ES_CACHE_DATABASE="1"

Sie können sich hier die fertigen Konfigurationsdateien als zip Archiv herunter laden. Bitte passen Sie vorher die .env Datei an, bevor Sie diese Dateien in Ihre Instanz übernehmen, sonst kommt es zu einer Fehlermeldung oder weißen Seite. sw6redis.zipsw6redis.zip  993B


Cache leeren

Bevor die neue Konfiguration greift, muss der Shopware 6 Cache geleert werden. Der Cache kann entweder im Backend oder per SSH geleert werden. Im Backend befindet sich die Einstellung unter Einstellungen -> System / Caches & Indizes. Bitte drücken Sie hier auf Caches leeren.


Cache über die SSH Console leeren

bash
cd httpdocs
php bin/console cache:clear

Anleitung für Shopware 6.6 und 6.7 in Prüfung

Die Schritte für Shopware 6.6 und 6.7 prüfen wir derzeit. Bis die geprüfte Fassung hier steht, richtet unser Support Redis gern für Sie ein. Schreiben Sie dazu an kundenservice@enerspace.de.