NEWS
Redis, wat issn dat[Gelöst]
-
Alle images auf iobroker.net sind mit redis. Ist es dann dort nicht auch als default aktiviert? `
Die frage müsste @Homoran beantworten er macht die images
-
Ja,
Alle Images laufen mit Redis.
Dies stammt aus der Zeit, als weitestgehend nur RasPi (2?) verwendet wurden.
Redis erhöht IMHO die Performance deutlich.
Natürlich ist dies auch in einem Backup enthalten.
Soll also ein Backup benutzt werden um auf einer anderen Installation ohne redis wieder restored zu wetden, muss vor der Erstellung des Backups wieder auf filebasierte Speicherung der States umgeschaltet werden.
Dazu in der Konsole aufrufen
cd /opt/iobroker sudo iobroker setup custom
Alle Zeilen mit ENTER bestätigen und gut ist.
Dann das Backup erstellen.
Hier noch etwas Lesestoff
https://github.com/ioBroker/ioBroker.js … -states-db
Gruß Rainer
-
Bisher verwende ich redis nicht, daher meine Frage: Wo wird die Datenbank (dump.rdb) auf der Disk gespeichert ?
Weitere Frage: Weshalb sollte redis die Performance steigern ? Die Datenbank wird zwar im RAM gehalten, aber typisch alle 5 Minuten auf der Disk gesichert.
# Save the DB on disk: # # save <seconds><changes># # Will save the DB if both the given number of seconds and the given # number of write operations against the DB occurred. # # In the example below the behaviour will be to save: # after 900 sec (15 min) if at least 1 key changed # after 300 sec (5 min) if at least 10 keys changed # after 60 sec if at least 10000 keys changed # # Note: you can disable saving completely by commenting out all "save" lines. # # It is also possible to remove all the previously configured save # points by adding a save directive with a single empty string argument # like in the following example: # # save "" save 900 1 save 300 10 save 60 10000</changes></seconds>
Wird die Option file (states.json) gewählt, so werden ebenfalls sämtliche Zustände (states) im RAM gepuffert. Die Datei statesInMemServer.js habe ich so angepasst, dass der Puffer nur alle 10 Minuten auf die Disk gesichert wird (ohne Manipulation alle 30 s).
-
Weitere Frage: Weshalb sollte redis die Performance steigern ? Die Datenbank wird zwar im RAM gehalten, aber typisch alle 5 Minuten auf der Disk gesichert. `
Ich habs auch noch nicht ganz durchblickt, aber anscheinend ist einer der großen Performancegewinne, dass das Speichern auf der Platte durch einen Fork geschieht, während der Parent-Prozess fleißig weiter Anfragen beantwortet. ioBroker (fileDB) speichert soweit ich weiß mittels JSON.stringify, was für große Datenstrukturen verdammt langsam sein kann.Die Performance in der Benutzung soll wohl auch durch optimierte Datenstrukturen kommen und vor allem Speichereffizienz betreffen:
> Implementation of data structures stress on memory efficiency, so data structures inside Redis will likely use less memory compared to the same data structure modeled using an high level programming language.
-
Ich würde sagen das in dem Fall Redis eine "In-Memory-DB" ist die genau auf diese Aufgabe spezialisiert ist nativ geschrieben ist in C/C++. Noch wichtiger ist das Sie nativ unterstützt das man sich auf Änderungen subscriben kann und das als Trigger bekommt. Das sind die ganzen "State-Subscriptions" die ioBroker an vielen Stellen verwendet.
Bei den "ioBroker-eigenen" Implementierungen ist das alles in nodejs implementiert und die Subscriptions sind alle "Logik". Das kann Performancemäßig niemals so gut sein wie Redis. Und die ganze State-Logik läuft im zentralen js.controller-prozess ab der damit natürlich neben den anderen Dingen auch hier noch "belastet" wird. Wenn Redis eingesetzt wird ist das alles weggekapselt.
Am Ende ist die i/o-Sicht wohl identisch in der Standardkonfig. Wobei man dann halt (in beiden Fällen) Datenverluste hat - bei Redis ggf mehr als bei ioBroker weil ioBroker glaube alle 30s speichert oder so.
Mit Redis (und ner SSD/HDD) kann ich nur ADF als Persistenz empfehlen (da schreibt Redis quasi ein Logfile was dann regelmäßig konsolidiert wird, damit gibt es aber keinen Datenverlust). Und mit Slaves kann man nochmal den Stand der States auf einem anderen Rechner sichern.
Ingo
-
Was ist ADF?
Gesendet von iPad mit Tapatalk
-
Entschuldigung … AOF ... https://redis.io/topics/persistence
-
Hallo,
vielen Dank für die Hinweise. Jetzt bin ich wieder etwas schlauer geworden.
Vielen Dank für den Hinweis das Redis auszuschalten. Das wusste ich nicht.
Vielen Dank nochmals.
-
Hi,
da fällt mir doch noch eine Fage dazu ein.
Wie kann ich denn erkennen ob Redis installiert ist bzw. läuft :?:
Gruß totocotonio
-
Im Zweifel versuchen zu installieren mit „apt-get install redis-server“. Danach ists installiert
-
Redis-server kann ja laufen ohne dass iobroker dahin verbunden ist?
Kann man das auch auslesen?
Wenn ich iobroker setup custom mache wird ja bei den Optionen immer default angezeigt und nicht der aktuelle Zustand.
Gruß Rainer
-
Naja du könntest mit "redis-cli" zum Redis verbinden und dort abfragen wer so verbunden ist:
-
Bisher verwende ich redis nicht, daher meine Frage: Wo wird die Datenbank (dump.rdb) auf der Disk gespeichert ? `
Ich hole die Frage noch einmal hoch, da sie bisher nicht beantwortet wurde. -
Hallo Paul,
ich würde dir gerne helfen, weiss es aber nicht.
Um zu suchen: ist diese dump.rdb bei redis (RedisDatenBank??)
Gruß
Rainer
-
Um zu suchen: ist diese dump.rdb bei redis (RedisDatenBank??) `
Laut Doku von redis ist der Standardname der Datei dump.rdb. Allerdings habe ich nicht gefunden, wo diese abgespeichert wird. Ich vermute mal, dass dies konfigurierbar ist. Wenn Du die Standardkonfiguration nicht geändert hast, wird die Datei in Deinen Images in einem Standardverzeichnis sein. Nur welches ist das ?Anmerkung: Ich würde nach *.rdb suchen.
Wird die Datei bei einem Backup von ioBroker mit gesichert ?
-
-
Hab sie:
dump.rdb /var/lib/redis
temp-31527.rdb /var/lib/redis
Gruß
Rainer
-
Danke Rainer
@Homoran:Wird die Datei bei einem Backup von ioBroker mit gesichert ?
Meines wissens nicht. `
Dann kann es nach einem Restore auf einem neuen System (einer neuen SD Card) passieren, dass lange Zeit keine States zu Datenpunkten existieren und getState(id) zu einer Fehler- bzw. Warnungsmeldung führt. -
Ich war immer davon ausgegangen, dass diese States genauso schnell angelegt werden, wie bei einer Neuinstallation.
(Also nach etwa 5 Minuten sollte alles da sein)
je länger ich darüber nachdenke:
Das müssen dann aber auch Datenpunkte sein, die nur selten beschrieben werden.
Da müsste ich dann mal über eine Backupstrategie nachdenken
Oder redis weglassen, obwohl beim RasPi2 war der Performancegewinn deutlich spürbar
Gruß
Rainer
-
Das müssen dann aber auch Datenpunkte sein, die nur selten beschrieben werden. `
Ja, wie z.B. einige Datenpunkte vom Kanal 0 der HM Geräte.