Redis: Unterschied zwischen den Versionen
Tim00 (Diskussion | Beiträge) K (→Konfiguration) |
KKeine Bearbeitungszusammenfassung |
||
(2 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 14: | Zeile 14: | ||
Nach dem Login als ''xyz00-service'' lege ich Verzeichnisse ''~/redis/etc'' und ''~/redis/var'' an: | Nach dem Login als ''xyz00-service'' lege ich Verzeichnisse ''~/redis/etc'' und ''~/redis/var'' an: | ||
<syntaxhighlight lang="shell"> | |||
mkdir -p redis/{etc,var} | |||
</syntaxhighlight> | |||
Im etc-Verzeichnis wird die Konfigurationsdatei ''redis.conf'' für den Redis-Dienst abgelegt. | Im etc-Verzeichnis wird die Konfigurationsdatei ''redis.conf'' für den Redis-Dienst abgelegt. | ||
Zeile 22: | Zeile 22: | ||
Eine Beispiel-Konfiguration ist: | Eine Beispiel-Konfiguration ist: | ||
<syntaxhighlight lang="shell" line> | |||
requirepass <generiertes-passwort> | |||
bind 127.0.0.1 | |||
port 33033 | |||
tcp-backlog 128 | |||
timeout 300 | |||
loglevel notice | |||
logfile /home/pacs/xyz00/users/service/redis/var/redis.log | |||
databases 16 | |||
save 900 1 | |||
save 300 10 | |||
save 60 10000 | |||
slave-serve-stale-data yes | |||
appendonly no | |||
dbfilename dump.rdb | |||
dir /home/pacs/xyz00/users/service/redis/var/ | |||
</syntaxhighlight> | |||
Der Redis-Dienst ist über die Server-lokale Netzwerk-Adresse 127.0.0.1 erreichbar und mit einem Passwort geschützt. Der Port ''33033'' für die Netzwerk-Schnittstelle muss ggf. angepasst werden. | Der Redis-Dienst ist über die Server-lokale Netzwerk-Adresse 127.0.0.1 erreichbar und mit einem Passwort geschützt. Der Port ''33033'' für die Netzwerk-Schnittstelle muss ggf. angepasst werden. | ||
Zeile 42: | Zeile 44: | ||
Der Dienst wird gestartet mit: | Der Dienst wird gestartet mit: | ||
<syntaxhighlight lang="shell"> | |||
xyz00-service@h00:~/redis$ /usr/bin/redis-server etc/redis.conf | |||
</syntaxhighlight> | |||
Mit Ctrl-C kann der Dienst wieder gestoppt werden. | Mit Ctrl-C kann der Dienst wieder gestoppt werden. | ||
Zeile 48: | Zeile 52: | ||
Alternativ kann der zugriff auf Redis über einen Unixsocket erfolgen. Dann entfällt die Zeile 'bind 127.0.0.1' in der Konfiguration, der port wird auf 0 gesetzt. Stattdessen wir ein Unixsocket konfiguriert: | Alternativ kann der zugriff auf Redis über einen Unixsocket erfolgen. Dann entfällt die Zeile 'bind 127.0.0.1' in der Konfiguration, der port wird auf 0 gesetzt. Stattdessen wir ein Unixsocket konfiguriert: | ||
<syntaxhighlight lang="shell" line> | |||
unixsocket /home/pacs/xyz00/users/service/redis/var/redis-server.sock | |||
unixsocketperm 700 | |||
port 0 | |||
</syntaxhighlight> | |||
(der Unixsocket benötigt in der Konfiguration den vollständigen absoluten Pfad zum Socket im Dateisystem!) | (der Unixsocket benötigt in der Konfiguration den vollständigen absoluten Pfad zum Socket im Dateisystem!) | ||
Zeile 60: | Zeile 66: | ||
Dazu wird im Verzeichnis ''~/.config/systemd/user'' eine Datei ''redis.service'' mit dem folgenden Inhalt angelegt: | Dazu wird im Verzeichnis ''~/.config/systemd/user'' eine Datei ''redis.service'' mit dem folgenden Inhalt angelegt: | ||
<syntaxhighlight lang="ini" line> | |||
[Unit] | |||
Description=Redis Service | |||
[Service] | |||
WorkingDirectory=%h/redis | |||
Environment="PATH=/usr/local/bin:/usr/bin:/bin" | |||
ExecStart=/usr/bin/redis-server %h/redis/etc/redis.conf | |||
Restart=always | |||
PrivateTmp=true | |||
NoNewPrivileges=true | |||
[Install] | |||
WantedBy=default.target | |||
</syntaxhighlight> | |||
Die Datei wird mit den folgenden Shell-Kommandos geladen und aktiviert: | Die Datei wird mit den folgenden Shell-Kommandos geladen und aktiviert: | ||
<syntaxhighlight lang="shell"> | |||
systemctl --user daemon-reload | |||
systemctl --user enable --now redis.service | |||
</syntaxhighlight> | |||
Mit den Kommandos | Mit den Kommandos | ||
<syntaxhighlight lang="shell"> | |||
systemctl --user status | |||
systemctl --user status redis.service | |||
</syntaxhighlight> | |||
kann der Status des Dienstes ermittelt werden. | kann der Status des Dienstes ermittelt werden. |
Aktuelle Version vom 15. Juli 2024, 10:15 Uhr
Redis installieren
Redis ist ein einfacher Datenspeicher für Schlüssel-Wert-Paare. Datensätze werden jeweils unter einem Schlüssel abgelegt. Die Daten werden jeweils im Hauptspeicher gehalten und nur zu konfigurierbaren Zeitpunkten auf die Festplatte gesichert.
Redis-Datenbanken werden häufig zur Speicherung von Warteschlangen benutzt. In Redis werden Aufträge gespeichert, die asynchron von Hintergrundprogrammen abgearbeitet werden.
Konfiguration
Redis ist auf den Hostsharing-Servern vorinstalliert. Für die Nutzung muss lediglich eine Konfigurationsdatei angelegt werden und ein Hitergrundprogramm gestartet werden.
Im folgenden wird für den User xyz00-service ein Redis-Dienst eingerichtet. Der User xyz00-service ist in HSAdmin mit /bin/bash als Shell eingerichtet.
Nach dem Login als xyz00-service lege ich Verzeichnisse ~/redis/etc und ~/redis/var an:
mkdir -p redis/{etc,var}
Im etc-Verzeichnis wird die Konfigurationsdatei redis.conf für den Redis-Dienst abgelegt.
Eine Beispiel-Konfiguration ist:
requirepass <generiertes-passwort>
bind 127.0.0.1
port 33033
tcp-backlog 128
timeout 300
loglevel notice
logfile /home/pacs/xyz00/users/service/redis/var/redis.log
databases 16
save 900 1
save 300 10
save 60 10000
slave-serve-stale-data yes
appendonly no
dbfilename dump.rdb
dir /home/pacs/xyz00/users/service/redis/var/
Der Redis-Dienst ist über die Server-lokale Netzwerk-Adresse 127.0.0.1 erreichbar und mit einem Passwort geschützt. Der Port 33033 für die Netzwerk-Schnittstelle muss ggf. angepasst werden.
Der Dienst wird gestartet mit:
xyz00-service@h00:~/redis$ /usr/bin/redis-server etc/redis.conf
Mit Ctrl-C kann der Dienst wieder gestoppt werden.
Alternativ kann der zugriff auf Redis über einen Unixsocket erfolgen. Dann entfällt die Zeile 'bind 127.0.0.1' in der Konfiguration, der port wird auf 0 gesetzt. Stattdessen wir ein Unixsocket konfiguriert:
unixsocket /home/pacs/xyz00/users/service/redis/var/redis-server.sock
unixsocketperm 700
port 0
(der Unixsocket benötigt in der Konfiguration den vollständigen absoluten Pfad zum Socket im Dateisystem!)
Einrichtung als Server-Dienst
Redis soll über den Systemdienst SystemD automatisch im Hintergrund gestartet werden.
Dazu wird im Verzeichnis ~/.config/systemd/user eine Datei redis.service mit dem folgenden Inhalt angelegt:
[Unit]
Description=Redis Service
[Service]
WorkingDirectory=%h/redis
Environment="PATH=/usr/local/bin:/usr/bin:/bin"
ExecStart=/usr/bin/redis-server %h/redis/etc/redis.conf
Restart=always
PrivateTmp=true
NoNewPrivileges=true
[Install]
WantedBy=default.target
Die Datei wird mit den folgenden Shell-Kommandos geladen und aktiviert:
systemctl --user daemon-reload
systemctl --user enable --now redis.service
Mit den Kommandos
systemctl --user status
systemctl --user status redis.service
kann der Status des Dienstes ermittelt werden.