Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 3522|Antwort: 2

[Quelle] Ein einfacher Vergleich von Garnet Cache und Redis entwickelt mit .NET

[Link kopieren]
Veröffentlicht am 28.03.2024, 18:00:42 | | | |
Garnet ist eine neue Art von Remote-Cache-Speicher, die von Microsoft Research entwickelt wurde und mehrere einzigartige Vorteile bietet:

  • Garnet nimmt das beliebte RESP-Linienprotokoll als Ausgangspunkt, das es ermöglicht, Garnet von unveränderten Redis-Clients zu verwenden, die heute in den meisten Programmiersprachen verfügbar sind, wie StackExchange.Redis in C#.
  • Garnet bietet einen besseren Durchsatz und Skalierbarkeit mit vielen Client-Verbindungen und kleinen Chargen im Vergleich zu vergleichbarem Open-Source-Cache-Speicher, was Kosten für große Anwendungen und Dienste spart.
  • Garnet zeigte extrem niedrige Client-Latenz (typischerweise weniger als 300 Mikrosekunden bei 99,9 %) bei Verwendung von Commodity Cloud (Azure) VMs mit aktiviertem beschleunigtem TCP, was für reale Szenarien entscheidend ist.
  • Garnet basiert auf der neuesten .NET-Technologie und ist plattformübergreifend, erweiterbar und modern. Es ist so konzipiert, dass es leicht zu entwickeln und weiterzuentwickeln ist, ohne in üblichen Situationen auf Leistung einzugehen. Wir nutzen das reichhaltige Bibliotheksökosystem von .NET, um die API zu erweitern und offene Optimierungsmöglichkeiten zu bieten. Dank unseres sorgfältigen Einsatzes von .NET erreicht Garnet sowohl unter Linux als auch unter Windows eine Spitzenleistung.


Open-Source-Adresse:Der Hyperlink-Login ist sichtbar.
Dokumentation:Der Hyperlink-Login ist sichtbar.

Garnet hat folgende wichtige Vorteile:

  • Der Serverdurchsatz (Operationen pro Sekunde) wird bei kleinen Chargen und vielen Client-Sitzungen im Vergleich zu vergleichbarem Open-Source-Cache-Speicher um mehrere Größenordnungen erhöht.
  • Auf Commodity-Cloud-(Azure)-Rechnern mit beschleunigtem TCP unter Windows und Linux ist die Latenz pro Operation extrem niedrig (typischerweise weniger als 300 Mikrosekunden bei 99,9 %).
  • Mit steigender Anzahl der Kunden wird eine bessere Skalierbarkeit mit oder ohne Client-Batching erreicht.
  • Fähigkeit, alle CPU-/Speicherressourcen eines Servercomputers über eine einzige Shared-Memory-Server-Instanz zu nutzen (kein Bedarf für Clustering innerhalb der Knoten).
  • Unterstützung für Datensätze, die größer als Speicher sind, die auf lokale und Cloud-Speichergeräte überlaufen.
  • Datenbankfunktionen wie schneller Checkpoint und Wiederherstellung sowie veröffentlichen/abonnieren.
  • Unterstützung für Multi-Node-Sharded-Hash-Partitionierung (Redis "Cluster"-Modus), Zustandsmigration und Replikation.
  • Gut getestet mit einer umfassenden Testsuite (tausende Unit-Tests gegen Garnet und dessen Speicherschicht Tsavorite).
  • C#-Codebasis, die sich leicht weiterentwickeln und erweitern lässt.


Garnet unterstützt nicht alle Redis-Befehle, sondern speziell Befehle zum Anzeigen:Der Hyperlink-Login ist sichtbar.
Das Garnet-Projekt beinhaltet ein Benchmark-Tool zum Ausführen von RESP-Benchmarks mit verschiedenen Kunden, unterschiedlichen Workloads und verschiedenen Richtlinien zur Messung von Durchsatz, Leistung und Latenz. Adresse:Der Hyperlink-Login ist sichtbar.
RESP-Protokoll:Der Hyperlink-Login ist sichtbar.

Dieser Artikel verwendet die eingebauten Benchmarking-Tools von Redis für einfache Tests, und die Testumgebung ist wie folgt:

Redis Benchmark Leistungstest
https://www.itsvse.com/thread-9645-1-1.html

CacheVersion
RedisRedis 3.0.504 (000000000/0) 64 Bit
GranatGarnet 1.0.2 64 Bit; Standalone-Modus


Redis-Benchmarks

Zuerst starten Sie den Redis-Cache über die Befehlszeile mit folgendem Befehl:


Der Testbefehl ist wie folgt:


Die Ergebnisse sind wie folgt:



====== SETZT ======
  500000 Anfragen in 24,38 Sekunden erledigt
  100 parallele Clients
  3 Bytes Payload
  am Leben bleiben: 1

0,03 % <= 1 Millisekunde
0,25 % <= 2 Millisekunden
2,65 % <= 3 Millisekunden
16,49 % <= 4 Millisekunden
59,95 % <= 5 Millisekunden
99,09 % <= 6 Millisekunden
99,76 % <= 7 Millisekunden
99,86 % <= 8 Millisekunden
99,93 % <= 9 Millisekunden
99,98 % <= 10 Millisekunden
99,99 % <= 11 Millisekunden
100,00 % <= 12 Millisekunden
20512,82 Anfragen pro Sekunde

====== GEH ======
  500000 Anfragen in 27,41 Sekunden abgeschlossen
  100 parallele Clients
  3 Bytes Payload
  am Leben bleiben: 1

0,03 % <= 1 Millisekunde
0,19 % <= 2 Millisekunden
6,44 % <= 3 Millisekunden
25,82 % <= 4 Millisekunden
45,65 % <= 5 Millisekunden
98,79 % <= 6 Millisekunden
99,98 % <= 7 Millisekunden
99,98 % <= 8 Millisekunden
99,98 % <= 9 Millisekunden
100,00 % <= 9 Millisekunden
18238,86 Anfragen pro Sekunde

Garnet-Benchmarks

Erstellen Sie ein neues .NET 8-Konsolenprojekt und beziehen Sie sich zunächst auf das Microsoft.Garnet-Paket mit folgendem Befehl:


Der Code lautet wie folgt:


Der Startbefehl lautet wie folgt:


Mit demselben Benchmark-Befehl ergibt sich das Ergebnis:



====== SETZT ======
  500000 Anfragen in 11,51 Sekunden abgeschlossen
  100 parallele Clients
  3 Bytes Payload
  am Leben bleiben: 1

75,51 % <= 1 Millisekunde
88,24 % <= 2 Millisekunden
92,04 % <= 3 Millisekunden
99,46 % <= 4 Millisekunden
99,98 % <= 5 Millisekunden
99,99 % <= 6 Millisekunden
100,00 % <= 12 Millisekunden
100,00 % <= 12 Millisekunden
43448,04 Anfragen pro Sekunde

====== GEH ======
  500000 Anfragen in 31,50 Sekunden abgeschlossen
  100 parallele Clients
  3 Bytes Payload
  am Leben bleiben: 1

0,01 % <= 1 Millisekunde
0,90 % <= 2 Millisekunden
27,25 % <= 3 Millisekunden
97,65 % <= 4 Millisekunden
99,82 % <= 5 Millisekunden
99,94 % <= 6 Millisekunden
99,98 % <= 7 Millisekunden
99,98 % <= 9 Millisekunden
99,98 % <= 10 Millisekunden
99,99 % <= 11 Millisekunden
100,00 % <= 12 Millisekunden
100,00 % <= 12 Millisekunden
15872.01 Anfragen pro Sekunde

Da die Testwerkzeuge, Softwareversionen, Testparameter usw. alle zu unterschiedlichen Ergebnissen führen, dienen die Tests nur als Referenz; durch die einfachen Tests in diesem Artikel ist zu erkennen, dass Garnet eine deutlich geringere Latenz als Redis hat.

(Ende)




Vorhergehend:.NET/C#-Reflexionsattribut, das anhand von Nulltypen beurteilt werden kann
Nächster:SSE (1) verwendet ASP.NET Core als SSE-Server
 Vermieter| Veröffentlicht am 28.03.2024, 18:01:32 |
KeyDB ist eine vollständig Open-Source-Datenbank, die von Snap betrieben wird, und stellt eine schnellere Alternative zu Redis dar. Adresse:https://docs.keydb.dev/
 Vermieter| Veröffentlicht am 03.9.2025, 09:36:07 |
SCHNELLER: Schnelle, gleichzeitige, persistente Schlüsselwertspeicherung und Protokollierung in C# und C++.
        
Dokumentation:Der Hyperlink-Login ist sichtbar.
Quelle:Der Hyperlink-Login ist sichtbar.
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com