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

  • Firefox 122 als .deb Paket

    Linux
    1
    0 Stimmen
    1 Beiträge
    136 Aufrufe
    Niemand hat geantwortet
  • Nextcloud - Hub 5 (27.0.0)

    Nextcloud
    1
    0 Stimmen
    1 Beiträge
    100 Aufrufe
    Niemand hat geantwortet
  • Portainer - Python3.10

    Linux
    1
    0 Stimmen
    1 Beiträge
    67 Aufrufe
    Niemand hat geantwortet
  • checkmk - Apache2 vs. NGINX

    checkmk
    2
    0 Stimmen
    2 Beiträge
    551 Aufrufe
    FrankMF

    Ich musste am Ende wieder den Apachen installieren, da checkmk zu viele Abhängigkeiten hat. So was wie omd-apache2(?), wurde mir dann als Fehler angezeigt. Die Server waren auf einmal offline usw. Schade, aber letztendlich für den Container auch egal.

    Oben im Apachen die SSL Sicherheit erhöht.

    4ba2853c-d5a3-422d-b787-b9f66256b511-grafik.png

  • Mainline 5.12.x

    Images
    2
    0 Stimmen
    2 Beiträge
    306 Aufrufe
    FrankMF

    5.12.0-1149-ayufan released

    ayufan: defconfig: add MT76x* drivers
  • Cockpit

    Linux
    1
    0 Stimmen
    1 Beiträge
    227 Aufrufe
    Niemand hat geantwortet
  • Linux Mint 20 & Scannen mit HP LaserJet Pro MFP M28a

    Linux
    2
    0 Stimmen
    2 Beiträge
    1k Aufrufe
    FrankMF

    Nachdem ich jetzt ja wieder auf Linux Mint Cinnamon in Version 20.2 unterwegs bin, hatte ich wieder das Problem das der Drucker ohne Probleme druckt aber nicht scannt.

    Ich habe dann mal dieses Tool installiert

    apt install hplip-gui

    0918fea1-0edf-43c1-aa29-9d79efda177c-grafik.png

    Dann auf Scan geklickt, dann meckerte er über ein fehlendes Plugin. Ok, installiert, danach kamen Verbindungsfehler beim Scannen.

    Einmal den USB-Stecker entfernt, danach ging alles. Bitte nicht fragen warum, hplip hasse ich noch mehr als WLAN 😁

    Ok, nicht mehr anfassen....

    79d636b7-2b49-4152-b158-e65cebabf148-grafik.png

    In der Linux Mint Hilfe findet man dazu folgendes -> Klick

  • Node.js installieren

    Linux
    1
    0 Stimmen
    1 Beiträge
    297 Aufrufe
    Niemand hat geantwortet