Ubuntu: RedisJSON Modul für Redis aus dem Source Code selbst bauen
Hier eine Anleitung um das RedisJSON Modul für Redis selbst zu kompilieren. Als Binary bekommt man es im Moment nur als Abonnent der Enterprise Version. Ohne das Abo kann man sich die aktuelle Version aus dem Quellcode selbst bauen. Die offizielle Doku zum RedisJSON Modul findet ihr hier.
Das RedisJSON-Modul bietet JSON-Unterstützung für Redis. Mit RedisJSON können Sie JSON-Werte in einer Redis-Datenbank speichern, aktualisieren und abrufen, ähnlich wie bei jedem anderen Redis-Datentyp.
Zur Installation benötigt man den aktuellen Rust-Compiler. Zum Zeitpunkt der Anleitung war das die Version: 1.64.0. Weitere Infos und alternative Wege zur "Rust"-Installation findest du hier. Hier die einfachste Installation für Ubuntu (als User: frank):
Es erscheint folgendes:
Die "Eins" (1) auswählen um mit der Installation fortzufahren. Das Script sollte mit folgendem Text enden:
Das Installationsprogramm hat die ".bashrc" um den "Rust"-Pfad automatisch ergänzt.
Um "Rust" zu aktivieren entweder das Terminal schließen und wieder öffnen oder folgendes ausführen:
Will man ein spezielles Release per Git laden kann man das mit der "--branch" Option steuern. Wenn wir z.B. das RedisJSON Release 2.2.0 laden wollen:
Das hat den Vorteil, das auch die richtige Versionsnummer von Redisearch im Redis-Log und im "redis-cli" erscheint. Ohne die "--branch"-Angabe erscheint als Version eine 99.99.99 (Git=master-xxx).
Jetzt lädt er diverse Abhängigkeiten nach (crates.io ...) und startet dann das "Building".
Dieser Vorgang muss mit folgender Ausgabe abschließen:
Das erstellte Modul liegt nun unter:
Das Modul muss nun analog zur Redisearch Anleitung in das Verzeichnis "/var/lib/redis/modules/" kopiert werden.
Jetzt passen wir die Redis-Server Konfigurationsdatei (/etc/redis/redis.conf) an. Dabei öffnen wir die Datei und ergänzen sie im Bereich MODULES :
Tipp: Wer den "vi" nicht beherscht, kann den "vi" durch den Befehl "nano" ersetzen. Also "sudo nano /etc/redis/redis.conf"
Die Datei "redis.conf" speichern.
Tipp: Ihr könnt die Redis-Library "librejson.so" natürlich hinkopieren wo ihr wollt. Ihr müsst nur den entsprechend Pfad unter "loadmodule" anpassen.
Jetzt den Redis-Server neu starten:
Mit "status" kann man den Redis-Server testen und schauen ob alles läuft. Es sollte "Status: "Ready to accept connections" erscheinen.
Im Logfile "/var/log/redis/redis-server.log" sollte der Eintrag: "Module 'ReJSON' loaded from /var/lib/redis/modules/librejson.so" erscheinen.
Hier der Ausschnitt dazu:
Der Redis-Server sollten nun laufen, dass RedisJSON-Modul erstellt, kopiert und aktiviert sein. Nun testen wir das zur Laufzeit mit Hilfe der "redis-cli":
Wenn das erscheint, habt ihr alles richtig gemacht! Gratulation
Wer sich für Redis und RedisJSON interessiert sollte sich folgendes anschauen bzw. durchlesen:
Über Feedback oder Verbesserungen freue ich mich jederzeit. Wenn Euch die Anleitung gefällt klickt bitte auf das "Herz", als kleines Dankeschön
Gruß
Frank
Das RedisJSON-Modul bietet JSON-Unterstützung für Redis. Mit RedisJSON können Sie JSON-Werte in einer Redis-Datenbank speichern, aktualisieren und abrufen, ähnlich wie bei jedem anderen Redis-Datentyp.
Inhaltsverzeichnis
Vorbereitung, Voraussetzungen zum Kompilieren
- Getestet unter Ubuntu 22.04
- Alle Befehle werden unter der Linux-Bash und als User "frank" und nicht direkt als root durchgeführt! Der Hostname des System lautet: "nexus". Wenn "root" gebraucht wird, benutze ich "sudo" dafür.
- Es wird das Home-Verzeichnis ~/redis für den Quellcode und das Kompilieren benutzt
- Alle Tools und Programme, die unter Ubuntu 22.04 zur Entwicklung benötigt werden, müssen vorher installiert werden:
sudo apt update
sudo apt install build-essential g++ make git
sudo apt install libclang-dev
Rust Installieren
Zur Installation benötigt man den aktuellen Rust-Compiler. Zum Zeitpunkt der Anleitung war das die Version: 1.64.0. Weitere Infos und alternative Wege zur "Rust"-Installation findest du hier. Hier die einfachste Installation für Ubuntu (als User: frank):
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Es erscheint folgendes:
info: downloading installer
Welcome to Rust!
This will download and install the official compiler for the Rust
programming language, and its package manager, Cargo.
Rustup metadata and toolchains will be installed into the Rustup
home directory, located at:
/home/frank/.rustup
This can be modified with the RUSTUP_HOME environment variable.
The Cargo home directory is located at:
/home/frank/.cargo
This can be modified with the CARGO_HOME environment variable.
The cargo, rustc, rustup and other commands will be added to
Cargo's bin directory, located at:
/home/frank/.cargo/bin
This path will then be added to your PATH environment variable by
modifying the profile files located at:
/home/frank/.profile
/home/frank/.bashrc
You can uninstall at any time with rustup self uninstall and
these changes will be reverted.
Current installation options:
default host triple: x86_64-unknown-linux-gnu
default toolchain: stable (default)
profile: default
modify PATH variable: yes
1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
Die "Eins" (1) auswählen um mit der Installation fortzufahren. Das Script sollte mit folgendem Text enden:
...
info: default toolchain set to 'stable-x86_64-unknown-linux-gnu'
stable-x86_64-unknown-linux-gnu installed - rustc 1.64.0 (a55dd71d5 2022-09-19)
Rust is installed now. Great!
To get started you may need to restart your current shell.
This would reload your PATH environment variable to include
Cargo's bin directory ($HOME/.cargo/bin).
To configure your current shell, run:
source "$HOME/.cargo/env"
Das Installationsprogramm hat die ".bashrc" um den "Rust"-Pfad automatisch ergänzt.
Um "Rust" zu aktivieren entweder das Terminal schließen und wieder öffnen oder folgendes ausführen:
source "$HOME/.cargo/env"
Quellcode per git laden
mkdir ~/redis
cd ~/redis
git clone https://github.com/RedisJSON/RedisJSON.git
Will man ein spezielles Release per Git laden kann man das mit der "--branch" Option steuern. Wenn wir z.B. das RedisJSON Release 2.2.0 laden wollen:
git clone https://github.com/RedisJSON/RedisJSON.git --branch v2.2.0
Das hat den Vorteil, das auch die richtige Versionsnummer von Redisearch im Redis-Log und im "redis-cli" erscheint. Ohne die "--branch"-Angabe erscheint als Version eine 99.99.99 (Git=master-xxx).
RedisJSON Modul bauen (kompilieren)
cd RedisJSON
cargo build --release
Jetzt lädt er diverse Abhängigkeiten nach (crates.io ...) und startet dann das "Building".
Dieser Vorgang muss mit folgender Ausgabe abschließen:
...
Compiling redis-module v1.0.1
Compiling redisjson v99.99.99 (/home/frank/redis/RedisJSON)
Finished release [optimized + debuginfo] target(s) in 11.93s
Das erstellte Modul liegt nun unter:
~/redis/RedisJSON/target/release/librejson.so
RediSearch Modul automatisch beim Start von Redis laden
Das Modul muss nun analog zur Redisearch Anleitung in das Verzeichnis "/var/lib/redis/modules/" kopiert werden.
sudo mkdir /var/lib/redis/modules (wenn noch nicht vorhanden)
sudo cp /home/frank/redis/RedisJSON/target/release/librejson.so /var/lib/redis/modules/.
Jetzt passen wir die Redis-Server Konfigurationsdatei (/etc/redis/redis.conf) an. Dabei öffnen wir die Datei und ergänzen sie im Bereich MODULES :
sudo vi /etc/redis/redis.conf
Tipp: Wer den "vi" nicht beherscht, kann den "vi" durch den Befehl "nano" ersetzen. Also "sudo nano /etc/redis/redis.conf"
################################## MODULES #####################################
# Load modules at startup. If the server is not able to load modules
# it will abort. It is possible to use multiple loadmodule directives.
#
# loadmodule /path/to/my_module.so
# loadmodule /path/to/other_module.so
#loadmodule /var/lib/redis/modules/redisearch.so
loadmodule /var/lib/redis/modules/librejson.so
################################## NETWORK #####################################
Die Datei "redis.conf" speichern.
Tipp: Ihr könnt die Redis-Library "librejson.so" natürlich hinkopieren wo ihr wollt. Ihr müsst nur den entsprechend Pfad unter "loadmodule" anpassen.
Jetzt den Redis-Server neu starten:
service redis-server restart
Mit "status" kann man den Redis-Server testen und schauen ob alles läuft. Es sollte "Status: "Ready to accept connections" erscheinen.
Im Logfile "/var/log/redis/redis-server.log" sollte der Eintrag: "Module 'ReJSON' loaded from /var/lib/redis/modules/librejson.so" erscheinen.
Hier der Ausschnitt dazu:
1318840:M 11 Oct 2022 21:08:01.182 * <ReJSON> version: 999999 git sha: eddfcb9 branch: master
1318840:M 11 Oct 2022 21:08:01.182 * <ReJSON> Exported RedisJSON_V1 API
1318840:M 11 Oct 2022 21:08:01.182 * <ReJSON> Exported RedisJSON_V2 API
1318840:M 11 Oct 2022 21:08:01.182 * <ReJSON> Enabled diskless replication
1318840:M 11 Oct 2022 21:08:01.182 * <ReJSON> Created new data type 'ReJSON-RL'
1318840:M 11 Oct 2022 21:08:01.182 * Module 'ReJSON' loaded from /var/lib/redis/modules/librejson.so
Redis und RedisJSON Modul im Betrieb testen
Der Redis-Server sollten nun laufen, dass RedisJSON-Modul erstellt, kopiert und aktiviert sein. Nun testen wir das zur Laufzeit mit Hilfe der "redis-cli":
redis-cli
127.0.0.1:6379> info modules
# Modules
module:name=ReJSON,ver=999999,api=1,filters=0,usedby=[search],using=,options=[handle-io-errors]
Wenn das erscheint, habt ihr alles richtig gemacht! Gratulation
Wer sich für Redis und RedisJSON interessiert sollte sich folgendes anschauen bzw. durchlesen:
Über Feedback oder Verbesserungen freue ich mich jederzeit. Wenn Euch die Anleitung gefällt klickt bitte auf das "Herz", als kleines Dankeschön
Gruß
Frank
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 4239887509
Url: https://administrator.de/contentid/4239887509
Ausgedruckt am: 21.11.2024 um 12:11 Uhr