Dieses Projekt wurde kurz vor der Umstellung auf die neuen verfügbaren Quelllizenzen vom Open-Source-Redis-Projekt abgespalten.
Bei dieser README-Datei handelt es sich lediglich um ein Schnellstartdokument . Weitere Details finden Sie unter valkey.io
Valkey ist ein leistungsstarker Datenstrukturserver, der hauptsächlich Schlüssel/Wert-Workloads bedient. Es unterstützt eine breite Palette nativer Strukturen und ein erweiterbares Plugin-System zum Hinzufügen neuer Datenstrukturen und Zugriffsmuster.
Makefile
erstellenValkey kann unter Linux, OSX, OpenBSD, NetBSD und FreeBSD kompiliert und verwendet werden. Wir unterstützen Big-Endian- und Little-Endian-Architekturen sowie 32-Bit- und 64-Bit-Systeme.
Es kann auf von Solaris abgeleiteten Systemen (z. B. SmartOS) kompiliert werden, aber wir unterstützen diese Plattform nach besten Kräften und es kann nicht garantiert werden, dass Valkey unter Linux, OSX und *BSD so gut funktioniert.
Es ist so einfach wie:
% make
Um mit TLS-Unterstützung zu erstellen, benötigen Sie OpenSSL-Entwicklungsbibliotheken (z. B. libssl-dev unter Debian/Ubuntu).
So erstellen Sie die TLS-Unterstützung als Valkey-integriert:
% make BUILD_TLS=yes
So erstellen Sie TLS als Valkey-Modul:
% make BUILD_TLS=module
Beachten Sie, dass der Sentinel-Modus das TLS-Modul nicht unterstützt.
Um mit experimenteller RDMA-Unterstützung zu erstellen, benötigen Sie RDMA-Entwicklungsbibliotheken (z. B. librdmacm-dev und libibverbs-dev auf Debian/Ubuntu). Derzeit unterstützt Valkey nur RDMA als Verbindungsmodulmodus. Laufen:
% make BUILD_RDMA=module
Um mit systemd-Unterstützung zu erstellen, benötigen Sie systemd-Entwicklungsbibliotheken (z. B. libsystemd-dev unter Debian/Ubuntu oder systemd-devel unter CentOS) und führen Folgendes aus:
% make USE_SYSTEMD=yes
Um ein Suffix an Valkey-Programmnamen anzuhängen, verwenden Sie:
% make PROG_SUFFIX="-alt"
Sie können eine 32-Bit-Valkey-Binärdatei erstellen mit:
% make 32bit
Nachdem Sie Valkey erstellt haben, ist es eine gute Idee, es mit Folgendem zu testen:
% make test
Das Obige führt die wichtigsten Integrationstests aus. Zusätzliche Tests werden gestartet mit:
% make test-unit # Unit tests
% make test-modules # Tests of the module API
% make test-sentinel # Valkey Sentinel integration tests
% make test-cluster # Valkey Cluster integration tests
Weitere Informationen zum Ausführen der Integrationstests finden Sie in tests/README.md und für Unit-Tests siehe src/unit/README.md.
Valkey hat einige Abhängigkeiten, die im deps
-Verzeichnis enthalten sind. make
erstellt Abhängigkeiten nicht automatisch neu, selbst wenn sich etwas im Quellcode der Abhängigkeiten ändert.
Wenn Sie den Quellcode mit git pull
aktualisieren oder wenn Code innerhalb des Abhängigkeitsbaums auf andere Weise geändert wird, stellen Sie sicher, dass Sie den folgenden Befehl verwenden, um wirklich alles zu bereinigen und von Grund auf neu zu erstellen:
% make distclean
Dadurch werden Folgendes bereinigt: Jemalloc, Lua, Hiredis, Linenoise und andere Abhängigkeiten.
Auch wenn Sie bestimmte Build-Optionen wie 32-Bit-Ziel, keine C-Compiler-Optimierungen (für Debugging-Zwecke) und andere ähnliche Build-Zeitoptionen erzwingen, werden diese Optionen auf unbestimmte Zeit zwischengespeichert, bis Sie den Befehl make distclean
ausgeben.
Wenn Sie Valkey nach dem Erstellen mit einem 32-Bit-Ziel erneut mit einem 64-Bit-Ziel erstellen müssen oder umgekehrt, müssen Sie make distclean
im Stammverzeichnis der Valkey-Distribution ausführen.
Sollten beim Versuch, eine 32-Bit-Binärdatei von Valkey zu erstellen, Fehler auftreten, versuchen Sie die folgenden Schritte:
make 32bit
: make CFLAGS="-m32 -march=native" LDFLAGS="-m32"
Die Auswahl eines nicht standardmäßigen Speicherzuweisers beim Erstellen von Valkey erfolgt durch Festlegen der Umgebungsvariablen MALLOC
. Valkey wird standardmäßig mit libc malloc kompiliert und verknüpft, mit Ausnahme von jemalloc, das auf Linux-Systemen die Standardeinstellung ist. Diese Standardeinstellung wurde gewählt, da jemalloc nachweislich weniger Fragmentierungsprobleme aufweist als libc malloc.
Um das Kompilieren gegen libc malloc zu erzwingen, verwenden Sie:
% make MALLOC=libc
Um auf Mac OS X-Systemen gegen Jemalloc zu kompilieren, verwenden Sie:
% make MALLOC=jemalloc
Standardmäßig erstellt Valkey die POSIX-Funktion „clock_gettime“ als monotone Taktquelle. Bei den meisten modernen Systemen kann der interne Prozessortakt zur Leistungssteigerung genutzt werden. Vorsichtsmaßnahmen finden Sie hier: http://oliveryang.net/2015/09/pitfalls-of-TSC-usage/
Um mit Unterstützung für die interne Befehlsuhr des Prozessors zu erstellen, verwenden Sie:
% make CFLAGS="-DUSE_PROCESSOR_CLOCK"
Valkey erstellt standardmäßig eine benutzerfreundliche kolorierte Ausgabe. Wenn Sie eine ausführlichere Ausgabe sehen möchten, verwenden Sie Folgendes:
% make V=1
Um Valkey mit der Standardkonfiguration auszuführen, geben Sie einfach Folgendes ein:
% cd src
% ./valkey-server
Wenn Sie Ihre valkey.conf bereitstellen möchten, müssen Sie sie mit einem zusätzlichen Parameter (dem Pfad der Konfigurationsdatei) ausführen:
% cd src
% ./valkey-server /path/to/valkey.conf
Es ist möglich, die Valkey-Konfiguration zu ändern, indem Parameter über die Befehlszeile direkt als Optionen übergeben werden. Beispiele:
% ./valkey-server --port 9999 --replicaof 127.0.0.1 6379
% ./valkey-server /etc/valkey/6379.conf --loglevel debug
Alle Optionen in valkey.conf werden auch als Optionen über die Befehlszeile mit genau demselben Namen unterstützt.
So führen Sie einen Valkey-Server manuell im TLS-Modus aus (vorausgesetzt, ./gen-test-certs.sh
wurde aufgerufen, sodass Beispielzertifikate/-schlüssel verfügbar sind):
Integrierter TLS-Modus:
./src/valkey-server --tls-port 6379 --port 0
--tls-cert-file ./tests/tls/valkey.crt
--tls-key-file ./tests/tls/valkey.key
--tls-ca-cert-file ./tests/tls/ca.crt
TLS-Modulmodus:
./src/valkey-server --tls-port 6379 --port 0
--tls-cert-file ./tests/tls/valkey.crt
--tls-key-file ./tests/tls/valkey.key
--tls-ca-cert-file ./tests/tls/ca.crt
--loadmodule src/valkey-tls.so
Beachten Sie, dass Sie TCP deaktivieren können, indem Sie explizit --port 0
angeben. Es ist auch möglich, sowohl TCP als auch TLS gleichzeitig verfügbar zu haben, Sie müssen dann jedoch unterschiedliche Ports zuweisen.
Verwenden Sie valkey-cli
um eine Verbindung zum Valkey-Server herzustellen:
./src/valkey-cli --tls
--cert ./tests/tls/valkey.crt
--key ./tests/tls/valkey.key
--cacert ./tests/tls/ca.crt
Wenn Sie --tls-replication yes
angeben, stellt ein Replikat eine Verbindung zum Primärserver her.
Durch die Verwendung --tls-cluster yes
verwendet Valkey Cluster TLS knotenübergreifend.
Beachten Sie, dass Valkey Over RDMA eine experimentelle Funktion ist. Es kann in jeder Neben- oder Hauptversion geändert oder entfernt werden. Derzeit wird es nur unter Linux unterstützt.
So führen Sie einen Valkey-Server manuell im RDMA-Modus aus:
% ./src/valkey-server --protected-mode no
--loadmodule src/valkey-rdma.so bind=192.168.122.100 port=6379
Es ist möglich, die Bindungsadresse/den RDMA-Port per Laufzeitbefehl zu ändern:
192.168.122.100:6379> CONFIG SET rdma.port 6380
Es ist auch möglich, sowohl RDMA als auch TCP verfügbar zu haben, und es gibt keinen Konflikt zwischen TCP(6379) und RDMA(6379), Beispiel:
% ./src/valkey-server --protected-mode no
--loadmodule src/valkey-rdma.so bind=192.168.122.100 port=6379
--port 6379
Beachten Sie, dass die Netzwerkkarte (192.168.122.100 in diesem Beispiel) RDMA unterstützen sollte. So testen Sie, ob ein Server RDMA unterstützt oder nicht:
% rdma res show (a new version iproute2 package)
Oder:
% ibv_devices
Sie können valkey-cli verwenden, um mit Valkey zu spielen. Starten Sie eine Valkey-Server-Instanz und versuchen Sie dann in einem anderen Terminal Folgendes:
% cd src
% ./valkey-cli
valkey> ping
PONG
valkey> set foo bar
OK
valkey> get foo
"bar"
valkey> incr mycounter
(integer) 1
valkey> incr mycounter
(integer) 2
valkey>
Um Valkey-Binärdateien in /usr/local/bin zu installieren, verwenden Sie einfach:
% make install
Sie können make PREFIX=/some/other/directory install
verwenden, wenn Sie ein anderes Ziel verwenden möchten.
Hinweis : Aus Kompatibilitätsgründen mit Redis erstellen wir Symlinks von den Redis-Namen ( redis-server
, redis-cli
usw.) zu den von make install
installierten Valkey-Binärdateien. Die Symlinks werden im selben Verzeichnis wie die Valkey-Binärdateien erstellt. Die symbolischen Links werden entfernt, wenn make uninstall
verwendet wird. Die Erstellung der Symlinks kann übersprungen werden, indem die Makefile-Variable USE_REDIS_SYMLINKS=no
gesetzt wird.
make install
installiert lediglich Binärdateien in Ihrem System, konfiguriert jedoch keine Init-Skripte und Konfigurationsdateien an der entsprechenden Stelle. Dies ist nicht erforderlich, wenn Sie nur ein wenig mit Valkey herumspielen möchten. Wenn Sie es jedoch ordnungsgemäß für ein Produktionssystem installieren, haben wir ein Skript, das dies für Ubuntu- und Debian-Systeme erledigt:
% cd utils
% ./install_server.sh
Hinweis : install_server.sh
funktioniert nicht unter Mac OSX; Es wurde nur für Linux entwickelt.
Das Skript stellt Ihnen ein paar Fragen und richtet alles ein, was Sie brauchen, um Valkey ordnungsgemäß als Hintergrund-Daemon auszuführen, der bei Systemneustarts erneut startet.
Sie können Valkey mit dem Skript namens /etc/init.d/valkey_<portnumber>
stoppen und starten, zum Beispiel /etc/init.d/valkey_6379
.
CMake
Zusätzlich zum traditionellen Makefile
Build unterstützt Valkey ein alternatives, experimentelles Build-System mit CMake
.
Um Valkey
im Release
-Modus (ein optimierter Build) zu erstellen und zu installieren, geben Sie Folgendes in Ihr Terminal ein:
mkdir build-release
cd $_
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/valkey
sudo make install
# Valkey is now installed under /opt/valkey
Weitere vom CMake
Build-System von Valkey unterstützte Optionen:
-DBUILD_TLS=<on|off|module>
TLS-Build für Valkey aktivieren-DBUILD_RDMA=<off|module>
RDMA-Modulerstellung aktivieren (nur Modulmodus unterstützt)-DBUILD_MALLOC=<libc|jemalloc|tcmalloc|tcmalloc_minimal>
Wählen Sie den zu verwendenden Allokator aus. Standard unter Linux: jemalloc
, für andere Betriebssysteme: libc
-DBUILD_SANITIZER=<address|thread|undefined>
Build mit aktivierter Adressbereinigung-DBUILD_UNIT_TESTS=[1|0]
Wenn festgelegt, erstellt der Build die ausführbare Datei valkey-unit-tests
-DBUILD_TEST_MODULES=[1|0]
Wenn festgelegt, enthält der Build die Module, die sich im Ordner tests/modules
befinden-DBUILD_EXAMPLE_MODULES=[1|0]
Wenn festgelegt, enthält der Build die Beispielmodule, die sich im Ordner src/modules
befinden -DCMAKE_BUILD_TYPE=<Debug|Release...>
definiert den Build-Typ, weitere Details finden Sie im CMake-Handbuch-DCMAKE_INSTALL_PREFIX=/installation/path
überschreibt diesen Wert, um ein benutzerdefiniertes Installationspräfix zu definieren. Standard: /usr/local
-G<Generator Name>
generiert Builddateien für „Generatorname“. Standardmäßig generiert CMake Makefile
s. CMake
generiert standardmäßig eine benutzerfreundliche kolorierte Ausgabe. Wenn Sie eine ausführlichere Ausgabe sehen möchten, verwenden Sie Folgendes:
make VERBOSE=1
Während der CMake
Phase speichert CMake
Variablen in einer lokalen Datei namens CMakeCache.txt
zwischen. Alle von Valkey generierten Variablen werden nach dem Verbrauch aus dem Cache entfernt (dies geschieht durch den Aufruf von unset(VAR-NAME CACHE)
). Einige Variablen, wie z. B. der Compilerpfad, werden jedoch im Cache gespeichert. Um einen neuen Build zu starten, entfernen Sie entweder die Cache-Datei CMakeCache.txt
aus dem Build-Ordner oder löschen Sie den Build-Ordner vollständig.
Beim Hinzufügen neuer Quelldateien ist es wichtig, CMake
erneut auszuführen.
Während der CMake
-Phase des Builds generiert CMake
eine JSON-Datei mit dem Namen compile_commands.json
und platziert sie im Build-Ordner. Diese Datei wird von vielen IDEs und Texteditoren zur Codevervollständigung verwendet (über clangd
).
Eine kleine Einschränkung besteht darin, dass diese Tools im obersten Ordner von Valkey nach compile_commands.json
suchen. Eine übliche Problemumgehung besteht darin, einen symbolischen Link dazu zu erstellen:
cd /path/to/valkey/
# We assume here that your build folder is `build-release`
ln -sf $( pwd ) /build-release/compile_commands.json $( pwd ) /compile_commands.json
Starten Sie Ihre IDE neu und voilà
Weitere Informationen finden Sie unter CONTRIBUTING.md. Informationen zu Sicherheitslücken und Schwachstellen finden Sie unter SECURITY.md.
Valkey, eine Reihe von LF Projects, LLC 2810 N Church St, PMB 57274 Wilmington, Delaware 19802-4447