Skip to content
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Redis in ioBroker - Überblick

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.1k

Redis in ioBroker - Überblick

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
js-controllerredis
136 Beiträge 35 Kommentatoren 58.6k Aufrufe 46 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • J JojoS

    ich habe aus Neugier auch mal Redis installiert. Unter Windows 10 geht das auch mit WSL, ich habe die Ubuntu 18.04 Tools installiert und mit 'sudo apt install redis' bekommt man eine Version 4.0.9. Ist die aktuell genug? Ich hatte zuerst die 5.0.7 von der redis website installiert und kompiliert, damit läuft ioBroker auch komplett lokal unter Win10.
    Wenn auf redis umgestellt ist und der server nicht läuft, dann startet der ioBroker Dienst nicht. Bzw. beendet wohl mit Fehler den er nicht anzeigt, nur im EventLog taucht eine Warning auf das der Controller beendet wurde.

    apollon77A Offline
    apollon77A Offline
    apollon77
    schrieb am zuletzt editiert von
    #21

    @JojoS 4.0.9 ist "ok" ... 5.x besser 🙂 Und ja wenn Du Redis nutzt muss das auch da sein, sonst startet der controller nicht.

    Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

    • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
    • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
    1 Antwort Letzte Antwort
    1
    • J Offline
      J Offline
      JojoS
      schrieb am zuletzt editiert von
      #22

      danke, und sicher, der Redis sollte up and running sein wenn man ihn benutzt. Nur wenn aus irgendeinem Grunde nicht, dann muss man erstmal suchen. Könnte in dem Fall der Controller eine statische Seite mit dem Fehler 'Redis not running' o.ä. anzeigen?

      apollon77A 1 Antwort Letzte Antwort
      0
      • J JojoS

        danke, und sicher, der Redis sollte up and running sein wenn man ihn benutzt. Nur wenn aus irgendeinem Grunde nicht, dann muss man erstmal suchen. Könnte in dem Fall der Controller eine statische Seite mit dem Fehler 'Redis not running' o.ä. anzeigen?

        apollon77A Offline
        apollon77A Offline
        apollon77
        schrieb am zuletzt editiert von
        #23

        @JojoS Ich denke im Logfile sollte generell stehen das er versucht zu connecten mit IP und Port ... Da der js.controller aber gar nicht hochfährt gibt es auch keinen Webserver (der käme ja erst vom Admin Adpter oder web oder so). Also daher ausser Logfile ist da nichts

        Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

        • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
        • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
        1 Antwort Letzte Antwort
        1
        • J Offline
          J Offline
          JojoS
          schrieb am zuletzt editiert von JojoS
          #24

          ah, richtig. Ich habe noch nicht so den Überblick 'wer macht was'. Die Fehlermeldungen sind bei einem komplexen System aber recht wichtig 🙂 Aber wenn der Webserver vom Admin nicht läuft geht das so einfach nicht.

          1 Antwort Letzte Antwort
          0
          • G Offline
            G Offline
            gutgut30
            schrieb am zuletzt editiert von
            #25

            Komme ich von Redis eigentlich wieder einfach zurück auf file?

            simatecS apollon77A 2 Antworten Letzte Antwort
            0
            • G gutgut30

              Komme ich von Redis eigentlich wieder einfach zurück auf file?

              simatecS Offline
              simatecS Offline
              simatec
              Developer Most Active
              schrieb am zuletzt editiert von
              #26

              @gutgut30 sagte in Redis in ioBroker - Überblick:

              file

              Ja das ist auch möglich ...

              • Besuche meine Github Seite
              • Beitrag hat geholfen oder willst du mich unterstützen
              • HowTo Restore ioBroker
              1 Antwort Letzte Antwort
              0
              • G gutgut30

                Komme ich von Redis eigentlich wieder einfach zurück auf file?

                apollon77A Offline
                apollon77A Offline
                apollon77
                schrieb am zuletzt editiert von
                #27

                @gutgut30 Die Migration über "Iobroker setup custom" geht in beide Richtungen

                Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                1 Antwort Letzte Antwort
                0
                • G Offline
                  G Offline
                  gutgut30
                  schrieb am zuletzt editiert von
                  #28

                  Hat geklappt! Danke

                  1 Antwort Letzte Antwort
                  0
                  • D darkiop

                    @apollon77 sagte in Redis in ioBroker - Überblick:

                    Der backitup Adapter kann sogar die Redis-DB sichern ... könnte man noch erweitern oben - Ich habe mich nur damit noch nicht beschäftigt.

                    Wobei der allerdings von einer lokalen Redis Installation ausgeht, @simatec ggf. kann man hier in Zukunft auch aufh "externe" Redis-DBs schauen?

                    @apollon77 sagte in Redis in ioBroker - Überblick:

                    Auch ich habe mein Sentinel Test-Setup in LXC-Containern auf Proxmox laufen ... fmit Docker hab ich gerade zu wenig Erfahrung. Wenn jemand einen Text schreibt nehme ich es gern oben mit auf oder (vllt sinnvoller) als extra Thread den wir dann verlinken.

                    Das strebe ich für die Zukunft evtl. auch noch an - Ein Nuc i3/i5 auf dem denn alles zusammen läuft und nicht mehr auf der Syno 918+. Wobei ich mich an Docker gewöhnt habe und eigentlich sehr zufrieden bin 😄

                    Viel gibt es da aber auch nicht zu tun. Container mit

                    docker run -d \
                    --name iobroker-redis \
                    --hostname iobroker-redis \
                    --user=1026 \
                    --volume /volume2/docker-ssd/iobroker-redis/data:/data \
                    --network=mac0 \
                    --ip=192.168.1.86 \
                    --dns=192.168.1.43 \
                    --restart=always \
                    redis:latest
                    

                    starten (Netzwerk natürlich zuvor auf eigene Umgebung anpassen).

                    Verbindung zur Redis-DB testen:

                    docker run -it --network mac0 --rm redis:latest redis-cli -h iobroker-redis
                    

                    Die Konfiguration des ioBroker erfolgt ja anlog der "lokalen" Redis Installation.

                    G Offline
                    G Offline
                    gutgut30
                    schrieb am zuletzt editiert von
                    #29

                    @darkiop
                    Ist die Angabe

                    user=1026

                    wichtig oder zufällig in deiner Config?

                    D 1 Antwort Letzte Antwort
                    0
                    • G gutgut30

                      @darkiop
                      Ist die Angabe

                      user=1026

                      wichtig oder zufällig in deiner Config?

                      D Offline
                      D Offline
                      darkiop
                      Most Active
                      schrieb am zuletzt editiert von
                      #30

                      @gutgut30 Die User-ID unter welche der Container ausgeführt wird

                      Proxmox-ioBroker-Redis-HA Doku: https://forum.iobroker.net/topic/47478/dokumentation-einer-proxmox-iobroker-redis-ha-umgebung

                      1 Antwort Letzte Antwort
                      0
                      • S Offline
                        S Offline
                        saeft_2003
                        Most Active
                        schrieb am zuletzt editiert von
                        #31

                        Was ich nicht ganz verstanden habe. Muss ich bei einem slave irgendetwas machen wenn ich auf redis unstelle?

                        apollon77A 1 Antwort Letzte Antwort
                        0
                        • S saeft_2003

                          Was ich nicht ganz verstanden habe. Muss ich bei einem slave irgendetwas machen wenn ich auf redis unstelle?

                          apollon77A Offline
                          apollon77A Offline
                          apollon77
                          schrieb am zuletzt editiert von
                          #32

                          @saeft_2003 ja klar. Den musst du identisch umstellen auf redis als dB Typ und so. Halt die ip des redis angeben. Nur nicht migrieren.

                          Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                          • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                          • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                          S M 2 Antworten Letzte Antwort
                          0
                          • apollon77A apollon77

                            @saeft_2003 ja klar. Den musst du identisch umstellen auf redis als dB Typ und so. Halt die ip des redis angeben. Nur nicht migrieren.

                            S Offline
                            S Offline
                            saeft_2003
                            Most Active
                            schrieb am zuletzt editiert von
                            #33

                            @apollon77

                            Ok danke

                            1 Antwort Letzte Antwort
                            0
                            • apollon77A apollon77

                              @saeft_2003 ja klar. Den musst du identisch umstellen auf redis als dB Typ und so. Halt die ip des redis angeben. Nur nicht migrieren.

                              M Offline
                              M Offline
                              MartyBr
                              schrieb am zuletzt editiert von
                              #34

                              @apollon77
                              Ich habe eine kurze Frage zur Umstellung von Redis -> File.
                              Ich betreibe einen Master und zwei Slaves. Beim Master ist mir alles klar. Was muss ich bei den beiden Slaves angeben? File scheint richtig zu sein. Muss ich den Master angeben? Ich habe hier viel zur Umstellung File auf Redis aber wenig zur Rückkehr auf File gerate bei einer Multi-Host Umgebung gefunden.
                              Vielleicht kannst du mir hierzu eine Hilfestellung geben.

                              Gruß
                              Martin


                              Intel NUCs mit Proxmox / Iobroker als VM unter Debian
                              Raspeberry mit USB Leseköpfen für Smartmeter
                              Homematic und Homematic IP

                              apollon77A 1 Antwort Letzte Antwort
                              0
                              • M MartyBr

                                @apollon77
                                Ich habe eine kurze Frage zur Umstellung von Redis -> File.
                                Ich betreibe einen Master und zwei Slaves. Beim Master ist mir alles klar. Was muss ich bei den beiden Slaves angeben? File scheint richtig zu sein. Muss ich den Master angeben? Ich habe hier viel zur Umstellung File auf Redis aber wenig zur Rückkehr auf File gerate bei einer Multi-Host Umgebung gefunden.
                                Vielleicht kannst du mir hierzu eine Hilfestellung geben.

                                apollon77A Offline
                                apollon77A Offline
                                apollon77
                                schrieb am zuletzt editiert von
                                #35

                                @martybr Am Ende sollten Die Ausgaben auf dem Screen selbst erklärend sein :-))

                                Bei so einer Umstellung am besten alle ioBroker hosts stoppen (Also Master und Slaves). Dann den Master auf File umstellen und migrieren. Wenn das durch ist und alles klappt (also Master starten, schauen das alles ok ist) dann die Slaves umstellen - die IP des Masters angeben für die DB IP und dort NICHT migrieren!!
                                Danach Slaves auch starten. Es kann jetzt sein das Admin die Konfigseiten der Adapter auf den Slaves noch nicht anzeigen kann. Da hilft aber noch ein "iobroker upload all" auf dem Master wenn auch beide Slaves an sind.

                                Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                                • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                                • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                                M 1 Antwort Letzte Antwort
                                1
                                • apollon77A apollon77

                                  @martybr Am Ende sollten Die Ausgaben auf dem Screen selbst erklärend sein :-))

                                  Bei so einer Umstellung am besten alle ioBroker hosts stoppen (Also Master und Slaves). Dann den Master auf File umstellen und migrieren. Wenn das durch ist und alles klappt (also Master starten, schauen das alles ok ist) dann die Slaves umstellen - die IP des Masters angeben für die DB IP und dort NICHT migrieren!!
                                  Danach Slaves auch starten. Es kann jetzt sein das Admin die Konfigseiten der Adapter auf den Slaves noch nicht anzeigen kann. Da hilft aber noch ein "iobroker upload all" auf dem Master wenn auch beide Slaves an sind.

                                  M Offline
                                  M Offline
                                  MartyBr
                                  schrieb am zuletzt editiert von
                                  #36

                                  @apollon77 Vielen Dank, das gehe ich dann mal an (natürlich vorher ein Backup machen).

                                  Gruß
                                  Martin


                                  Intel NUCs mit Proxmox / Iobroker als VM unter Debian
                                  Raspeberry mit USB Leseköpfen für Smartmeter
                                  Homematic und Homematic IP

                                  1 Antwort Letzte Antwort
                                  0
                                  • apollon77A apollon77

                                    Dieser Forum-Thread soll zum Thema ioBroker-Datenbanken und speziell der Option "Redis" als Datenbank zu nutzen informieren und Fragen beantworten. Er soll auch Hintergründe liefern, sodass jeder entscheiden kann ob dies das richtige für sein System ist oder nicht!

                                    ioBroker Datenbank - einige Hintergründe

                                    Ein ioBroker-System lebt von Daten und das diese Daten zwischen den verschiedenen Adaptern ausgetauscht werden. Adapter liefern ständig neue Informationen, in Skripten werden diese verarbeitet und basierend darauf werden neue Aktionen ausgelöst. Die dahinter liegenden Daten und Konfigurationen müssen für alle ioBroker-Komponenten performant und sicher abrufbar sein, damit das System schnell auf Änderungen reagieren kann.

                                    Wenn ioBroker installiert wird, werden in der Standardkonfiguration die Daten in integrierten Datenbanken abgelegt - diese Konfiguration wird "file" genannt.

                                    Diese integrierten Datenbanken sind erprobt, leistungsfähig und benötigen keine zusätzlich zu installierende Software. Das vereinfacht die Einrichtung und Nutzung des Systems.

                                    Konkret bedeutet "file", dass der js-controller die Objects- und States-Daten direkt in seinem RAM-Speicher verwaltet (="In-Memory Data Store"). Der Datenzugriff auf In-Memory-Daten ist extrem schnell. Nachteil ist, dass diese Daten ohne Zwischenspeicherung bei jedem Stopp des js-controllers-Prozesses verloren gehen würden.

                                    Damit die Daten nach einem Neustart des ioBroker-Servers wieder zur Verfügung stehen, werden "file"-Datenbanken bei Änderungen deshalb regelmäßig in das Dateisystem gesichert. Bei der Objects-Datenbank, die sich selten ändert, ist das 5s nach einer Änderung und bei der States-Datenbank sind es 30s nach einer Änderung. Diese Zeiten sind so gewählt, dass Performance, Verschleiß (z.B. SD-Karten) und Datensicherheit ausgewogen sind. Dieser Speichervorgang wird „Persistierung“ genannt.

                                    Die persistierten Datenbanken werden in Form von JSON-Dateien im "iobroker-data"-Ordner gespeichert. Deren Inhalt kann man sich ansehen, aber bitte keinesfalls selbst ändern.

                                    Dieses Setup wird für die meisten Installationen mit State- und Objektanzahlen bis weit in den 5-stelligen Bereich und mehreren 10.000 Ereignissen/15s selbst auf einem aktuellen Raspberrry Pi problemlos funktionieren.

                                    Wenn aber der js-controller-Prozess ständig über 50-70% CPU in Anspruch nimmt oder seine IO-Last im Dateisystem spürbar wird, kann es Zeit werden sich über den Einsatz von Redis Gedanken zu machen

                                    Redis-Datenbank - Was ist das und was bringt es?

                                    Bei Performanceproblemen wegen vieler Datenänderungen bietet ioBroker für große Systeme die Möglichkeit, alternativ zur internen Datenhaltung, die externe Datenbank-Software Redis (https://redis.io/) einzubinden. Diese Konfiguration wird "redis" genannt.

                                    Redis ist genauso wie die im js-controller integrierte "file"-Datenbank ein "In-Memory Data Store". Auch hier werden alle Daten im RAM abgelegt. Im Gegensatz zum js-controller, der in der Programmiersprache JavaScript geschrieben ist, ist Redis zu großen Teilen in C programmiert. Damit kann das für Datenhaltung optimierte Redis z.B. CPU-Ressourcen deutlich besser nutzen.
                                    Der erste Geschwindigkeitsgewinn entsteht üblicherweise, indem man die States-Datenbank auf Redis umstellt, da diese Daten viel öfter geändert werden. Bei einer Umstellung der States-Datenbanken auf Redis bleibt die RAM-Nutzung nahezu gleich. Was der js-controller einspart benötigt jetzt der zusätzliche Redis-Prozess.

                                    ioBroker unterstützte bislang die Möglichkeit, die States-Datenbank alternativ in Redis abzulegen. Neu mit js-controller 2.0 können jetzt neben Objekte auch Dateien im Redis abgelegt werden. Werden Dateien in Redis gespeichert, werden diese dort vollständig im RAM gehalten. Deswegen macht dies nur für Systeme mit mehr als 2GB Speicher Sinn!

                                    Redis muss allerdings als eigener Dienst installiert und konfiguriert werden und auch die Daten wollen beim Backup entsprechend berücksichtigt sein. Das ioBroker System wird also etwas komplexer und jeder Nutzer, der sich für Redis entscheidet, muss sich entsprechend darin einarbeiten.

                                    Redis bietet verglichen mit den internen ioBroker-Datenbanken vor allem Vorteile in den Bereichen Datenzugriffsgeschwindigkeit, IO-Management im Dateisystem und bessere Nutzung von CPU-Ressourcen. Der js-controller wird entlastet. Ein vorher träges System kann wieder schneller werden. Zudem wird damit ioBroker bis hin zu größten professionellen Installationen skalierbar.

                                    Redis einrichten

                                    Diese Anleitung wird vor allem Beispiele für Linux-Systeme wie Ubuntu oder Debian beinhalten. Wer also eine Redis-Datenbank auf einem NAS nutzt, muss bitte schauen was er genau wie anpassen muss. Achtung: Für Windows gibt es keine offiziellen Redis-Builds. Es gibt ältere Versionen die durchaus funktionieren, aber hier sollte man gut überlegen ob das der korrekte Weg ist! (https://github.com/microsoftarchive/redis)

                                    Die Abschnitte weiter unten beschäftigen sich auch damit wo man für welches Szenario den Redis am besten installiert, also bitte vor der Installation weiterlesen 🙂

                                    Unter Ubuntu und Debian sind in den Standard-Repositories meist ältere Redis Versionen enthalten. ioBroker benötigt mindestens Version 2.6.0 von Redis, aktuell ist Version 5.x.
                                    Für Ubuntu gibt es ein PPA (https://launchpad.net/~chris-lea/+archive/ubuntu/redis-server), das aktuelle Versionen bereitstellt.

                                    Mit folgenden Kommandos installiert man damit Redis auf einem Ubuntu-System:

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

                                    Danach ist Redis an sich installiert und auch bereits automatisch gestartet.

                                    Ein sudo systemctl status redis-server zeigt den Status an. Falls es bei einem Reboot nicht automatisch wieder startet hilft ein sudo systemctl enable redis-server.

                                    Redis nutzt standardmäßig Port 6379 und bringt auch ein Kommandozeilentool für den Zugriff zur Datenbank mit: redis-cli öffnet eine Shell. Der Befehl info zeigt einige Informationen zum System, Speicherverbrauch und zu den gespeicherten Daten ("Keyspace") an, der natürlich aktuell noch leer ist.

                                    Wenn man ein Single-Host -System betreibt bzw. ioBroker auf dem gleichen Host läuft dann war es das auch schon.

                                    Falls auch andere Hosts auf diesen Redis-Server zugreifen sollen (Slaves oder so), dann muss dies noch erlaubt werden. Dazu muss /etc/redis/redis.conf editiert werden und die Zeile bind 127.0.0.1 zu bind 0.0.0.0 geändert werden und direkt darunter der protected_mode auf no gesetzt werden.

                                    Danach startet sudo systemctl restart redis-server den Server mit der aktualisierten Konfiguration neu.

                                    Bitte unbedingt nach der Installation noch die Hinweise unter https://forum.iobroker.net/topic/52976/wichtiger-hinweis-für-redis-installationen beachten!

                                    Redis Backup (Persistenz) und Datensicherheits-Optionen

                                    Normalerweise ist Redis eine "In-Speicher-Datenbank". Die Daten lagern also, wie oben schon erwähnt, im RAM. Wenn Redis beendet wird sind diese also weg. Um aber auch ein Update zu ermöglichen, unterstützt Redis zwei Arten der Datenspeicherung auf Festplatte.

                                    Persistenz: RDB Dateien (Redis-Database-Dump-Datei)

                                    Die erste Option ist das Speichern des gesamten Inhalts in einer Datei (RDB), welches beim Start wieder geladen wird. Diese Speicherung kann durch Kommandos angestoßen werden (BGSAVE) oder es kann konfiguriert werden nach wie vielen Datenänderungen pro Zeit die Datei geschrieben wird. Diese Persistenz ist standardmäßig aktiviert und speichert beispielsweise mindestens alle 15 Minuten wenn es eine Änderung gab oder öfter bei mehr Änderungen.
                                    Dies zu konfigurieren sollte eine Mischung aus Datensicherheit (wie viele Daten kann man verkraften bei einem Crash zu verlieren) und Schreiblast für das Speichermedium, da immer der gesamte Inhalt geschrieben wird. Die ioBroker-eigene Datenbank speichert die Daten aktuell öfter als die Redis-Standard-Konfiguration.

                                    Persistenz: AOF Dateien (Append-Only File)

                                    Die zweite Option generiert mehr Schreiblast im Dateisystem, stellt aber sicher das die Daten ganz aktuell sind. Dazu wird fortlaufend eine sog. AOF Datei geschrieben, wo alle Änderungen immer angehängt werden. In regelmäßigen Abständen wird diese Datei dann konsolidiert und verkleinert sich damit wieder. Man erkauft sich also im Crash-Fall aktuelle Daten mit einer höheren Schreiblast. Für SD-Karten ist dies also eher nicht empfohlen. Für die Konfiguration verweise ich auf das kommentierte Konfig-File von Redis oder den untenstehenden Link.

                                    Persistenz RAM-Bedarf

                                    Wichtig ist zu beachten, dass beide Persistenz-Verfahren zum Zeitpunkt der Speicherung bzw. Konsolidierung der Daten zusätzliches RAM benötigen - teilweise das doppelte! Falls dieser RAM nicht verfügbar ist läuft - je nach Einstellungen - alles problemlos weiter. Ein Backup der Daten wird dann allerdings nicht erzeugt! Entsprechende Meldungen stehen nur im Logfile. Das muss also geprüft werden.

                                    Redis - Persistenz Anwendungsgebiete

                                    Beide Dateien kann man grundsätzlich als Backup sichern und kopieren, das Dump File ist dazu allerdings besser geeignet. Es ist allerdings auch möglich generell nur AOF zu nutzen und direkt vor dem Backup ein RDB-Dump File ganz aktuell mittels redis-cli BGSAVE erstellen lassen und dies nach ein paar Sekunden kopieren.
                                    Beide Optionen helfen allerdings nicht, wenn das Dateisystem des Rechners Fehler hat - dann sind die Daten in jedem Fall weg und man fällt auf das letzte Backup zurück. Eine Option das abzusichern sind Redis-Slaves (siehe nächster Punkt)
                                    Mehr Details zur Persistenz gibt es unter https://redis.io/topics/persistence

                                    Redis Slaves

                                    Eine zweite Möglichkeit immer aktuelle Daten als Sicherung zu haben ist die Einrichtung eines zweiten Redis-Servers, der als Slave mit dem Haupt-Redis verbunden ist. Alle Datenänderungen werden vom Master an diesen Host durchgereicht. Er muss aber auf einem zweiten Rechner (oder mindestens Dateisystem) laufen, weil sonst kein echter Vorteil existiert.

                                    Wenn der Rechner mit dem Master-Redis defekt ist, existieren immer noch die Daten nahezu Echtzeit-aktuell auf dem Slave. Man kann diesen also nutzen um einen Dump zu erstellen um den Master neu aufzusetzen, oder man macht als schnelle Lösung den Slave zum Master und ändert die Datenbank-IPs im ioBroker und ist fast aktuell wieder online.
                                    "Fast aktuell" in den letzten Sätzen bedeutet das Redis keine 100%ige Garantie für die Aktualität der Slaves gibt, da die Synchronisierung erfolgt nachdem eine Änderung schon an das Skript bestätigt wurde. Wenn der Master also abstürzt bevor eine Änderung zum Slave übertragen wurde, so ist diese gegebenenfalls im Slave nicht enthalten. Aber im Normalfall ist dies ein geringes Risiko und betrifft nur sehr wenige Änderungen - wenn überhaupt.

                                    Ein Slave schützt allerdings nicht gegen das versehentliche Löschen von Daten, da diese auf dem Slave auch direkt danach gelöscht sind. Hier helfen nur Backups.

                                    Wer also die Hardware-Möglichkeiten hat sollte, zusätzlich zum Backup einer RDB-Datei in regelmäßigen Abständen, einen Redis-Slave einrichten.

                                    Dazu installiert man Redis auf dem zweiten Host ganz normal, definiert, allerdings im redis.conf mittels replicaof den Redis-Master Host und Port. Details siehe z.B. in der kommentierten Konfig-Datei unter https://raw.githubusercontent.com/antirez/redis/5.0/redis.conf

                                    ioBroker-States-Datenbank auf Redis umstellen

                                    Wie oben bereits geschrieben finden die meisten Änderungen und Datenabfragen mit die States-Datenbank statt. Alle Datenänderungen kommen hier an und werden dann wieder auf Adapter verteilt, wenn diese sich für bestimmte Daten angemeldet haben. Eine Umstellung der States auf Redis hat damit mit Abstand den größten und spürbarsten Performance-Effekt.

                                    Wer nur die States-Datenbank umstellt, sollte den Redis-Server idealerweise auf dem gleichen Host installieren wie den ioBroker-Master. Wenn die States-Datenbank nicht verfügbar ist, beendet sich der Controller nach einer gewissen Wartezeit. Wenn der Redis also auf dem gleichen Host ist wie der Master-Controller, gibt es weniger Szenarien die zu Ausfällen führen.

                                    Die Umstellung der States erfolgt dann über:

                                    iobroker stop
                                    iobroker setup custom
                                    

                                    Dann für die "Objects" die aktuellen Einstellungen bestätigen ("file" als Typ, IP, Port 9001) und bei "States" jetzt als Typ "redis", die IP des Redis-Hostservers (bzw. 127.0.01 wenn auf dem gleichen Host) und 6379 als Port einstellen. Damit man nicht alle State-Daten verliert bietet es sich an die Daten zu migrieren, was die nächsten Fragen beid er Konfiguration abfragen.

                                    Nach der Migration kann ioBroker mit iobroker start neu gestartet werden. Falls man auch Slave-Systeme einsetzt, so müssen dort überall die gleichen Einstellungen über iobroker setup custom vorgenommen werden. Allerdings ist die Frage nach der Migration zu verneinen!

                                    Danach sollte das System problemlos wie vorher funktionieren, der js-controller allerdings weniger CPU und RAM benötigen. Der RAM-Verbrauch insgesamt sollte nahezu identisch sein, weil die State-Daten jetzt im Redis liegen und nicht mehr durch den js-controller verwaltet werden.

                                    Das Risiko bei Datenverlusten ist bei den State-Daten meist nicht so groß, da sich diese über die Zeit meist selbst wieder aktualisieren (außer z.B. bei Zählern). Hier kann man also auch beim Redis-Backup gegebenenfalls pragmatisch sein. Eines haben sollte man aber trotzdem, da Skripte gern davon ausgehen das nötigr States auch Werte haben. Nicht vergessen: Auch ioBroker muss immer noch gesichert werden, da dort immer noch die Objektdefinitionen und Dateien liegen (z.B. mit iobroker backup).

                                    ioBroker-States-/Objects-/File-Datenbank auf Redis umstellen

                                    Seit js-controller 2.0 kann auch die Objects- UND File-Datenbank durch Redis verwaltet werden. Der Schritt dies zu nutzen sollte sehr gut überlegt sein! Hier muss einiges beachtet werden, damit es im Fehlerfall nicht zu großen Problemen oder Ausfällen kommt.

                                    Welche Auswirkungen hat das?

                                    Der Haupt-Effekt alle Daten (States, Objekte UND Dateien) im Redis abzulegen ist, dass nichts davon mehr auf einzelnen Rechnern im Dateisystem liegt, sondern alles in Datenbanken im RAM vorgehalten wird. Der Zugriff ist damit, vor allem bei Files, etwas schneller - falls das Speichermedium langsam ist.

                                    Eine ioBroker Installation wird damit also sehr unabhängig. Das frühere "Master/Slave"-Denken ändert sich ebenfalls. Alle js-controller und alle Adapter verbinden sich alle zur zentralen Redis-Datenbank, welche damit zum eigentlichen Koordinator - oder in bisherigem Wortgebrauch "Master" wird. Jeder js-controller kennt nur die Adapterinstanzen die zu seinem Host gehören und kümmert sich darum, dass diese gestartet oder beendet werden. Mehr tut er nicht mehr. Falls ein js-controller Prozess ausfällt, hat das keine Auswirkungen auf die anderen js-controller.

                                    Falls jedoch der Redis-Server ausfällt oder neu gestartet wird, ist das gesamte System betroffen - wie früher beim ioBroker-Master-Controller.

                                    Auch der Fakt das sämtliche Daten im Redis liegen bedeutet, dass man sich ein gutes Backup-Konzept ausdenken muss und auf dem Redis-System auch genügend RAM verfügbar haben muss. Da nun auch alle Dateien im RAM abgelegt sind, kann die Redis-Datenbank schnell auch mal einige hundert MB groß werden!

                                    Warum/Wann sollte man das tun?

                                    Diese komplette Umstellung wird (im Vergleich zu rUmstellung der States-Datenbank) nicht so wirklich große Performance-Gewinne mit sich bringen. Also warum ist das sinnvoll?
                                    Es gibt mehrere valide Anwendungsfälle. Einige davon hier als Beispiel. Ihr habt mehr? Berichtet gern unten im Thread.

                                    Vorweg: Wenn Ihr einen ioBroker-Host nutzt und keine Slaves, dann ist diese Option für Euch in meinen Augen nicht sonderlich sinnvoll. Die eigentlichen Stärken werden erst durch ein verteiltes ioBroker-System wirklich ausgenutzt.

                                    1. Wer eine NAS hat, welche sowieso 24/7 läuft, genug verfügbares RAM und die Option hat dort einen Redis-Server laufen zu lassen kann so eine sichere Datenspeicherung erreichen. Durch ein darunter liegendes RAID ggf. sehr sicher. Die ioBroker Server können damit einfache Raspis mit SD Karten sein. Dort werden die Adapter installiert und ausgeführt. Da aber viel weniger Daten im Dateisystem geschrieben werden halten die SD-Karten ggf. um einiges länger. Auf den Raspis aber Redis-Slaves laufen zu lassen mit allen Daten ist wohl nur bei Raspi 4 mit 4GB RAM sinnvoll. In so einem Szenario, und ausgehend von echten HDDs im NAS, eignet sich die AOF-Persistenz mit regelmäßigem RDB-Backup (auf einen anderen Host als die NAS) recht gut. Die NAS wird allerdings zum "Single-Point-of-Failure" - ist Sie defekt ist ioBroker ebenfalls offline. Dies lässt sich nur mit mindestens einem gesonderten Redis-Slave absichern.

                                    2. Wer mehr Flexibilität möchte wie das ioBroker System aufgestellt werden kann und auch einzelne Hosts mal offline nehmen können will, ohne dass der ganze Rest auch betroffen ist, kann ebenfalls diese Option überlegen. Wichtig ist allerdings das genügend RAM verfügbar ist und auch ein Backup bzw. ein Slave verfügbar ist

                                    3. Geplant wurde das Feature in Vorbereitung für die Möglichkeit ein ioBroker System hochverfügbar zu machen. Dazu ist aber noch einiges mehr nötig. Siehe dazu im nächsten Beitrag "Redis Sentinel“.

                                    Die Umstellung

                                    Die Umstellung ist am Ende so einfach wie bei der States-Umstellung:

                                    iobroker stop
                                    iobroker setup custom
                                    

                                    Dort bei beiden Datenbanken den Typ "redis" wählen, IP und Port des Redis-Hosts eingeben und ggf. die Daten migrieren. Das wird eine Weile dauern. Bitte alle Hinweise während der Umstellung beachten.

                                    States und Objekte im gleichen oder getrennten Redis-Prozessen?

                                    Am einfachsten ist es natürlich, States und Objekte zusammen in einem Redis-Prozess speichern zu lassen. Dies bedeutet allerdings auch das nur alle Daten zusammen gesichert werden können. Bei der ioBroker File-DB waren States, Objekte und Files getrennt und konnten so selektiv gesichert werden. Auch die Schreiblast ist, wenn alles in einem Redis gespeichert ist, höher, da die Datenbank größer ist.

                                    Um auch mit einem Redis-Setup die sich oft ändernden States und nicht so oft geänderten Objekte und Dateien zu trennen, kann man einfach zwei Redis-Prozesse je Host nutzen. Anleitungen dazu gibt es zB unter https://gist.github.com/inecmc/f40ca0ee622e86999d9aa016c1b15e8c .

                                    Bei iobroker setup custom werden einfach die jeweiligen unterschiedlichen Ports für States bzw. Objekte/Dateien angegeben.

                                    A Offline
                                    A Offline
                                    aba320
                                    schrieb am zuletzt editiert von aba320
                                    #37

                                    @apollon77 Danke für diese super Anleitung! Mein iobroker system wurde deutlich zu langsam. aber mit Deiner Hilfe hat alles super geklappt Master und 1 slave bisher. der 2 Slave für weite Gpios folgt bald. und vor allem hab ich mich damit endlich an redis getraut!
                                    und am wichtigsten er reagiert wieder viel schneller. war vorallem bei objektabfragen und in der Vis aufgefallen.

                                    HW: Raspimatic 3B+ ;3.69.7.20230506; RPI-RF-MOD
                                    ioBrokermaster auf Raspi 4 8 GB; ioBrokerslave auf Raspi 4 4 GB

                                    apollon77A 1 Antwort Letzte Antwort
                                    0
                                    • A aba320

                                      @apollon77 Danke für diese super Anleitung! Mein iobroker system wurde deutlich zu langsam. aber mit Deiner Hilfe hat alles super geklappt Master und 1 slave bisher. der 2 Slave für weite Gpios folgt bald. und vor allem hab ich mich damit endlich an redis getraut!
                                      und am wichtigsten er reagiert wieder viel schneller. war vorallem bei objektabfragen und in der Vis aufgefallen.

                                      apollon77A Offline
                                      apollon77A Offline
                                      apollon77
                                      schrieb am zuletzt editiert von
                                      #38

                                      @aba320 Aber an alle Pitfalls und so denken und Backup und so!! Und auch die I/O bedenken!

                                      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                                      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                                      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                                      K 1 Antwort Letzte Antwort
                                      0
                                      • D Offline
                                        D Offline
                                        darkiop
                                        Most Active
                                        schrieb am zuletzt editiert von
                                        #39

                                        Hallo zusammen, passend zum Thema gibts es hier eine Dokumentation eines kompletten HA Setups: https://forum.iobroker.net/topic/47478/dokumentation-einer-proxmox-iobroker-redis-ha-umgebung

                                        Proxmox-ioBroker-Redis-HA Doku: https://forum.iobroker.net/topic/47478/dokumentation-einer-proxmox-iobroker-redis-ha-umgebung

                                        1 Antwort Letzte Antwort
                                        1
                                        • apollon77A apollon77

                                          @aba320 Aber an alle Pitfalls und so denken und Backup und so!! Und auch die I/O bedenken!

                                          K Offline
                                          K Offline
                                          kla960
                                          schrieb am zuletzt editiert von
                                          #40

                                          @apollon77

                                          Ändert sich durch die Umstellung der Datenbank von "file" auf "jsonl" etwas an den Pro/Contra Argumenten im vergleich zu Redis?

                                          apollon77A 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          494

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe