Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Redis Umstellung ja oder nein?

    NEWS

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    Redis Umstellung ja oder nein?

    This topic has been deleted. Only users with topic management privileges can see it.
    • apollon77
      apollon77 last edited by

      Aaaaaaaaalso:

      Für kleine bis "normale" Installationsgrößen reicht der "Standardmechanismus". Dieser besteht aus einem von Bluefox geschriebenen "Memory-Key-Value-Store" wo alle States abgelegt werden und regelmäßig (glaube alle 30s bei Änderungen) auf Platte geschrieben werden als JSON File. Einerseits ist es halt ein in nodejs implmentierter Store der ggf nicht der 100%ig performanteste ist und auch das regelmäßige schreiben des states.json verursache je nach größe halt I/O und bei SD Karten einfach Schreibzyklen. Also je mehr States man hat desdo unperformanter wird das ganze.

      Die objects.json wird mit dem gleichen mechanismus behandelt ist aber nicht so problematisch an der Stelle weil sich die Objekt-Metabeschreibungen eher selten ändern, aber ist als File meist größer.

      Vorteil ist: Ein ioBroker-Backup enthält JSON Files mit und damit ist alles enthalten.

      Zusätzlich gibt es die Option die States in einem "Redis Memory-Key-Value-Store" abzulegen. Redis ist hochperformant für genau diesen zweck entwickelt und damit sehr performant. ABER es ist halt ein weiteres "Stück Software" was Leute installieren, verstehen, maintainen müssen und das Backup darf auch nicht vergessen werden.

      Früher in ersten ioBroker-Versionen war Redis mal eine Zwangsanforderung und das Ergebnis war das es die User nicht hinbekommen haben weil zu viele Vorbedingungen erfüllt sein mussten. Daher wurde der oben beshriebene Standardmechanismus geschaffen.

      Bei Redis muss man sich um das Backup selbst kümmern weil der Standardmäßig alles NUR im Speicher hält. Ein Restart des prozesses sorgt also für einen leeren Zustand. Das geht weil die States ja über die Zeit wieder reinkommen, aber man verliert ggf für Skripte sinnvolle "initialwerte". Also man muss das bei seinen Skripten berücksichtigen.

      ODER man muss sich mit den Persistenzoptionen von Redis auseinandersetzen. Grob: Man kann Redis nach Anzahl Änderungen in Zeit zwingen seinen Stand auf Platte zu schreiben oder mit einem eigenen Befehl. Dann liesst er den zuletzt gespeicherten Stand beim Start ein. Oder Redis schreibt alles in eine Art "Log"-File und kann somit immer den letzten Stand wiederherstellen.

      Persistenz bei Redis verursacht also auch I/O, je nachdem weniger oder mehr als der ioBroker-Eigene Mechanismus. Dennoch konnten die meisten eine Performancesteigerung bemerken, vor allem ausgedrückt durch weniger CPU-Last.

      Zur Absicherung vor SD-Karten schäden kann man Redis-Slaves anlegen die dann auch alle State-Daten haben und so sicherstellen das eine neue installation die letzten State-Daten hat. Aber da gehts in Richtung Notfallkonzepte was noch spezieller wird.

      Daher aus meiner Sicht: Wenn die Installation langsam größer wird und man merkt das der js-controller "viel" CPU braucht und man sicher ist das nicht die SD-Karte gerade in die Knie geht und man sich in das Thema reinarbeiten will, kann man sich mal mit Redis beschäftigen. man muss es dann aber auch … sonst wundert man sich plötzlich warum alle States leer sind 🙂

      Ingo

      1 Reply Last reply Reply Quote 2
      • K
        Kueppert last edited by

        @apollon77:

        Aaaaaaaaalso:

        Für kleine bis "normale" Installationsgrößen reicht der "Standardmechanismus". Dieser besteht aus einem von Bluefox geschriebenen "Memory-Key-Value-Store" wo alle States abgelegt werden und regelmäßig (glaube alle 30s bei Änderungen) auf Platte geschrieben werden als JSON File. Einerseits ist es halt ein in nodejs implmentierter Store der ggf nicht der 100%ig performanteste ist und auch das regelmäßige schreiben des states.json verursache je nach größe halt I/O und bei SD Karten einfach Schreibzyklen. Also je mehr States man hat desdo unperformanter wird das ganze.

        Die objects.json wird mit dem gleichen mechanismus behandelt ist aber nicht so problematisch an der Stelle weil sich die Objekt-Metabeschreibungen eher selten ändern, aber ist als File meist größer.

        Vorteil ist: Ein ioBroker-Backup enthält JSON Files mit und damit ist alles enthalten.

        Zusätzlich gibt es die Option die States in einem "Redis Memory-Key-Value-Store" abzulegen. Redis ist hochperformant für genau diesen zweck entwickelt und damit sehr performant. ABER es ist halt ein weiteres "Stück Software" was Leute installieren, verstehen, maintainen müssen und das Backup darf auch nicht vergessen werden.

        Früher in ersten ioBroker-Versionen war Redis mal eine Zwangsanforderung und das Ergebnis war das es die User nicht hinbekommen haben weil zu viele Vorbedingungen erfüllt sein mussten. Daher wurde der oben beshriebene Standardmechanismus geschaffen.

        Bei Redis muss man sich um das Backup selbst kümmern weil der Standardmäßig alles NUR im Speicher hält. Ein Restart des prozesses sorgt also für einen leeren Zustand. Das geht weil die States ja über die Zeit wieder reinkommen, aber man verliert ggf für Skripte sinnvolle "initialwerte". Also man muss das bei seinen Skripten berücksichtigen.

        ODER man muss sich mit den Persistenzoptionen von Redis auseinandersetzen. Grob: Man kann Redis nach Anzahl Änderungen in Zeit zwingen seinen Stand auf Platte zu schreiben oder mit einem eigenen Befehl. Dann liesst er den zuletzt gespeicherten Stand beim Start ein. Oder Redis schreibt alles in eine Art "Log"-File und kann somit immer den letzten Stand wiederherstellen.

        Persistenz bei Redis verursacht also auch I/O, je nachdem weniger oder mehr als der ioBroker-Eigene Mechanismus. Dennoch konnten die meisten eine Performancesteigerung bemerken, vor allem ausgedrückt durch weniger CPU-Last.

        Zur Absicherung vor SD-Karten schäden kann man Redis-Slaves anlegen die dann auch alle State-Daten haben und so sicherstellen das eine neue installation die letzten State-Daten hat. Aber da gehts in Richtung Notfallkonzepte was noch spezieller wird.

        Daher aus meiner Sicht: Wenn die Installation langsam größer wird und man merkt das der js-controller "viel" CPU braucht und man sicher ist das nicht die SD-Karte gerade in die Knie geht und man sich in das Thema reinarbeiten will, kann man sich mal mit Redis beschäftigen. man muss es dann aber auch … sonst wundert man sich plötzlich warum alle States leer sind 🙂

        Ingo ` Hallo Ingo,

        würdest du redis auch rüber SQL Datenbank vorziehen? Ich war bisher der Meinung, das wäre noch am sichersten, wenn man bereits eh eine auf einen anderen Gerät hat…?!

        VG Thorsten

        PS: ich nutze die Datenbank nur zum ablegen, auskennen tue ich mich noch nicht so sehr 🙂

        Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk

        1 Reply Last reply Reply Quote 0
        • eric2905
          eric2905 last edited by

          Da vermischt Du aber zwei Themen.

          SQL ist für die Speicherung der aktuellen Daten von ioBroker (State, usw.) viel zu langsam. Entweder auf Platte (das oben beschriebene Verfahren) oder aber Redis (alles ins RAM), was natürlich viel schneller ist.

          SQL wird, wie der History-Adapter (speichert auch in eine Datei) oder Influx, usw. auch, für die Aufzeichnung (Historisierung) von Daten verwendet, um dann Diagramme daraus zu erzeugen.

          Gruß,

          Eric

          Von unterwegs getippert

          1 Reply Last reply Reply Quote 0
          • apollon77
            apollon77 last edited by

            Korrekt, die History/SQL/InfluxDB-Adapter die Daten Historisieren haben mit der Speicherung der States nichts zu tun.

            Auch wenn leicht Off-Topic: Hier aber auch: History speichern JSON-Files auf der Platte und vor allem bei Abfragen bzw Diagrammen werden nötige Daten immer wieder von der Platte geladen. Also kommt hier wieder I/O ins Spiel. Das ist also nicht wirklich performant. SQL-Datenbanken oder InfluxDB sind auf solche Aufgaben Spezialisiert, aber auch wieder Komplexer weil "Software" die man installieren, updaten, backuppen und so muss.

            1 Reply Last reply Reply Quote 0
            • A
              andyb last edited by

              @apollon77:

              Bei Redis muss man sich um das Backup selbst kümmern weil der Standardmäßig alles NUR im Speicher hält.

              Grob: Man kann Redis nach Anzahl Änderungen in Zeit zwingen seinen Stand auf Platte zu schreiben oder mit einem eigenen Befehl. Dann liesst er den zuletzt gespeicherten Stand beim Start ein.

              Oder Redis schreibt alles in eine Art "Log"-File und kann somit immer den letzten Stand wiederherstellen.

              Zur Absicherung vor SD-Karten schäden kann man Redis-Slaves anlegen die dann auch alle State-Daten haben und so sicherstellen das eine neue installation die letzten State-Daten hat.

              Ingo `

              Also ich lese diese 4 Punkte raus wo es zu beachten gilt. Gibt es denn ein HowTo dafür?

              1 Reply Last reply Reply Quote 0
              • apollon77
                apollon77 last edited by

                ich denke bisher hat sich jeder das Wissen selbst angesammelt (oder auch nicht) bzw ist verstreut in Forums-Einträgen 😞

                Aber die Idee ist gut.

                ich schreibs mal auf meine Liste das aufzuschreiben, bin aber auch nicht böse wenn jemand anders schneller ist. Ich kann gern - vor allem zu "persistenz" die Begriffe und Richtungen vorgeben und mal meine Konfig mit dazugeben

                1 Reply Last reply Reply Quote 0
                • C
                  crepp last edited by

                  Kurze Frage zu Redis im Multihost-Betrieb muss ich die Einstellungen für Redis (setup iobroker custom) auch auf dem Slave machen )

                  1 Reply Last reply Reply Quote 0
                  • Homoran
                    Homoran Global Moderator Administrators last edited by

                    Ja!

                    und zu der IP des Masters leiten.

                    Und unbedingt die IP des slaves (oder alle) in der konfig von redis freigeben.

                    http://www.iobroker.net/docu/?page_id=3 … _mit_redis

                    Gruß

                    Rainer

                    1 Reply Last reply Reply Quote 0
                    • eric2905
                      eric2905 last edited by

                      @Rainer:

                      Bald können wir alle Dokus nur noch hier im Forum ablegen …. auf die Webseite scheint keiner mehr zu schauen oder dort mal zu suchen. [emoji6]

                      Von unterwegs getippert

                      1 Reply Last reply Reply Quote 0
                      • C
                        crepp last edited by

                        Na die doku habe ich schon genutzt, aber die Frage die ich gestellt hatte, hab ich in der Anleitung nicht gefunden. 😉

                        1 Reply Last reply Reply Quote 0
                        • Homoran
                          Homoran Global Moderator Administrators last edited by

                          Die Frage ist jetzt aber beantwortet?

                          oder reicht die Doku im Link nicht?

                          Gruß

                          Rainer

                          1 Reply Last reply Reply Quote 0
                          • arteck
                            arteck Developer Most Active last edited by

                            @crepp:

                            Kurze Frage zu Redis im Multihost-Betrieb muss ich die Einstellungen für Redis (setup iobroker custom) auch auf dem Slave machen ) `

                            ja, aber aufpassn nur für "Type of states DB" nicht für "Type of objects DB"

                            1 Reply Last reply Reply Quote 0
                            • C
                              crepp last edited by

                              @Homoran:

                              Die Frage ist jetzt aber beantwortet?

                              oder reicht die Doku im Link nicht?

                              Gruß

                              Rainer `

                              Nein ist alles gut, Habe die Umstellung nun hinbekommen.

                              Allerdings hatte ich dann im Nachinein Probleme im Multihostbetrieb (Konnte den Slave nicht mehr connecten) setup custom habe ich nach Anleitung gemacht. Auf dem Master hatte Redis problemlos funktioniert. Da mir der Multihostbetrieb aber wichtiger ist, habe ich nach einem Wochenende Frickelei mit Redis/Multihost Montag früh Redis wieder abgeschaltet. (Habe aber noch ein anderes, grösseres Problem) Leider habe ich im Forum dazu noch keine Antwort erhalten und stehe da bisschen auf dem Schlauch. http://forum.iobroker.net/viewtopic.php?f=37&t=10665

                              1 Reply Last reply Reply Quote 0
                              • Homoran
                                Homoran Global Moderator Administrators last edited by

                                Den Abschnitt über dem verlinkten hast du aber auch gelesen und befolgt?

                                http://www.iobroker.net/docu/?page_id=3 … ersion_110

                                Gruß Rainer

                                1 Reply Last reply Reply Quote 0
                                • C
                                  crepp last edited by

                                  Ja habe ich alles gemacht.

                                  1 Reply Last reply Reply Quote 0
                                  • First post
                                    Last post

                                  Support us

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

                                  562
                                  Online

                                  32.1k
                                  Users

                                  80.6k
                                  Topics

                                  1.3m
                                  Posts

                                  9
                                  24
                                  4914
                                  Loading More Posts
                                  • Oldest to Newest
                                  • Newest to Oldest
                                  • Most Votes
                                  Reply
                                  • Reply as topic
                                  Log in to reply
                                  Community
                                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                  The ioBroker Community 2014-2023
                                  logo