Willkommen bei Garnet
Garnet ist ein neuer Remote-Cache-Store von Microsoft Research, der extrem schnell, erweiterbar und mit geringer Latenz entwickelt wurde. Garnet ist auf einzelnen Knoten Thread-skalierbar. Es unterstützt auch verteilte Cluster-Ausführung mit Replikation, Checkpointing, Failover und Transaktionen. Es kann über den Hauptspeicher sowie über gestufte Speicher (wie SSD und Azure Storage) betrieben werden. Garnet unterstützt eine reichhaltige API-Oberfläche und ein leistungsstarkes Erweiterungsmodell.
Garnet verwendet Redis' RESP als primäres Wire-Protokoll. Daher kann man Garnet mit unveränderten Redis-Clients verwenden, die in den meisten Programmiersprachen verfügbar sind, zum Beispiel mit StackExchange.Redis in C#. Im Vergleich zu anderen Open-Source-Cache-Stores erhalten Sie deutlich bessere Leistung, Latenz, Erweiterbarkeit und Haltbarkeitsfunktionen.
Beachten Sie, dass Garnet ein Forschungsprojekt von Microsoft Research ist und das Projekt entsprechend behandelt werden sollte. Das bedeutet, wir sind eine Gruppe hoch leidenschaftlicher Forscher und Entwickler, die derzeit Vollzeit daran arbeiten, es so stabil und effizient wie möglich zu machen. Unser Ziel ist es, eine lebendige Community rund um Garnet aufzubauen. Tatsächlich war Garnet bisher von ausreichend hoher Qualität, dass mehrere erstklassige und plattformspezifische Teams bei Microsoft seit vielen Monaten Versionen von Garnet intern eingesetzt haben.
Garnet bietet folgende Hauptvorteile
- Umfassend bessere Serverdurchsatz (Ops/Sekunde) mit kleinen Batches und vielen Client-Sitzungen im Vergleich zu vergleichbaren Open-Source-Cache-Stores.
- Extrem niedrige Latenz bei einzelnen Operationen (oft weniger als 300 Mikrosekunden bei der 99,9. Perzentil) auf handelsüblichen Cloud-Maschinen (Azure) mit aktiviertem beschleunigtem TCP, sowohl unter Windows als auch unter Linux.
- Bessere Skalierbarkeit bei Erhöhung der Client-Anzahl, mit oder ohne Client-seitiges Batching.
- Die Fähigkeit, alle CPU-/Speicherressourcen einer Servermaschine mit einer einzigen Shared-Memory-Serverinstanz zu nutzen (kein Intra-Node-Cluster erforderlich).
- Unterstützung für größere als speicherbasierte Datensätze, die auf lokale und Cloud-Speichergeräte ausgelagert werden.
- Datenbankfunktionen wie schnelles Checkpointing und Wiederherstellung sowie Publish/Subscribe.
- Unterstützung für Multi-Node-Sharded-Hash-Partitionierung (Redis "Cluster"-Modus), Zustandsmigration und Replikation.
- Gut getestet mit einer umfassenden Testsuite (Tausende von Unit-Tests für Garnet und seine Speicherschicht Tsavorite).
- Eine C#-Codebasis, die einfach zu entwickeln und zu erweitern ist.
Wenn Sie einen Cache-Store für Ihre Anwendung oder Ihren Dienst benötigen, mit vielen praktischen Funktionen, hoher Leistung und einem modernen Design, das auf modernster Microsoft Research-Technologie basiert, dann ist Garnet das richtige System für Sie. Weitere Details zu den Leistungsvorteilen von Garnet finden Sie hier.
API-Abdeckung
Garnet unterstützt eine große (und wachsende) API-Oberfläche, darunter
- Rohe String-Operationen wie GET, SET, MGET, MSET, GETSET, SETEX, DEL, EXISTS, RENAME, EXPIRE, SET-Varianten (wenn vorhanden, wenn nicht vorhanden).
- Numerische Operationen wie INCR, INCRBY, DECR, DECRBY.
- Remote-Datenstrukturen wie List, Hash, Set, Sorted Set und Geo.
- Analyse-APIs wie Hyperloglog und Bitmap.
- Checkpoint-/Wiederherstellungsoperationen wie SAVE, LASTSAVE, BGSAVE.
- Admin-Operationen wie PING, QUIT, CONFIG, RESET, TIME.
- ACL-Unterstützung.
- Publish/Subscribe-, Transaktions- und Lua-Scripting-Unterstützung.
Die Liste wächst ständig, und wir würden uns freuen, von Ihnen zu hören, welche APIs Sie am meisten wünschen!
Darüber hinaus unterstützt Garnet ein leistungsfähiges Custom-Operator-Framework, mit dem Sie benutzerdefinierte C#-Datenstrukturen und Lese-Änderungs-Schreib-Operationen auf dem Server registrieren und über dasselbe Wire-Protokoll darauf zugreifen können. So können Sie diese Befehle über die Fähigkeit der Clients aufrufen, neue Befehle auszuführen, z.B. die Aufrufe Execute und ExecuteAsync in der StackExchange.Redis-Clientbibliothek.
Unterstützte Plattformen
Der Garnet-Server basiert auf hochperformanter .NET-Technologie, die von Grund auf auf Leistung ausgelegt ist. Garnet wurde umfassend getestet und funktioniert gleichermaßen effizient unter Linux und Windows, auf handelsüblicher Azure-Hardware sowie auf Edge-Geräten.
Man kann Garnet auch als einen unglaublich schnellen Remote-.NET-Datenstrukturen-Server betrachten, der durch die Nutzung des reichhaltigen Ökosystems von C#-Bibliotheken erweitert werden kann, um über die Kern-API hinauszugehen. Die Speicherschicht von Garnet heißt Tsavorite, die verschiedene Backing-Speichergeräte unterstützt, wie z.B. schnelle lokale SSD-Laufwerke und Azure Storage. Sie verfügt über optimierte Geräte für Windows und Linux. Schließlich unterstützt Garnet TLS für sichere Verbindungen.
Redis ist eine eingetragene Marke von Redis Ltd. Alle Rechte daran sind Redis Ltd. vorbehalten. Jede Nutzung durch Microsoft dient ausschließlich Referenzzwecken und impliziert keine Sponsoring, Billigung oder Zugehörigkeit zwischen Redis und Microsoft.