Zum Hauptinhalt springen

Redis

Was ist Redis?

Für einen Webshop ist gute Performance ein echter Wettbewerbsvorteil. Damit du deine Ladezeiten weiter minimieren kannst, kannst du in allen Space-Server- und proSpace-Tarifen Redis nutzen. Wozu du die Datenbank verwenden kannst und wie du sie einrichtest, liest du hier.

Redis (kurz für Remote Dictionary Server) ist In-Memory-Datenbank und Key-Value-Store in einem. Das heißt: Anstatt auf der Festplatte werden deine Daten im Arbeitsspeicher abgelegt. Jeder Eintrag erhält seinen eigenen Schlüssel, über den er direkt abgerufen wird. Das sorgt für sehr kurze Zugriffszeiten.

Wozu brauche ich Redis?

Generell gilt: Redis macht deine Projekte schneller, wenn Daten schnell geschrieben und abgefragt werden. Dank der überragenden Performance lässt sich Redis ideal als Cache verwenden. Auch als Session-Storage für Shopsysteme ist die Datenbank beliebt.

Wie erstelle ich eine Redis-Datenbank?

Redis einzurichten ist einfach. Je nach CMS oder Shopsystem musst du jedoch einige Dinge beachten. Ich erkläre dir Schritt für Schritt, wie es geht.

Um eine Redis-Datenbank im mStudio zu erstellen, folge diesen Schritten:

  1. Navigiere zu dem Projekt, in dem du die Datenbank erstellen möchtest.
  2. Wähle im Seitenmenü den Punkt "Datenbanken".
  3. Klicke auf den Button "Datenbank erstellen" und wähle "Redis".
  4. Gib eine Beschreibung für die Datenbank ein und wähle die gewünschte Version.

Nachdem die Installation abgeschlossen ist, findest du die Host- und Port-Angaben in den Details unter "Verbindungsinformationen". Diese benötigst du für die Konfiguration deines Systems.

Redis als Session-Storage für PHP konfigurieren

Die php.ini-Datei liegt in deinem Projekt unter .config/php/php.ini. Füge den folgenden Code ein:

extension=redis.so
session.save_handler = redis
session.save_path = "tcp://HOST:PORT?database=15"

Ändere nun du die Variablen HOST und PORT. Dafür verwendest du die Angaben aus den Verbindungsinformationen.

Jede Redis Datenbank hat standardmäßig 16 Datenbanken, die von 0 bis 15 angesprochen werden können.

Übliche Anwendungen einrichten

Shopware 6

Die Konfiguration für Redis trägst du in deiner Shopware 6 Installation in der services.yaml ein. Sie liegt im Verzeichnis /config. Falls dort noch keine Datei vorhanden ist, legst du diese einfach an. Folgende Zeilen fügst du am Ende der Datei ein:

parameters:
app.redis.cache.host: "%env(REDIS_CACHE_HOST)%"
app.redis.cache.port: "%env(int:REDIS_CACHE_PORT)%"
app.redis.cache.database: "%env(int:REDIS_CACHE_DATABASE)%"
services:
Redis:
class: Redis
calls:
- method: connect
arguments:
- "%env(REDIS_SESSION_HOST)%"
- "%env(int:REDIS_SESSION_PORT)%"
- method: select
arguments:
- "%env(int:REDIS_SESSION_DATABASE)%"
Symfony\Component\HttpFoundation\Session\Storage\Handler\RedisSessionHandler:
arguments:
- "@Redis"

Erstelle nun im Ordner config/packages die Datei framework.yaml. In die Datei fügst du Folgendes ein:

framework:
cache:
app: cache.adapter.redis
system: cache.adapter.redis
default_redis_provider: "redis://%app.redis.cache.host%:%app.redis.cache.port%/%app.redis.cache.database%"
session:
handler_id: Symfony\Component\HttpFoundation\Session\Storage\Handler\RedisSessionHandler

Füge zuletzt Folgendes am Ende der .env ein:

REDIS_CACHE_HOST="HOST"
REDIS_CACHE_PORT="PORT"
REDIS_CACHE_DATABASE="1"

REDIS_SESSION_HOST="HOST"
REDIS_SESSION_PORT="PORT"
REDIS_SESSION_DATABASE="0"

Shopware 5

Füge im Shopware Verzeichnis in config.php Folgendes ein:

// Sessions für Backend und Frontend im Redis in der DB2
'session' => [
'save_handler' => 'redis',
'save_path' => 'tcp://HOST:PORT/2',
],

'backendsession' => [
'save_handler' => 'redis',
'save_path' => 'tcp://HOST:PORT/2',
],

// Models Cache im Redis in der DB3
'model' => [
'redisHost' => 'tcp://HOST',
'redisPort' => 'PORT',
'redisDbIndex' => '3',
'cacheProvider' => 'redis',
],

// Shopware Backend Cache im Redis in der DB3
'cache' => [
'backend' => 'redis',
'backendOptions' => [
'servers' => [
[
'host' => 'tcp://HOST',
'port' => 'PORT',
'dbindex' => '3',
],
],
],
],

Joomla 4

In der Joomla Administration hinterlegst du unter System -> Konfiguration -> System bei "Sitzung (Session)" diese Konfiguration:

  • Sitzungsspeicher: Redis
  • Persistentes Redis: Ja
  • Redis-Server Host/Socket: HOST eintragen
  • Redis-Port: PORT eintragen
  • Redis-Server-Authentifizierung: so belassen
  • Redis-Datenbank: Datenbank eintragen

Bei Redis-Datenbank gewünschte freie Datenbank zwischen 0 und 15 wählen, und dann Speichern.

WordPress

Wir empfehlen das Plugin Redis Object Cache. Installiere dieses Plugin zunächst über die WP-CLI

wp plugin install redis-cache --activate

und setze die benötigten Konfigurations-Einträge:

wp config set --type=constant WP_REDIS_PATH HOST
wp config set --type=constant WP_REDIS_PORT PORT
wp config set --type=constant WP_REDIS_DATABASE 0
wp config set --type=constant WP_REDIS_SCHEME unix

Wenn du die WP-CLI nicht benutzen möchtest, kannst du das Plugin auch über das WordPress-Dashboard installieren. Nach der Installation und Aktivierung fügst du der wp-config.php folgende Einträge hinzu:

define('WP_REDIS_PATH', 'HOST');
define('WP_REDIS_PORT', 'PORT');
define('WP_REDIS_DATABASE', '0');
define('WP_REDIS_SCHEME', 'unix');

TYPO3

Für alle Versionen bis TYPO3 11.5 erstellst du eine AdditionalConfiguration.php im Ordner typo3conf. Ab TYPO3 Version 12.4 erstellst du eine additional.php in den Ordnern typo3conf/system (für Symlink-Installationen) oder config/system (für Composer-Installationen). Füge das Folgende bitte jeweils ein. Sollte die Datei bereits existieren, kannst du <?php weglassen.

<?php

$redisHost = 'HOST';
$redisPort = PORT;
$redisCaches = [
'pages' => [
'defaultLifetime' => 86400*7,
'compression' => true,
],
'pagesection' => [
'defaultLifetime' => 86400*7,
],
'hash' => [],
'rootline' => [],
];
$redisDatabase = 0;
foreach ($redisCaches as $name => $values) {
$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations'][$name]['backend'] = \TYPO3\CMS\Core\Cache\Backend\RedisBackend::class;
$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations'][$name]['options'] = [
'database' => $redisDatabase++,
'hostname' => $redisHost,
'port' => $redisPort
];
if (isset($values['defaultLifetime'])) {
$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations'][$name]['options']['defaultLifetime'] = $values['lifetime'];
}

if (isset($values['compression'])) {
$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations'][$name]['options']['compression'] = $values['compression'];
}
}