Redis auf dem Space-Server – Datenbank-Turbo für deine Projekte
Was ist Redis?
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 richte ich Redis auf dem Space-Server ein?
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.
Allgemeine Einstellungen
Lege zunächst im mStudio, der Verwaltungsumgebung deines Space-Servers, eine Redis Datenbank an. Anschließend findest du in den Details unter Verbindungsinformationen sowohl Host als auch Port. Beide benötigst du für die Konfiguration deines Systems.
php.ini anpassen
Die Datei liegt in deinem Projekt unter /etc/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 Session Datenbanken, die von 0 – 15 angesprochen werden können.
Shopware 6
config/ services.yaml einfügen oder erstellen
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. Das geht per SSH oder FTP. 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.
Speichern
WordPress
Wir empfehlen das Plugin Redis Object Cache. Du kannst es im WordPress Backend unter Plugins installieren. Anschließend fügst du der wp-config.php folgenden Eintrag hinzu:
define('WP_REDIS_HOST', 'HOST');
define('WP_REDIS_PORT', 'PORT');
define('WP_REDIS_DATABASE', '0');
define('WP_REDIS_SCHEME', 'tcp');
Als Wert für WP_REDIS_DATABASE wählst du eine freie Datenbank zwischen 0 und 15.
Alle Operationen kannst du auch über die WP-CLI durchführen. Installiere dafür zunächst das Plugin:
wp plugin install redis-cache --activate
Dann setzt du die benötigten Konfigurationseinträ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
- Nutze den hostname und port der Datenbank als Werte für WP_REDIS_PATH und WP_REDIS_PORT (siehe GET https://api.mittwald.de/v2/redis-databases/{id})
- Wähle eine freie Datenbank zwischen 0 und 15 als Wert für WP_REDIS_DATABASE.
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 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'];
}
}
Tipp!
Bock auf mehr Performance? Teste Redis doch einfach. Buche dafür den Space-Server für 10 Tage kostenlos und Abfahrt!