Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Was fehlt?

Es liegt in der Natur der Sache: Ein Wiki ist niemals fertig. Wir geben uns große Mühe, mit der Entwicklung Schritt zu halten; lassen Supportanfragen direkt in neue Artikel einfließen … aber auch wir sind nicht perfekt. Wenn du hier nicht fündig wirst: Nicht schmollen - Bescheid sagen! Unter hallo@uberspace.de steht dir unser Team gerne bereit. Hand drauf!

database:redis

Inhaltsverzeichnis

Redis

Redis ist ein Key-Value-Store und gehört zu den NoSQL-Datenbanken. Es wird vornehmlich für seine schnellen Lese- und Schreibraten eingesetzt. Redis speichert ausschliesslich zweispaltig und kennt lediglich einen Schlüssel (Key) und einen dazugehörigen Wert (Value).

Redis speichert alle Daten standardmäßig ausschließlich im Arbeitsspeicher und zielt insofern primär auf die Verarbeitung flüchtiger (aber häufig gelesener/geschriebener Daten) ab, wie beispielsweise Sessions einer Webapplikation oder Cache-Daten. Nach einem Neustart oder Crash des Daemons oder nach einem Reboot sind insofern sämtliche in Redis abgelegten Daten weg, was bei flüchtigen oder reproduzierbaren Daten wie eben Sessions oder Cache-Daten ein akzeptabler Preis für den erheblichen Performancegewinn gegenüber einer festplattengebundenen Datenbank sein dürfte. Möchtest du Redis für Datenhaltung einsetzen, bei der wichtig ist, dass jene Daten auch einen Neustart/Crash/Reboot überleben, solltest du dir in jedem Fall die Redis-Dokumentation zum Thema Persistenz anschauen.
Bitte benutze unbedingt unser Tool uberspace-setup-redis zur Einrichtung einer eigenen Redis-Instanz und starte nicht einfach so den Befehl redis-server. Damit würdest du dir eine vollkommen ungeschützte Redis-Instanz auf dem Default-Redis-Port starten, auf die alle User des Hosts lesenden und schreiben Zugriff hätten. You have been warned! Unser Tool uberspace-setup-redis hingegen legt für die Verbindung einen Unix-Socket an, mit dem nur du selbst dich verbinden kannst.

Einrichtung

Die neueste Version des redis-Moduls 3.0.0 unterstützt nur noch PHP 7. Wenn du also mit PHP 5.6 uberspace-install-pecl redis ausführst, schlägt die Installation fehl. Zur Lösung des Problems musst du entweder auf PHP 7 umsteigen oder explizit die Version redis-2.2.8 installieren.

Eine eigene Redis-Instanz einzurichten ist ganz einfach. Du benötigst lediglich ein eigenes ~/service-Verzeichnis, damit du mittels unserer daemontools eigene Daemons auf deinem Uberspace laufen lassen kannst, die auch einen Absturz deines Dienstes bzw. Neustart unseres Hosts überleben, indem sie automatisch neugestartet werden.

Wenn du noch kein ~/service-Verzeichnis hast, ist es ganz schnell mit nur einem Befehl eingerichtet:

[moon@monoceres ~]$ test -d ~/service || uberspace-setup-svscan

Nun aber zu Redis. Um deine eigene Redis-Instanz zu betreiben, führst du einfach unser Setup-Script aus:

[moon@monoceres ~]$ uberspace-setup-redis 
Creating Redis-configuration
Creating the ~/etc/run-redis/run service run script
Creating the ~/etc/run-redis/log/run logging run script
Symlinking ~/etc/run-redis to ~/service/redis to start the service
Waiting for Redis to start ... 1 2 3 4 started!

Neustarten kannst du redis wie folgt:

[moon@monoceres ~] svc -du ~/service/redis

Zugriff

Um Zugriff auf Redis zu erhalten, benötigst du einen Redis-Client. Auf unseren Hosts steht dir dafür z.B. redis-cli zur Verfügung. Bei der Konfiguration von Redis erstellt unser Script einen Socket, über den du dich mit deiner Redis-Instanz verbinden kannst.

 [moon@monoceres ~]$ redis-cli -s ~/.redis/sock

Durch den Socket wird sichergestellt, dass auch nur dein User Zugriff auf eine Redis-Instanz hast. Zwar verfügt Redis über eine optionale Passwortabfrage, viele Clients unterstützen diesen rudimentären Authentifizierungsmechanismus allerdings nicht.

Die Redis-Konfiguration speichern wir in ~/.redis/conf.

database/redis.txt · Zuletzt geändert: 2016/09/30 11:46 von uber