Skip to content

Redis Stack?

Redis
  • Für meine Flask & Python Projekt nutze ich schon lange Redis. Redis ist ein "in-memory data store" Normalerweise läuft dafür ein Docker Container auf meinem Haupt-PC, den ich mal vor langer Zeit aufgesetzt hatte. So weit lief auch alles gut.

    Bedingt durch den Versuch, die Flask Anwendung auf meinem 2. PC zu installieren, ergaben sich einige neue Erkenntnisse. Ich hatte dann erst auf dem 2. PC ebenfalls mit einem Docker Container rum gespielt, dabei hatte ich aber das Problem das meine Datenbank nicht akzeptiert wurde.

    Ich habe lange gebraucht um zu kapieren, das Redis ungleich Redis Stack ist. Und damals, wo ich den Docker Container aufgesetzt hatte, hatte ich Redis Stack installiert.

    Redis Stack Server lets you build applications with searchable JSON and time series data models, and extended probabilistic data structures.
    Quelle: https://redis.io/

    Ich habe gerade nochmal in der DB nachgesehen, ich nutze keine dieser zusätzlichen Funktionen. Also müsste ich die Daten alle mühsam extrahieren und in einer einfachen Redis DB wieder installieren.

    Ok, es war also klar das ich einen Redis Stack Server an zentraler Stelle in meinem Netzwerk bräuchte, damit ich von jedem PC aus darauf zugreifen könnte. Als Ort fällt mir da natürlich mein Proxmox ein.

    Bei ersten Versuchen der Installation von Redis Stack schnell drüber gestolpert, das es das aktuell nur für Debian 11 gibt. Ja, die Docker Generation 🙂 Da ich das aber nicht als Docker laufen lassen wollte, musste ich wohl oder übel ein Debian 11 aufsetzen.

    Es gibt auch noch zwei Versionen von Redis Stack

    • Redis Stack Server
    • Redis Stack

    Redis Stack enthält auch noch die Desktop Application RedisInsight, das ist eine Redis GUI. Damit kann man sich die DB ansehen und auch bearbeiten. Das läuft lokal auf meinem Haupt-PC, brauche ich also nicht auf einem Server. Der Server hat ja auch keine GUI. Also war klar, ich brauchte einen Redis Stack Server.

    Zur Installation von Redis Stack Server, findet man das hier auf redis.io

    Kurze Zeit später lief die Debian 11 VM mit Redis Stack Server.

    frank@redis-stack:~$ pstree
    systemd─┬─agetty
            ├─cron
            ├─dbus-daemon
            ├─dhclient───3*[{dhclient}]
            ├─qemu-ga───{qemu-ga}
            ├─redis-server───8*[{redis-server}]
            ├─rsyslogd───3*[{rsyslogd}]
            ├─sshd───sshd───sshd───bash───pstree
            ├─systemd───(sd-pam)
            ├─systemd-journal
            ├─systemd-logind
            ├─systemd-timesyn───{systemd-timesyn}
            └─systemd-udevd
    

    Interessant bei Redis ist immer, wo liegt die Konfigurations Datei und wo die Datenbank? Dazu sollte man sich als erstes immer mal den SystemD Dienst ansschauen.

    redis-stack-server.service

    [Unit]
    Description=Redis stack server
    Documentation=https://redis.io/
    After=network.target
    
    [Service]
    Type=simple
    User=redis
    ExecStart=/opt/redis-stack/bin/redis-server /etc/redis-stack.conf
    WorkingDirectory=/var/lib/redis-stack
    UMask=0077
    
    [Install]
    WantedBy=multi-user.target
    

    Das erste was ich gemacht habe, sen User geändert. Stand auf nobody(?) oder so. Ich habe erst mal einen User dafür angelegt.

    useradd -M -s /usr/sbin/nologin redis
    

    Die Konfiguration findet man unter

    /etc/redis-stack.conf
    

    So sieht meine aus

    port 6379
    daemonize no
    requirepass <PASSWORD>
    save 60 1
    #save 900 1
    save 300 10
    save 60 10000
    stop-writes-on-bgsave-error yes
    rdbcompression yes
    rdbchecksum yes
    dbfilename dump.rdb
    dir /var/lib/redis-stack
    loadmodule /opt/redis-stack/lib/rediscompat.so
    loadmodule /opt/redis-stack/lib/redisearch.so
    loadmodule /opt/redis-stack/lib/redistimeseries.so
    loadmodule /opt/redis-stack/lib/rejson.so
    loadmodule /opt/redis-stack/lib/redisbloom.so
    loadmodule /opt/redis-stack/lib/redisgears.so v8-plugin-path /opt/redis-stack/lib/libredisgears_v8_plugin.so
    

    Mit diesen beiden Zeilen

    dbfilename dump.rdb
    dir /var/lib/redis-stack
    

    legt man fest, wo die Datenbank liegt. Unter /var/lib/redis-stack/ findet man dann die Datenbank dump.rdb. Bitte darauf achten, das die Dateiberechtigungen alle passen.

     chown -R redis:redis /var/lib/redis-stack/
    

    Nach einem Neustart, sollte die Redis Datenbank nun mit meiner Datenbank laufen.

    systemctl restart redis-stack-server.service
    

    Wie testet man die Verbindung?

    Einmal kann man das lokal machen. Mit dem Tool redis-cli

    root@redis-stack:/var/lib/redis-stack# redis-cli
    127.0.0.1:6379> 
    

    Wenn man jetzt die Datenbank auswählen möchte, kommt das

    127.0.0.1:6379> SELECT 0
    (error) NOAUTH Authentication required.
    

    Ok, die Datenbank ist mittels Passwort geschützt. Mit AUTH kann man sich authentifizieren.

    127.0.0.1:6379> AUTH <PASSWORD>
    OK
    

    Danach kann man dann die Datenbank wählen und schauen ob was drin ist.

    127.0.0.1:6379> SELECT 0
    OK
    127.0.0.1:6379> KEYS *
    1) "settings"
    127.0.0.1:6379> 
    

    Das kann man auch von extern machen, da aktuell die Redis Datenbank auf alle Netzwerkverbindungen lauscht. Wenn man das nicht möchte, kann man das auch entsprechend einstellen. Hier nicht erläutert.

    Von extern, muss man dann den Host angeben.

    frank@debian:~$ redis-cli -h 192.168.3.9
    192.168.3.9:6379> 
    

    Rest, siehe oben. Danach weiß man ob alles so weit funktioniert. Und zum Schluss noch ein Screenshot vom RedisInsight Tool.

    Screenshot_20240319_143044.png

  • FrankMF FrankM hat am auf dieses Thema verwiesen

  • Restic v0.16.1 released

    Restic
    1
    0 Stimmen
    1 Beiträge
    115 Aufrufe
    Niemand hat geantwortet
  • Mainline 5.11.x

    Images
    1
    0 Stimmen
    1 Beiträge
    235 Aufrufe
    Niemand hat geantwortet
  • Kopia - Policies

    Kopia
    1
    0 Stimmen
    1 Beiträge
    267 Aufrufe
    Niemand hat geantwortet
  • Wireguard 1.0.0

    Wireguard
    1
    0 Stimmen
    1 Beiträge
    257 Aufrufe
    Niemand hat geantwortet
  • Debian 10 - Terminal wechseln

    Linux
    2
    0 Stimmen
    2 Beiträge
    625 Aufrufe
    FrankMF

    Das eigentliche Problem scheint zu sein, das bei der Installation folgendes fehlte.

    root@debian:~# apt install gnome-terminal Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut. Statusinformationen werden eingelesen.... Fertig Die folgenden zusätzlichen Pakete werden installiert: gnome-terminal-data nautilus-extension-gnome-terminal Die folgenden NEUEN Pakete werden installiert: gnome-terminal gnome-terminal-data nautilus-extension-gnome-terminal 0 aktualisiert, 3 neu installiert, 0 zu entfernen und 0 nicht aktualisiert. Es müssen 2.867 kB an Archiven heruntergeladen werden. Nach dieser Operation werden 9.971 kB Plattenplatz zusätzlich benutzt. Möchten Sie fortfahren? [J/n]

    Nach der Deinstallation von tilix ist jetzt alles wieder so, wie ich es gewohnt bin 😉

  • Redis startet nicht!?

    Verschoben Redis
    1
    0 Stimmen
    1 Beiträge
    358 Aufrufe
    Niemand hat geantwortet
  • Raid1 - Platte verschwunden!?

    Verschoben Linux
    1
    1 Stimmen
    1 Beiträge
    408 Aufrufe
    Niemand hat geantwortet
  • nginx konfigurieren

    NodeBB
    1
    0 Stimmen
    1 Beiträge
    629 Aufrufe
    Niemand hat geantwortet