Linuxspicker

Admins kleiner Zettelkasten für die Lösung von Linuxproblemen

Redis per Unix-Socket als Cache in phpBB


PHPBB bietet verschiedene Möglichkeiten des Cachings zur Performanceverbesserung an. Neben dem standardmäßigen File-Cache gibt es zu XCache, APC, APCu, eAccelerator, Memcache und WinCache auch Redis als Cachesystem. In den Standardanleitungen zur Integration wird aber immer das Szenario per TCP-Verbindung vorausgesetzt. Wenn Redis jedoch auf dem gleichen Server läuft, dann bietet sich eine schnellere Verbindung per Unix-Socket an.

Der phpBB-Quellcode gibt Aufschluss darüber, dass vier Variablen in der config.php definiert werden können.

  • PHPBB_ACM_REDIS_HOST
  • PHPBB_ACM_REDIS_PORT
  • PHPBB_ACM_REDIS_PASSWORD
  • PHPBB_ACM_REDIS_DB

Die Defaultwerte sind demnach der Standardport 6379 und localhost als Standardhost. Faktisch ist das gleichbedeutend mit folgender Einstellung in der config.php:

$acm_type = 'redis';
@define('PHPBB_ACM_REDIS_HOST', 'localhost');
@define('PHPBB_ACM_REDIS_PORT', '6379');

Redis kann jedoch auch auf einem Unix-Socket erreicht werden. Unter Debian ist das in /etc/redis/redis.conf standardmäßig /run/redis/redis-server.sock.

# Unix socket.
#
# Specify the path for the Unix socket that will be used to listen for
# incoming connections. There is no default, so Redis will not listen
# on a unix socket when not specified.
#
unixsocket /run/redis/redis-server.sock
unixsocketperm 770

Bleibt die Frage, was mit dem Port gemacht werden soll, da ja als Default im Quellcode 6379 eingestellt ist. Das Setzen des Ports auf 0 bringt dann das gewünschte Ergebnis, Redis wird per Unix-Socket kontaktiert.

$acm_type = 'redis';
@define('PHPBB_ACM_REDIS_HOST', '/run/redis/redis-server.sock');
@define('PHPBB_ACM_REDIS_PORT', '0');
@define('PHPBB_ACM_REDIS_DB','4');

Dazu noch eine andere Datenbank eingestellt, damit die Daten nicht in der Default-Datenbank 0 landen und damit es nicht zufällig zu unvorhergesehenen Konflikten mit anderen Programmen kommt, die ebenfalls Redis als Cache nutzen. In der Standardkonfiguration sind 16 Datenbanken eingestellt.

# Set the number of databases. The default database is DB 0, you can select
# a different one on a per-connection basis using SELECT <dbid> where
# dbid is a number between 0 and 'databases'-1
databases 16

Und schon flitzt phpBB. Getestet wurde das ganze mit phpBB 3.2.11. Es sollte aber auch bei den 3.3.x und den Vorgängerversionen funktionieren.


Stichworte: , , , , , , , ,
Kategorien: ,