Valkeys 1. Jahrestag: Wie der Community-Fork Redis überholt hat
(gomomento.com)- Redis Inc erschütterte mit der Entscheidung zur Quellschließung (Wechsel zu SSPL) das Vertrauen der Community, doch rund um den Fork Valkey sammelte sich die Entwickler-Community und trieb aktiv Innovationen und Beiträge voran
- Redis 8.0 ist wieder zu Open Source zurückgekehrt, und auch der Gründer Antirez ist zurück und arbeitet an neuen Funktionen und Optimierungen mit – beide Lager entwickeln sich schnell weiter
- Laut aktuellen Benchmark-Ergebnissen erzielt Valkey 8.1.1 in einer 8-vCPU-Umgebung bei SET eine um 37 % höhere Leistung als Redis 8.0, bei zugleich geringerer p99-Latenz (auch bei GET mit 16 % Vorsprung)
- Mit praxisnahen Tuning-Methoden wie IO-Threads und Core-Pinning erreicht Valkey in Multithreading-Umgebungen mehr als die dreifache Verarbeitungskapazität bei minimierter Latenz
- Es werden zudem Benchmarks unter realitätsnahen Einsatzbedingungen sowie Tuning-Know-how geteilt, inklusive Hinweisen zur Interpretation der Ergebnisse und zur Anwendung in Produktionsumgebungen
Die Quellschließung von Redis und das Auftreten von Valkey
- Vor einem Jahr verschlechterte sich das Vertrauensverhältnis zur Community, nachdem Redis Inc (früher Garantia Data) die Open-Source-Lizenz geändert und SSPL eingeführt hatte
- Der als Lösung entstandene offene Fork Valkey wurde zu einem breit genutzten Technologie-Baustein für verteilte Systeme, Caching und Echtzeit-Datenverarbeitung
- Auch Redis versucht seitdem, Vertrauen zurückzugewinnen – mit der Rückkehr von Antirez (dem Gründer), dem Ausbau von Leistung und Funktionsumfang sowie der erneuten Open-Source-Freigabe von Redis 8.0
Valkey 8.1 vs. Redis 8.0: Leistungsvergleich
- SET-Benchmark unter identischen Bedingungen: 8-vCPU-AWS-c8g.2xl-Instanz, 1-KB-Items, 3M-Keyspace, 500 Verbindungen
- Valkey 8.1.1: 999.8K RPS (p99 0.8ms)
- Redis 8.0: 729.4K RPS (p99 0.99ms)
- Valkey liegt bei SET um 37 % und bei GET um 16 % vorn; bei SET ist p99 um 30 %, bei GET p99 um 60 % schneller
- Mit 6 IO-Threads steigt Valkey von 239K auf 678K RPS (2,8x), p99 sinkt von 1.68ms auf 0.93ms (44 %↓)
- Auch Redis profitiert von IO-Threads: von 235K auf 563K RPS, p99 von 1.35ms auf 0.84ms (40 %↓)
Wirkung von Multithreading- und Core-Tuning
- Ab 3 IO-Threads zeigt sich der Effekt deutlich; bei Valkey wird der Abstand zu Redis ab 4 Threads noch größer
- Wenn IRQ-Kerne auf 2 begrenzt und Redis/Valkey auf die verbleibenden 6 Kerne fixiert werden (Pinning), steigt die Leistung weiter
- Valkey: 832K → 999.8K RPS (Core-/IRQ-Pinning, 80 % CPU-Auslastung)
- Die Trennung von IRQ- und Anwendungs-Kernen verbessert die Cache-Effizienz und minimiert die Tail Latency
- Konkrete Beispiele mit Docker und Optionen wie
cpuset-cpus,--io-threadswerden bereitgestellt
Benchmark-Reproduzierbarkeit und Praxistipps
- Einsatz einer aktuellen AWS Graviton4 (c8g.2xlarge)-Instanz mit Cluster Placement Group
- Maximale Leistung durch Core-Pinning / IRQ-Trennung / Anpassung der Verbindungszahl (Bereich 400–500)
- Auch Keyspace- und Item-Größe sollten abgestimmt werden; kleinere Werte und kleinerer Keyspace erhöhen die L3-Cache-Trefferquote
- Der aktive Einsatz von Multithreading-Benchmark-Tools wie valkey-benchmark oder rpc-perf (ein Rust-basiertes Tool, näher an realen Workloads) wird empfohlen
docker run --network="host" --rm --cpuset-cpus="2-7" \ valkey/valkey:8.0.1 valkey-benchmark \ -h 172.31.4.92 -p 6379 -t SET,GET -n 100000000 -c 256 \ -r 3000000 --threads 6 -d 1024
Grenzen und Hinweise zur Leistungsmessung
-
Benchmark-Ergebnisse können von realen Produktionsumgebungen abweichen
- Reale Workloads umfassen gemischte SET:GET-Muster, Lastschwankungen, TPS-Ziele, Netzwerklatenzen und weitere Faktoren
- Bei stark steigender Verbindungszahl wurden auch Queueing-Latenz, sinkender Throughput und höhere Tail Latency beobachtet
- Je nach Benchmark-Tool/Optionen und Netzwerk-Topologie können die Ergebnisse stark variieren
Zentrale Entwicklungsschritte und Community-Fortschritt
Das Valkey-Projekt hat sich im vergangenen Jahr in vielerlei Hinsicht dynamisch weiterentwickelt
- Auf GitHub und anderswo wurden unter Zusammenarbeit vieler Entwickler und Unternehmen Funktionen ergänzt, Bugs behoben und die Sicherheit verbessert
- Auch in Dokumentation und Nutzer-Support wurde investiert, um die Einstiegshürden für neue Nutzer zu senken
- Im Projektbetrieb wurden transparente Entscheidungen und Community-Abstimmungen besonders betont
Bedeutung für Branche und Technik
Valkey bietet unter anderem folgende Stärken
- Ohne Lizenzbeschränkungen nutzbar und daher eine attraktive Option für Cloud-Service-Anbieter und große Web-Service-Unternehmen
- Hohe Kompatibilität mit Redis, wodurch Migrationen einfach bleiben
- Community-getriebene Entwicklung, die vielfältige Anforderungen aufgreifen und schnelle kontinuierliche Updates ermöglichen kann
Fazit und Erkenntnisse
- Valkey hat ein Jahr nach dem Redis-Fork in technischer Hinsicht, bei der Leistung und in der Community-Entwicklung Ergebnisse gezeigt, die Redis übertreffen
- Praxisnahes Tuning mit IO-Threads, Core-/IRQ-Trennung und Verbindungssteuerung sowie die passenden Tools sind entscheidend
- Leistung kommt nicht automatisch; kontinuierliche Optimierung passend zu System, Workload und Infrastruktur ist unverzichtbar
- In realen Service-Umgebungen ist ein praxisnaher Ansatz nötig: nicht nur auf Benchmark-Zahlen vertrauen, sondern unterschiedliche Situationen selbst testen
4 Kommentare
Redis hat zwar viele falsche Entscheidungen getroffen, aber es ist schade, wenn am Ende der Bär die Kunststücke macht und der Dompteur das Geld kassiert.
In der Facebook-"Redis User Group" gepostetes
Material, das zusammenfasst, welche Verbesserungen in Valkey 8 vorgenommen wurden.
https://www.facebook.com/groups/rediskorea/posts/3927030954110001/
Wenn Sie es zusammen mit dem obigen Inhalt lesen, dürfte es beim Verständnis helfen.
Eigentlich weniger, weil Valkey selbst etwas Besonderes geleistet hätte … eher, weil die andere Seite ganz von allein abgestürzt ist …
Hacker-News-Kommentare
write(2)/read(2)-Syscalls beim Verlassen des Event Loops sehr langsam sein können, eine Struktur eingeführt, bei der in diesem Moment nur I/O im Zustand ohne Contention auf N Threads parallelisiert wird und danach sofort wieder zum Single-Thread zurückgekehrt wird. Ich bin dankbar, dass das Valkey-Team dieses System weiterentwickelt hat. Dieses System funktionierte schon früher, und es stört mich, dass die Presse Daten, die sich in der Realität nicht verändert haben, einfach übertreibt. Solche Funktionen interessieren in der Praxis eher Enterprise-Nutzer oder Cloud-Anbieter (Amazon, Google usw.) als die meisten normalen Redis-Nutzer. Wenn man nicht zwangsläufig enorme Last oder sehr viele Nutzer gleichzeitig bedienen muss, ist die CPU-Auslastung von Redis meist niedrig, sodass man es nicht extra aktivieren muss. Während in Redis zuletzt der Datentyp vector set entwickelt wird, ist Threading dort standardmäßig vorgesehen, und auch das Schreiben von Vector Sets überVADDkann per Threading erfolgen. Datenstrukturen wie HNSW haben erstmals in der Geschichte von Redis enorme konstante Laufzeiten, wodurch sich der gesamte Designraum verändert. In der Vergangenheit hatte ich auch bereits Thread-Unterstützung für Module implementiert. Ob man Threads verwendet, ist eine situationsabhängige Entscheidung.