Redis


Redis-Einrichtung

"Der Redis Cache Store ist eine der besten Optionen, um Session- und Anwendungs-Caches zu verwalten, denn der Redis Cache Store bietet Datensicherheit, Locking, Key Awareness. Außerdem kann er für das Caching der Nutzersitzungen in der Moodle-Konfigurationsdatei config.php verwendet werden."

Docs:
https://docs.moodle.org/de/Redis_Cache
https://docs.moodle.org/en/Redis_cache_store#Installing_Redis_server

Redis-Installation und Einrichtung:

Auf Linux-Server (z.B. dedizierter Redis-Server oder auf Moodle-Server):
- sudo dnf install redis
- Redis starten: sudo systemctl start redis.service
- Autostart: sudo systemctl enable redis
- sudo sysctl vm.overcommit_memory=1
- config-Anpassung in /etc/redis.conf :

appendonly yes (default: no)
bind auskommentiert #bind 127.0.0.1 (außer wenn auf gleichem Server wie Moodle)
protected-mode no (default: yes)
Wichtig: für öffentliche Instanzen ein Passwort nutzen! (requirepass foobar)
siehe auch: https://redis.io/topics/security

Speicherlimit auf z.B. 8 GB setzen (je nach Server-Konstellation, Limit wird auch in tool_redis angezeigt) + policy "allkey-lru" als Replacement-Strategie (sonst werden ggf. keine neuen Keys mehr angenommen / gespeichert, wenn der Store voll ist)
maxmemory 8590000000
„maxmemory_policy“ auf „allkeys-lru“ ​(maxmemory-policy allkeys-lru)

- sudo systemctl restart redis.service

PHP-Paket installieren

Auf Webservern PHP-Paket installieren:
- sudo yum install php-pecl-redis
- sudo systemctl reload php-fpm
- php -m muss "redis" anzeigen

PHP-Info prüfen

Wurde Redis sauber geladen? z.B. /admin/phpinfo.php
Es sollte einen Absatz "redis" geben, zudem eine redis.ini unter "Additional .ini files parsed"

Moodle-Frontend 

"Testserver" einrichten unter /admin/settings.php?section=cachestore_redis_settings
z.B.: 
RedisServer:6379
wenn Redis auf dem gleichen Server wie Moodle selbst läuft: 
127.0.0.1:6379

Empfehlung: Testserver nach erfolgreichen Tests deaktivieren (Eintragung löschen), um ungewünschte Beeinflussungen bei etwaigen Tests darüber im Betrieb auszuschließen.

Speicherort Konfiguration

Die Redis-Konfiguration des jeweiligen Systems wird in moodledata (/vol/moodledata/muc/config.php) gespeichert, nach DB-Importen von z.B. prod nach test ist also nichts anzupassen:
sudo cat /vol/moodledata/muc/config.php | grep Redis

Deaktivierung der Redis-Einbindung

"Speicherort wenn keine Definition erstellt wurde" (/cache/admin.php ganz unten) wieder auf "Standard" Speicher setzen 
wenn kein Zugriff auf admin-Frontend: /vol/moodledata/muc/config.php
Zeile 69 ändern von "'store' => 'Redis-mdl'," auf "'store' => 'default_application',"


/var/lib/redis: dump.rdb und appendonly.aof (persistence)

Die Datei dump.rdb dient der Speicherung des gesamten Snapshots der Redis-Datenbank ( "Point-in-Time" Darstellung der Datenbank). Redis erstellt regelmäßig Snapshots der Datenbank und speichert diese als dump.rdb. Diese Schnappschüsse enthalten den Zustand der Datenbank zu dem Zeitpunkt, zu dem der Snapshot erstellt wurde. Im Falle eines Absturzes oder Neustarts des Redis-Servers verwendet Redis die dump.rdb-Datei, um den letzten gespeicherten Zustand der Datenbank wiederherzustellen. Redis erstellt die dump.rdb-Datei automatisch basierend auf den in der Konfigurationsdatei (redis.conf) festgelegten Regeln. Diese Regeln definieren, wie oft und unter welchen Bedingungen Snapshots erstellt werden (z.B. nach einer bestimmten Anzahl von Schreiboperationen oder nach einer bestimmten Zeitspanne). Redis läuft also auch ohne dump.rdb (erstellt Redis selbst) und ohne appendonly.aof in /var/lib/redis, sprich mit leerem Verzeichnis (bei sauberem Service-Neustart via sudo systemctl start redis.service).

appendonly.aof:

Siehe auch https://redis.io/docs/latest/operate/oss_and_stack/management/persistence/ und https://www.memurai.com/blog/redis-persistence-deep-dive


Autor: Klaus Steitz, Technische Universität Darmstadt

Redis-Plugin

Alexander Bias hat ein Redis-Plugin entwickelt, welches nach Installation eine GUI mit Statistiken (https://github.com/tessus/redis-stats bzw. https://github.com/tessus/valkey-stats) anzeigt, erreichbar unter /admin/tool/redis/ 
Dort sind z.B. Prozentwert der Hits, der über 99% liegen sollte, used und Peak memory sowie ggf. definiertes Memorylimit (unter "Used Memory", z.B. "/ 3.00 G") zu sehen. Unterhalb der Box "Keys in store db0" ist zudem der Button "Flush" nutzbar. 

Moodle-Redis-Plugin

Plugin-Repository

Das Redis-Plugin (tool_redis) wird vom Verein gepflegt und ist über diese Links erreichbar: 

https://moodle.org/plugins/tool_redis

https://github.com/moodle-an-hochschulen/moodle-tool_redis


Autor: Klaus Steitz, Technische Universität Darmstadt

Redis-CLI

In der Konsole (Kommandozeile, CLI: command line interface) lassen sich diverse Redis-Befehle ausführen. 

Redis-Start in der Konsole 

redis-cli

Server-Info

INFO server

Redis-Version anzeigen (ohne Redis-CLI)

redis-server --version

Redis CLI-overview: https://redis.io/docs/latest/develop/tools/cli/

CLI reference: https://redis.io/docs/latest/integrate/redis-data-integration/reference/cli/


Autor: Klaus Steitz, Technische Universität Darmstadt