Redis ist eine weit verbreitete In-Memory-Schlüssel-Wert-Hochleistungsdatenbank, die auch als Cache und Message Broker verwendet werden kann. Aufgrund ihrer Leistung und Vielseitigkeit ist sie für viele die erste Wahl. Viele Cloud-Anbieter bieten Redis-basierte Lösungen an:
Aufgrund jüngster Änderungen im Lizenzmodell von Redis ändern sich jedoch dessen Bedeutung und Nutzung. Redis wurde ursprünglich unter der open source BSD-Lizenz entwickelt, die es Entwicklern ermöglichte, den Quellcode sowohl für kommerzielle als auch für nicht-kommerzielle Zwecke frei zu nutzen, zu modifizieren und zu verbreiten. Infolgedessen gewann Redis schnell an Popularität in der Entwicklergemeinschaft.
Redis hat jedoch kürzlich auf eine duale Source-Available-Lizenz umgestellt. Genauer gesagt wird es zukünftig unter RSALv2 (Redis Source Available License Version 2) oder SSPLv1 (Server Side Public License Version 1) verfügbar sein, wobei die kommerzielle Nutzung individuelle Vereinbarungen erfordert, was potenziell die Kosten für Cloud-Dienstanbieter erhöht. Eine detaillierte Übersicht dieser Änderungen finden Sie auf der Lizenzierungsseite von Redis. Basierend auf der Redis Community Edition bleibt der Quellcode für Entwickler, Kunden und Partner des Unternehmens frei verfügbar. Cloud-Dienstanbieter und andere, die Redis als Teil kommerzieller Angebote nutzen möchten, müssen jedoch individuelle Vereinbarungen mit dem Anbieter treffen.
Aufgrund dieser jüngsten Änderungen im Lizenzmodell von Redis überdenken viele Entwickler und Organisationen ihre Wahl der In-Memory-Schlüssel-Wert-Datenbanken. Valkey, ein open source Fork von Redis, behält die hohe Leistung und Vielseitigkeit bei und gewährleistet gleichzeitig eine uneingeschränkte Nutzung für Entwickler und kommerzielle Unternehmen. Die Linux Foundation hat das Projekt geforkt, und Mitwirkende unterstützen nun das Valkey-Projekt. Weitere Informationen finden Sie hier und hier. Sein Engagement für open source Prinzipien hat die Unterstützung großer Cloud-Anbieter, einschließlich AWS, gewonnen. Amazon Web Services (AWS) kündigte an: „AWS ist bestrebt, open source Valkey langfristig zu unterstützen“, weitere Informationen finden Sie hier. Es könnte also der richtige Zeitpunkt sein, die Infrastruktur von Redis auf Valkey umzustellen.
In diesem Artikel werden wir eine Valkey-Instanz mit TLS einrichten und die Schritte zur nahtlosen Migration Ihrer Daten von Redis skizzieren.
Im Allgemeinen gibt es mehrere Migrationsansätze:
REPLICAOF, um Valkey mit der Redis-Instanz zu verbindenIn diesem Blogartikel stellen wir fest, dass der direkte Zugriff auf das Dateisystem des Redis-Servers in der Cloud nicht praktikabel ist, um die Datenbankdatei wiederzuverwenden, und dass der Valkey-Dienst und der Redis-Dienst sich in verschiedenen Netzwerken befinden und sich nicht gegenseitig erreichen können, um ein Replikat einzurichten. Daher wählen wir die dritte Option und führen ein automatisiertes Datenmigrationsskript auf einem anderen Rechner aus, der sich mit beiden Servern verbinden und die Daten übertragen kann.
Falls Sie einen Cloud-Dienst nutzen, konsultieren Sie bitte deren Anweisungen zur Einrichtung einer Valkey-Instanz. Da es sich um ein neues Projekt handelt, gibt es nur wenige Distributionen, die gebrauchsfertige Pakete wie Red Hat Enterprise Linux 8 und 9 über Extra Packages for Enterprise Linux (EPEL) bereitstellen. In diesem Blogbeitrag verwenden wir einen lokalen Debian 12 Server, um den Valkey-Server in Version 7.2.6 mit TLS zu hosten. Bitte konsultieren Sie die Anleitungen Ihrer Distribution zur Installation von Valkey oder verwenden Sie das auf
In diesem Blogartikel werden wir einen Server mit den aufgeführten TLS-Parametern verwenden. Wir geben alle verwendeten TLS-Parameter an, einschließlich port 0, um den Nicht-TLS-Port vollständig zu deaktivieren:
$ valkey-server --tls-port 6379 --port 0 --tls-cert-file ./tls/redis.crt --tls-key-file ./tls/redis.key --tls-ca-cert-file ./tls/ca.crt .+^+. .+#########+. .+########+########+. Valkey 7.2.6 (579cca5f/0) 64 bit .+########+' '+########+. .########+' .+. '+########. Läuft im Standalone-Modus |####+' .+#######+. '+####| Port: 6379 |###| .+###############+. |###| PID: 436767 |###| |#####*'' ''*#####| |###| |###| |####' .-. '####| |###| |###| |###( (@@@) )###| |###| https://valkey.io |###| |####. '-' .####| |###| |###| |#####*. .*#####| |###| |###| '+#####| |#####+' |###| |####+. +##| |#+' .+####| '#######+ |##| .+########' '+###| |##| .+########+' '| |####+########+' +#########+' '+v+' 436767:M 27. Aug. 2024 16:08:56.058 * Server initialisiert 436767:M 27. Aug. 2024 16:08:56.058 * Lade RDB, erstellt von Valkey Version 7.2.6 [...] 436767:M 27. Aug. 2024 16:08:56.058 * Bereit, TLS-Verbindungen anzunehmen
Nun ist es Zeit, die Verbindung mit einem Client über TLS zu testen:
$ valkey-cli --tls --cert ./tls/redis.crt --key ./tls/redis.key --cacert ./tls/ca.crt -p 6379 127.0.0.1:6379> INFO SERVER # server server_name:valkey valkey_version:7.2.6 [...]
Schließlich migrieren wir die Daten in diesem Beispiel mithilfe eines Python 3-Skripts. Dieses Python-Skript stellt Verbindungen zu den Redis-Quell- und Valkey-Zieldatenbanken her, ruft alle Schlüssel aus der Redis-Datenbank ab und erstellt oder aktualisiert jedes Schlüssel-Wert-Paar in der Valkey-Datenbank. Dieser Ansatz ist nicht standardmäßig verfügbar und verwendet die redis-py-Bibliothek, die eine Liste von Beispielen bereitstellt. Durch die Verwendung von Python 3 könnte der Prozess sogar erweitert werden, um unerwünschte Daten zu filtern, Werte an die neue Umgebung anzupassen oder Plausibilitätsprüfungen hinzuzufügen. Das hier verwendete Skript liefert Fortschrittsaktualisierungen während des Migrationsprozesses:
#!/usr/bin/env python3
import redis
# Verbindung zur Redis-Quelldatenbank herstellen, die passwortgeschützt ist, über IP und Port
redis_client = redis.StrictRedis(host='172.17.0.3', port=6379, password='secret', db=0)
# Verbindung zur Valkey-Zieldatenbank herstellen, die TLS verwendet
ssl_certfile="./tls/client.crt"
ssl_keyfile="./tls/client.key"
ssl_ca_certs="./tls/ca.crt"
valkey_client = redis.Redis(
host="192.168.0.3",
port=6379,
ssl=True,
ssl_certfile=ssl_certfile,
ssl_keyfile=ssl_keyfile,
ssl_cert_reqs="required",
ssl_ca_certs=ssl_ca_certs,
)
# Alle Schlüssel aus der Redis-Datenbank abrufen
keys = redis_client.keys('*')
print("Gefunden", len(keys), "Schlüssel in der Quelle!")
# Jedes Schlüssel-Wert-Paar in die Valkey-Datenbank migrieren
for counter, key in enumerate(keys):
value = redis_client.get(key)
valkey_client.set(key, value)
print("Status: ", round((counter+1) / len(keys) * 100, 1), " %", end='
')
print()
Um den Prozess zu starten, führen Sie das Skript aus:
$ python3 redis_to_tls_valkey.py 569383 Schlüssel in der Quelle gefunden! Status: 100,0 %
Als letzten Schritt konfigurieren Sie Ihre Anwendung so, dass sie sich mit dem neuen Valkey-Server verbindet.
Seit der Lizenzänderung von Redis gewinnt das neue Projekt Valkey immer mehr an Attraktivität. Die Migration zu Valkey gewährleistet weiterhin den Zugriff auf eine robuste open source In-Memory-Datenbank ohne die Lizenzbeschränkungen von Redis. Ob Sie Ihre Infrastruktur lokal oder in der Cloud betreiben, dieser Leitfaden bietet die notwendigen Schritte für eine erfolgreiche Migration. Die Migration von einer Cloud-Instanz in eine neue Umgebung kann umständlich sein, da kein direkter Dateizugriff oder isolierte Netzwerke vorhanden sind. Je nach diesen Umständen haben wir ein Python-Skript verwendet, das eine flexible Möglichkeit bietet, verschiedene Schritte zur Bewältigung der Aufgabe umzusetzen.
Wenn Sie diesen Leitfaden hilfreich finden und falls Sie Unterstützung bei der Migration Ihrer Datenbanken benötigen, kontaktieren Sie uns gerne. Wir unterstützen Sie gerne lokal oder in Cloud-Umgebungen.
| Kategorien: | HowTos |
|---|---|
| Tags: | Redis Valkey |
Sie müssen den Inhalt von reCAPTCHA laden, um das Formular abzuschicken. Bitte beachten Sie, dass dabei Daten mit Drittanbietern ausgetauscht werden.
Mehr InformationenSie sehen gerade einen Platzhalterinhalt von Brevo. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr InformationenSie müssen den Inhalt von reCAPTCHA laden, um das Formular abzuschicken. Bitte beachten Sie, dass dabei Daten mit Drittanbietern ausgetauscht werden.
Mehr InformationenSie müssen den Inhalt von Turnstile laden, um das Formular abzuschicken. Bitte beachten Sie, dass dabei Daten mit Drittanbietern ausgetauscht werden.
Mehr InformationenSie müssen den Inhalt von reCAPTCHA laden, um das Formular abzuschicken. Bitte beachten Sie, dass dabei Daten mit Drittanbietern ausgetauscht werden.
Mehr InformationenSie sehen gerade einen Platzhalterinhalt von Turnstile. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr Informationen