Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Wichtiger Hinweis für Redis Installationen!

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Wichtiger Hinweis für Redis Installationen!

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

      Hi,

      English version below ...

      wer ioBroker mit Redis einsetzt - vor allem wenn auch die Objects im Redis liegen - muss bitte sicherstellen das eine Systemeinstellung korrekt gesetzt ist. Auf diese haben wir leider keinen direkten Einfluss weil er von dem Betriebssystem abhängt wo der Redis-Server installiert ist und läuft.

      Am Ende geht es um die eingestellte Locale des Systems. Die Locale hat einen Einfluss wie im Redis Zeichenketten verglichen werden, was ggf zu falschen Antworten führen kann.

      Systemeinstellung testen

      Um zu testen ob etwas geändert werden muss gibt es zwei Wege:

      1.) Über redis-cli an der Kommandozeile die Redis-Shell öffnen und dann EVAL "return 'c-i.t' >= 'c.' and 'c-i.t' < 'c.香'" 1 1 ausführen. Wenn das Ergebnis (nil) ist 8siehe Grafik unten) ist alles ok und nichts muss geändert werden. Sollte das Ergebnis allerdings "1" sagen, so ist die Locale falsch eingestellt und muss korrigiert werden

      2.) An einer normalen SSH Shell locale eingeben und schauen was bei "LANG" gesetzt ist, wenn die Ausgabe "LANG=C" (oder "LANG=" (nichts)) enthält, noch schauen ob bei "LC_ALL" etwas gesetzt ist. Falls eins davon zB "en-GB.UTF-8" oder "de-DE.UTF-8" oder ein anderer String als "C" bzw "leer" ist , so muss dieser korrigiert werden.

      So ist es ok!
      Bildschirmfoto 2022-02-28 um 21.51.53.png

      Systemeinstellung korrigieren

      Um die Einstellung zu korrigieren gibt es drei Optionen

      Option 1: Konfiguration Redis-Server anpassen

      Dazu muss das Service-File des Redis-Services editiert werden.

      • Hierzu mittels systemctl status redis-server den Pfad des Service Files rausfinden
        Bildschirmfoto 2022-02-28 um 21.58.07.png
      • Dann das Service File editieren mit dem Texteditor (und mit sudo) Eurer Wahl (im Falle hier ist es in /lib/systemd/system/redis-server.service). Dort unter [Service] (das gibts schon) eine Zeile einfügen, dass es dann so aussieht:
      ...
      [Service]
      Environment="LC_ALL=C"
      ...
      
      • Danach mittels sudo systemctl daemon-reload das Service aktualisieren das die Änderungen bekannt sind
      • Mit sudo systemctl restart redis den Dienst neu starten oder Rebooten.

      Danach bitte Test wiederholen.

      Option 2: Systemweite Änderung

      Hierzu gilt aber zu bedenken das das ggf auch andere Auswirkungen haben kann (nicht auf ioBroker! aber ggf auf andere Software). Wenn auf dem System nur ioBroker und Redis läuft oder nur der Redis dann ist das ggf der einfachste Weg.

      sudo localectl set-locale LANG=C

      Dann Rebooten. Dann gern nochmal das obige testen, was jetzt gefixt sein sollte.

      Wir planen das mit js-controller 4.1 (Q4/22) das zu prüfen und die User darauf hinzuweise, bis dahin muss es allerdings so reichen 🙂

      Option 3: via Redis Config:

      siehe https://forum.iobroker.net/post/1114246


      English version:

      Hi,

      if you use ioBroker with Redis - especially if the objects are located in Redis - please make sure that one system setting is set correctly. Unfortunately we have no direct influence on this because it depends on the operating system where the Redis server is installed and running.

      At the end it is about the set locale of the system. The locale has an influence on how strings are compared in Redis, which can lead to wrong answers.

      Test system settings

      To test if something has to be changed there are two ways:

      1. Open the Redis shell via redis-cli at the command line and then EVAL "return 'c-i.t' >= 'c.' and 'c-i.t' < 'c.香'" 1 1 execute. If the result is (nil) (see graphic below) everything is ok and nothing needs to be changed. However, if the result says "1", then the locale is set incorrectly and needs to be corrected.

      2. At a normal SSH shell type locale and look what is set at "LANG", if the output contains "LANG=C" (or "LANG=" (nothing)), still look if something is set at "LC_ALL". If one of them is e.g. "en-GB.UTF-8" or "de-DE.UTF-8" or another string than "C" or "empty" it must be corrected.

      So it is ok!
      Bildschirmfoto 2022-02-28 um 21.51.53.png

      Correct system setting

      There are three options to correct the setting

      Option 1: Adjust the configuration of the Redis server.

      To do this, the service file of the Redis service must be edited.

      • Use systemctl status redis-server to find out the path of the service file.
        Bildschirmfoto 2022-02-28 um 21.58.07.png
      • Then edit the service file with the text editor (and with sudo) of your choice (in the case here it is in /lib/system/system/redis-server.service). There under [Service] (that already exists) insert a line, that it looks like this:
      ...
      [Service]
      Environment="LC_ALL=C"
      ...
      
      • Afterwards with sudo systemctl daemon-reload update the service so that the changes are known.
      • Restart or reboot the service with sudo systemctl restart redis.

      After that please repeat the test.

      Option 2: System wide change

      But keep in mind that this may have other effects (not on ioBroker! but possibly on other software). If the system runs only ioBroker and Redis or only Redis then this might be the easiest way.

      sudo localectl set-locale LANG=C

      Then reboot. Then test the above again, which should be fixed now.

      Option 3: via Redis Config:

      see https://forum.iobroker.net/post/1114246

      We plan to test this with js-controller 4.1 (Q4/22) and inform the users about it, but until then it has to do like this 🙂

      Ingo

      haus-automatisierung hydrotec OliverIO Garfonso 4 Replies Last reply Reply Quote 5
      • haus-automatisierung
        haus-automatisierung Developer Most Active @apollon77 last edited by

        @apollon77 Vielen Dank für die Info! Wäre es eventuell sinnvoll, das Thema auch noch in dieser Dokumentation zu ergänzen? https://github.com/ioBroker/ioBroker.js-controller#redis-as-database

        apollon77 1 Reply Last reply Reply Quote 1
        • apollon77
          apollon77 @haus-automatisierung last edited by apollon77

          @haus-automatisierung Ja da kommt es noch rein :-))

          EDIT: Ist erweitert ... Aktuell zudiesem deutschen Post verlinkt, Englische Übersetzung noch nötig

          M 1 Reply Last reply Reply Quote 1
          • M
            Marty56 @apollon77 last edited by

            @apollon77 Danke für den Hinweis.
            Was mich noch interessieren würde, wäre die Auswirkung dieser falschen Redis Konfiguration. Ich hatte den Server mindestens 1 Jahr mit der falschen Konfiguration laufen und habe es nicht bemerkt.

            Thomas Braun Meister Mopper apollon77 D 4 Replies Last reply Reply Quote 0
            • Thomas Braun
              Thomas Braun Most Active @Marty56 last edited by

              @marty56

              Die Verwendung einer anderern locale als C führt zu einer geänderten Sortierreihenfolge von Sonderzeichen.

              Dadurch kann es dann bei Aktionen mit Adapterfamilien wie z. B. vis / vis-widget / vis-IRGENDWAS bei Installationen / Deinstallationen zu ungewolltem Verhalten führen.

              1 Reply Last reply Reply Quote 0
              • Meister Mopper
                Meister Mopper @Marty56 last edited by

                Interessant ist jetzt für mich, ob es auch in Ordnung ist, wenn man abweichend von den dargestellten Ergebnissen dieses hat (da läuft nur ein iobroker und redis):

                thomas@ioTest:~$ redis-cli
                127.0.0.1:6379> EVAL "return 'c-i.t' >= 'c.' and 'c-i.t' < 'c.香'" 1 1
                (nil)
                127.0.0.1:6379>
                
                thomas@ioTest:~$ locale
                LANG=de_DE.UTF-8
                LANGUAGE=
                LC_CTYPE="de_DE.UTF-8"
                LC_NUMERIC="de_DE.UTF-8"
                LC_TIME="de_DE.UTF-8"
                LC_COLLATE="de_DE.UTF-8"
                LC_MONETARY="de_DE.UTF-8"
                LC_MESSAGES="de_DE.UTF-8"
                LC_PAPER="de_DE.UTF-8"
                LC_NAME="de_DE.UTF-8"
                LC_ADDRESS="de_DE.UTF-8"
                LC_TELEPHONE="de_DE.UTF-8"
                LC_MEASUREMENT="de_DE.UTF-8"
                LC_IDENTIFICATION="de_DE.UTF-8"
                LC_ALL=
                

                Sollte ich jetzt auch etwas verändern?

                apollon77 1 Reply Last reply Reply Quote 0
                • apollon77
                  apollon77 @Meister Mopper last edited by

                  @meister-mopper Interessant ... Das wichtige ist aber das die Antwort (nil) ist und damit ist alles ok.

                  1 Reply Last reply Reply Quote 1
                  • apollon77
                    apollon77 @Marty56 last edited by

                    @marty56 AM Ende ist es aufgefallen weil bei einem User ein install/upgrade/"upload vis" auch Adapter wie "vis-material" mit der Versionsnummer und Logo von Vis in den metadaten überschrieben hat, wenn die installiert waren.

                    Ggf hätte es auch passieren können das beim Versuch "vis" zu löschen plötzlich auch "vis-*" Instanzen mit gelöscht worden wären.

                    AM besten nach dem Fix einmal "iob upload all" machen um ggf Effekte zu beheben. Wenn du aber keine Adapter hast wo es andere gibt die ein "-" und weitere Zeichen haben gab es ggf gar keine Unterschiede

                    1 Reply Last reply Reply Quote 0
                    • D
                      darkiop Most Active @Marty56 last edited by

                      @marty56 sagte in Wichtiger Hinweis für Redis Installationen!:

                      @apollon77 Danke für den Hinweis.
                      Was mich noch interessieren würde, wäre die Auswirkung dieser falschen Redis Konfiguration. Ich hatte den Server mindestens 1 Jahr mit der falschen Konfiguration laufen und habe es nicht bemerkt.

                      Dem schließe ich mich an 🙂 Aber gut, besser vor dem merken korrigieren 😉

                      127.0.0.1:6379> EVAL "return 'c-i.t' >= 'c.' and 'c-i.t' < 'c.香'" 1 1
                      (integer) 1
                      
                      
                      LANG=de_DE.UTF-8
                      LANGUAGE=
                      LC_CTYPE="de_DE.UTF-8"
                      LC_NUMERIC="de_DE.UTF-8"
                      LC_TIME="de_DE.UTF-8"
                      LC_COLLATE="de_DE.UTF-8"
                      LC_MONETARY="de_DE.UTF-8"
                      LC_MESSAGES="de_DE.UTF-8"
                      LC_PAPER="de_DE.UTF-8"
                      LC_NAME="de_DE.UTF-8"
                      LC_ADDRESS="de_DE.UTF-8"
                      LC_TELEPHONE="de_DE.UTF-8"
                      LC_MEASUREMENT="de_DE.UTF-8"
                      LC_IDENTIFICATION="de_DE.UTF-8"
                      LC_ALL=
                      
                      apollon77 1 Reply Last reply Reply Quote 1
                      • apollon77
                        apollon77 @darkiop last edited by

                        @darkiop ja die Nummer hat uns bissl beschäftigt bis wir auf diesen Grund kamen ;-))

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

                          @apollon77

                          Hallo Ingo,

                          seit erscheinen dieses Threads hat mich das Thema "Redis" etwas mehr beschäftigt. Ich bin Neueinsteiger bei Redis, und die Informationen im Web bezüglich der Einstellungen zur Redis Datenbank und locale sagen nicht wirklich viel aus. Beziehungsweise, in der Dokumentation von Redis finde ich nichts zu diesem Thema. Auf dieser Seite konnte ich zumindest schon einmal herausfinden das der große Unterschied von c zu x.UTF-8 an der Single-/Multibyte-Unicode-Kodierung liegt.
                          Dennoch bleibt bei mir die ein oder andere Frage noch offen.

                          Aktuell habe ich zwei Container (LXD/LXC) aufgesetzt, je einen für ioBroker und Redis. Beide mit der Einstellung "LOKALE=de-DE.UTF-8".

                          1.) Muss ich beide Container auf "LANG=C" umstellen, oder reicht es die Konfiguration des Redis-Server anzupassen?

                          2.) Kann die Umstellung während des laufenden Betriebs vorgenommen, bzw. sollte ioBroker vorher gestoppt, oder gar auf "jsonl:jsonl" umgestellt werden?

                          3.) Wie verhält es sich mit mySQL/MariaDB, sollte hier auch die locale beachtet und auf "LANG=C" umgestellt werden?

                          Eventuell kannst du mir etwas weiterhelfen.

                          Dankeschön
                          Gruß, Karsten

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

                            @apollon77

                            Ich hab noch eine Kombination.
                            Ich verwende redis in einem docker container auf alpine basis.
                            alpine hat erst einmal keine locale.
                            daher lässt sich 2) nicht abfragen. Aber wenn ich es richtig interpretiere,
                            dann geht ihr immer vom stand ohne locale aus und andere lokalisationen führen ggfs zu Problemen.
                            dann dürfte es mit alpine keine probleme geben

                            1. ergibt bei mir
                              (nil)
                            apollon77 1 Reply Last reply Reply Quote 0
                            • apollon77
                              apollon77 @hydrotec last edited by

                              @hydrotec
                              1.) redis Server reicht.
                              2.) gute Frage, weiß ich nicht. Ich denke geht im Betrieb aber sicher ist iobroker stoppen, redis konfig ändern und neu starten, iobroker neu starten
                              3.) keine Ahnung wie eine MySQL da tickt und ob Bzw wie relevant das da ist bei queries.

                              hydrotec 1 Reply Last reply Reply Quote 1
                              • apollon77
                                apollon77 @OliverIO last edited by

                                @oliverio (Nil) ist gut und damit keine Probleme.

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

                                  Hi ich komme nicht auf die Schell

                                  andy@debian:~$ redis-cli
                                  -bash: redis-cli: Kommando nicht gefunden.
                                  
                                  
                                  Meister Mopper Thomas Braun 2 Replies Last reply Reply Quote 0
                                  • Meister Mopper
                                    Meister Mopper @ostseereiter last edited by

                                    @ostseereiter sagte in Wichtiger Hinweis für Redis Installationen!:

                                    Hi ich komme nicht auf die Schell

                                    Läuft denn redis? sudo systemctl status redis

                                    1 Reply Last reply Reply Quote 0
                                    • Thomas Braun
                                      Thomas Braun Most Active @ostseereiter last edited by

                                      @ostseereiter

                                      Das muss auch installiert sein.

                                      apt policy redis-tools
                                      
                                      ostseereiter 1 Reply Last reply Reply Quote 0
                                      • ostseereiter
                                        ostseereiter @Thomas Braun last edited by

                                        @thomas-braun
                                        Ist wohl nicht installiert braucht man das?

                                        
                                        andy@debian:~$ sudo systemctl status redis
                                        [sudo] Passwort für andy:
                                        Unit redis.service could not be found.
                                        
                                        
                                        Thomas Braun 1 Reply Last reply Reply Quote 0
                                        • Thomas Braun
                                          Thomas Braun Most Active @ostseereiter last edited by Thomas Braun

                                          @ostseereiter

                                          Um

                                          redis-cli
                                          

                                          aufzurufen braucht es die redis-tools. Da ist das nämlich drin.

                                          Bei dir läuft aber gar kein redis. Was haste also vor?

                                          Oder läuft da was anderes?

                                          systemctl status redis-server.service redis.service
                                          
                                          ostseereiter 1 Reply Last reply Reply Quote 0
                                          • ostseereiter
                                            ostseereiter @Thomas Braun last edited by

                                            @thomas-braun sagte in Wichtiger Hinweis für Redis Installationen!:

                                            systemctl status redis-server.service redis.service

                                            Ich habe nix vor dann ist es ja ok wenn ich es nicht installiert habe. Dann ist ja alles im grünen Bereich. Ich wüsste auch gar nicht wozu man das braucht.

                                            andy@debian:~$ systemctl status redis-server.service redis.service
                                            Unit redis-server.service could not be found.
                                            Unit redis.service could not be found.
                                            
                                            
                                            apollon77 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

                                            611
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            22
                                            90
                                            15531
                                            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