In ioBroker Redis nutzen – Alle Infos

Veröffentlicht von Lukas am

Ein Smart Home mit Open Source Software zu betreiben bedeutet immer ein Stück weit ausprobieren und offen für Neues zu sein. Als ich eine ganze Zeit lang Schwierigkeiten hatte, erschien mir persönlich dabei das Thema in ioBroker Redis zu nutzen sehr plausibel.

Zwar konnte ich so meine Schwierigkeiten nicht lösen, jedoch eine Menge dazulernen und besser verstehen. Denn in ioBroker sind die Datenpunkte und Objekte ein großes Thema, das in diesem Kontext wiederum eng mit Redis in Verbindung stehen kann.

Gerade wer eine größere Installation betreibt oder vielleicht einfach nur über viele Datenpunkte verfügt weiß, dass die Ladezeit manchmal so die eine oder andere Schwierigkeit mit sich bringt. Ich selbst habe das am eigenen Leib gelernt, als ich zu Spitzenzeiten mehr als 120.000 Datenpunkte in meinem ioBroker verwaltet habe. Zwar kam das durch einen Bug in einem Adapter, doch darauf muss man schließlich auch erstmal kommen.

In diesem Artikel möchte ich mit dir einen genauen Blick darauf werfen, was Redis genau ist und inwiefern man in ioBroker Redis für seine Zwecke nutzen kann. Wenn du also noch neu in diesem Thema bist, musst du dir keinen Kopf machen. Nach meinem Artikel bist du definitiv schlauer und kannst das Thema richtig einordnen. Außerdem möchte ich erreichen, dass du für dich selbst entscheiden kannst, ob es für dich eine Relevanz besitzt.

ioBroker Datenpunkte des Shelly

Was ist Redis?

In der Welt der IT gibt es unterschiedliche Datenbanken, die zur Speicherung von Daten vorgesehen sind. Dabei hat jede Datenbank ihre eigenen besonderen Eigenschaften, weshalb auch mehrere parallel existieren können. Je nach Verwendungszweck muss dann entschieden werden, welche Datenbank zum Einsatz kommt.

Redis ist demnach eine Datenbank, die zur Speicherung von Daten vorgesehen ist. Dabei ist jedoch das Besondere, dass es sich hierbei um eine sogenannte In-Memory-Datenbank handelt. Du fragst dich nun sicherlich, was das denn genau bedeutet. Die Erklärung dazu ist – da wir sie oberflächlich halten – relativ simpel.

Eine In-Memory-Datenbank speichert ihre Daten im Arbeitsspeicher anstatt auf der Festplatte. Das hat den Vorteil, dass das Lesen und Schreiben von Daten sehr schnell abläuft. Denn im Gegensatz zur Festplatte ist der Arbeitsspeicher um ein Vielfaches schneller. Allerdings hat der Arbeitsspeicher auch den Nachteil, dass er ein sogenannter nicht-persistenter Speicher ist. Das bedeutet, dass die Daten im Arbeitsspeicher verloren sind, sobald man den Arbeitsspeicher vom Strom trennt. Aus diesem Grund arbeiten einige der In-Memory-Datenbanken hybrid. Sie speichern in gewissen Zeitabständen ihre Daten auch auf die Festplatte, um sie nicht zu verlieren.

Bei hybriden Modellen erreicht man somit, dass auf der einen Seite die Festplatte entlastet wird (dazu kommen wir gleich) und die Daten schnell zur Verfügung stehen.

Um eine In-Memory-Datenbank wie Redis nutzen zu können, muss allerdings auch genug Arbeitsspeicher zur Verfügung stehen.

Die Festplatte entlasten

Jede Festplatte unterliegt naturgemäß einer gewissen Lebensdauer. Diese Lebensdauer ist bei HDDs und SSDs jeweils unterschiedlich und hängt von verschiedenen Faktoren ab. Grundsätzlich fährst du gut, wenn du eine Festplatte als eine Art Verschleißteil in deinem Computer betrachtest. Je stärker die beansprucht wird, desto kürzer fällt ihre Lebensdauer aus. (mediafix.de)

Betrachten wir also nun mal ganz konkret das Smart Home, dann fällt auf, dass ständig Daten verändert werden und unter Umständen gespeichert werden. Zwar handhaben heutige Anwendungen das ganz gut und beziehen meist auch den Verschleiß mit ein, doch man kann unter Umständen auf die Lebensdauer einwirken, indem man den Verschleiß noch weiter reduziert.

Redis kann hier zum Beispiel helfen, um die Schreibvorgänge auf die Festplatte einzugrenzen. Ein praktisches Beispiel hierzu liefert Danny in seinem Blog. Er bezieht sich explizit auf die Persistierung von Daten von ioBroker innerhalb seiner Virtualisierungsumgebung (sotzny.de).

Der Einsatz von Redis bedeutet dabei aber nicht, dass gar keine Daten mehr auf die Festplatte geschrieben werden. Viel mehr erfolgt das Schreiben der Daten in einem bestimmten Intervall, so dass es immer mal wieder zu Zugriffen auf die Festplatte kommt. Die Gesamtlast wird allerdings reduziert, da es nicht mehr dauerhaft geschieht. So kann man auf die Lebensdauer einwirken.

Vertiefe dein Wissen:  ioBroker Szenen nutzen - so klappt's!

Danny erwähnt in seinem Blog weiterhin, dass er gerade dieses Vorgehen dann empfiehlt, wenn man einen Raspberry Pi mit einer SD-Karte einsetzt. Denn hier kommt es immer mal wieder zu Ausfällen, weshalb man auch unbedingt ein Backup von ioBroker bereithalten sollte.

Serverschrank mit zwei Rack-Servern

Wann du Redis einsetzen solltest

Bevor du nun übereifrig an die Sache gehst und sofort zu Redis in ioBroker greifst, solltest du dir ein paar Keyfakts vor Augen führen. Die Entwickler von ioBroker geben dabei einen ziemlich guten Leitfaden, an den man sich grundsätzlich halten kann (Quelle: GitHub).

In der verlinkten Dokumentation werden grundsätzlich zwei Gründe für die Nutzung von Redis in ioBroker genannt. Der erste Grund ist eine hohe Auslastung des JS-Controllers (permanent 50 – 70 %). Das lässt sich anhand der Auslastung auf deinem System genau überprüfen. Unter Linux kannst du zum Beispiel den Befehl „top“ dafür nutzen. In diesem Fall kann es vorkommen, dass sich das System insgesamt ein wenig langsam und träge anfühlt. Redis kann hier für einen gewissen Boost sorgen. Wunder sollte man aber nicht erwarten und genau erörtern, warum das System so träge ist.

Der zweite Grund ist die Hochverfügbarkeit. Denn Redis kann für eine Installation eingesetzt werden, die hochverfügbar gemacht werden soll. In der Regel ist das in einem Smart Home nicht unbedingt notwendig, kann aber ein spannendes Projekt sein. Insbesondere dann, wenn man ein gut ausgebautes Homelab nutzt und hier einiges an Zeit investieren möchte. Wer hingegen nur einen Raspberry Pi nutzt, braucht sich in der Regel auch keine Gedanken über Hochverfügbarkeit zu machen.

ioBroker Redis Umstellung – so geht’s!

Wenn du dich also nun für die Nutzung von Redis in ioBroker entschieden hast, musst du diese Datenbank zuerst auf deinem System installieren. Ich habe in meinem Fall zur Anleitung für Ubuntu gegriffen und folgende Befehle durchgeführt:

sudo add-apt-repository ppa:chris-lea/redis-server
sudo apt-get update
sudo apt-get install redis-server
sudo systemctl enable redis-server

Zuerst wird also das richtige Repository (also die Quelle) hinzugefügt, dann neue Updates gecheckt und schlussendlich Redis installiert. Der letzte Schritt ist nur dann notwendig, wenn Redis nicht automatisch nach einem Reboot startet. Sofern du Redis in einer einfachen Installation (also mit einem einzigen ioBroker) nutzt, sind die Schritte abgeschlossen. Ansonsten schau bitte in der Doku nach den weiteren Schritten nach (zur Doku). Danach geht es mit ioBroker selbst weiter:

iobroker stop
iobroker setup custom

Je nachdem, ob du für Objekte und Zustände Redis verwenden möchtest, musst du das dann im weiteren Verlauf angeben. Die Anpassung ist ziemlich simpel und du wirst durch entsprechende Dialog hindurchgeführt. Du kannst die Änderung aber auch jederzeit wieder rückgängig machen. Je nach Anzahl deiner Datenpunkte kann der Prozess ein wenig Zeit in Anspruch nehmen.

Im einfachsten Fall nutzt du übrigens den gleichen Prozess von Redis für Objekte und Zustände. Du kannst das jedoch auch trennen, was die Einrichtung allerdings ein klein wenig komplexer macht. Auch dazu findest du in der von mir verlinkten Dokumentation mehr Informationen. Ich habe hier den einfachen Weg gewählt, um das Vorgehen grundsätzlich zu erklären.

air-Q Datenpunkte in ioBroker

Die Redis-Datenbank sichern

Sobald du auf Redis umgestellt hast, solltest du an ein weiteres Backup denken. Denn die Datenbank liegt in der Regel im Verzeichnis „/var/lib/redis“ und ist zum Beispiel als „dump.rdb“ benannt. Diese Datei kannst du bedenkenlos sichern und zu einem späteren Zeitpunkt wiederherstellen. Achte dabei jedoch darauf, dass in diesem Zeitraum keine Änderungen an der Datei vorgenommen werden sollten.

Vertiefe dein Wissen:  ioBroker vs Mediola - Das ist anders

Wenn du mal eine manuelle Sicherung der Datenbank vornehmen möchtest, kannst du dazu den folgenden Befehl nutzen:

redis-cli BGSAVE

Solltest du kein Backup der Datenbank machen, verlierst du unter Umständen Objekte und Zustände. Das kann insbesondere dann der Fall sein, wenn deine Festplatte den Geist aufgibt und du deinen ioBroker neu installieren musst. Es ist also sehr ratsam, dass du diese Datei unbedingt sicherst. Dazu gibt es verschiedene Vorgehen, auf die ich jetzt an dieser Stelle jedoch nicht eingehe. Das würde den Rahmen des Artikels sprengen.

Meine persönlichen Erfahrungen

Ich selbst nutze in ioBroker Redis nun schon eine ganze Weile. Daher wage ich es zu behaupten, dass ich zumindest einen Eindruck schildern kann, wie es sich in der Praxis auswirkt.

Dabei zeigen meine Erfahrungen, dass sich die Schreiblast reduziert hat und die Geschwindigkeit beim Abrufen der Daten erhöht. Jedoch muss man wissen, dass diese Form der Datenhaltung natürlich auf den Arbeitsspeicher geht. Das bedeutet konkret, dass der Verbrauch von Arbeitsspeicher ansteigt. Es sollten also genügend Ressourcen zur Verfügung stehen. Ich habe meinem ioBroker innerhalb meiner Proxmox-Umgebung ganze 16 GB RAM zugewiesen, was für das Betriebssystem und die Software sowie Redis reichen muss. Und aktuell reicht es auch ganz bequem aus.

Meine Erfahrung zeigt jedoch auch, dass man keine Wunder erwarten darf. Ich selbst habe die Veränderung in der Performance zwar bemerkt, ein Game Changer ist es allerdings nicht unbedingt. Daher rate ich generell eher dazu, dass man sein System bei Schwierigkeiten und Performance-Problemen genau unter die Lupe nimmt. Gibt es zum Beispiel Skripte, die besonders viel Ressourcen verbrauchen? Oder ist das System grundsätzlich an seiner Leistungsgrenze?

Hier ist es definitiv ratsam, dass man sich genug Zeit für eine Analyse nimmt und im Zweifel lieber mal bei einem anderen Nutzer oder im Forum nachfragt. Zwar machst du (insbesondere wenn du ein Backup hast) nicht unbedingt etwas kaputt, aber es hat Auswirkungen auf das gesamte System. Und diese Auswirkungen sollte man immer mit Bedacht in Kauf nehmen. Auf keinen Fall solltest du übereifrig eine Änderung vornehmen und einfach nur auf das Beste hoffen.

Ich war zu übereifrig

Als ich damals mit meinem ioBroker Probleme hatte, musste ich irgendwie einen Überblick über 120.000 Datenpunkte bekommen. Meine Recherche war zu diesem Zeitpunkt viel zu oberflächlich und ich Nachhinein kann ich sagen, dass es an einem falsch funktionierenden Adapter lag. Daher ist es immer kritisch, wenn man irgendwelche Adapter von GitHub installiert. Nun ja, wieder etwas gelernt.

Dennoch konnte ich durch die Umstellung auf Redis wieder etwas dazulernen und besser verstehen, wie eine In-Memory-Datenbank arbeitet. Gerade im Zusammenspiel mit dem Arbeitsspeicher. Auch von der Performance her habe ich eine Verbesserung bemerkt, auch wenn diese vermutlich gar nicht so stark ins Gewicht fällt. Aber nun gut. Irgendwie musste ich das ja ausprobieren, um diesen Artikel zu schreiben. 😉

Ich kann dir nur dringend empfehlen, genau die Probleme in deinem System unter die Lupe zu nehmen. Überlege dir genau, ob die Umstellung aus nachvollziehbaren Gründen passiert oder einfach nur aus Neugier. Insbesondere bei letzterem könntest du eine Testumgebung nutzen und mit dieser ein wenig herumspielen. So gefährdest du nicht dein produktives System. Außerdem ist es wichtig, dass du die Sache mit den Backups wirklich ernst nimmst. Kein Tool der Welt kann dir im Zweifel so gut helfen, wie ein korrekt durchgeführtes Backup.

Hast du schon einmal mit Redis experimentiert? Was sind deine Gedanken und Erfahrungen? Schreib es gerne in die Kommentare und lass mich an deinem Wissen teilhaben! 🙂

Kategorien: ioBroker

Avatar-Foto

Lukas

Als Softwareentwickler und Projektmanager mit einem Master of Science in Wirtschaftsinformatik weiß ich genau, wie die Dinge in der IT zu funktionieren haben. In meinem Blog kombiniere ich seit mehr als 7 Jahren mein Wissen mit meiner Neugier im Bereich Smart Home. Transparenz und Praxisnähe stehen für mich dabei im Vordergrund. Mein Fokus liegt vor allem auf der Software ioBroker, da ich mein eigenes Smart Home damit betreibe. Meine Beiträge basieren somit nicht nur auf theoretischem Know-how, sondern auch auf praktischen Erfahrungen aus meinem vernetzten Zuhause. Mein persönliches Ziel ist es, dir Einblicke in das Smart Home zu geben, die dich wirklich voranbringen.

0 Kommentare

Schreibe einen Kommentar

Avatar-Platzhalter

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert