Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 3522|Odpowiedź: 2

[Źródło] Proste porównanie pamięci podręcznej Garnet i Redis opracowanej w .NET

[Skopiuj link]
Opublikowano 2024-3-28 18:00:42 | | | |
Garnet to nowy typ zdalnego przechowywania pamięci podręcznej opracowany przez Microsoft Research, który oferuje kilka unikalnych korzyści:

  • Garnet bierze za punkt wyjścia popularny protokół liniowy RESP, który umożliwia korzystanie z Garnet z niezmodyfikowanych klientów Redis dostępnych obecnie w większości języków programowania, takich jak StackExchange.Redis w C#.
  • Garnet oferuje lepszą przepustowość i skalowalność dzięki wielu połączeniom klientom i małym partiom w porównaniu do porównywalnej otwartoźródłowej pamięci podręcznej, oszczędzając koszty dla dużych aplikacji i usług.
  • Garnet wykazał niezwykle niskie opóźnienia klientów (zazwyczaj poniżej 300 mikrosekund przy 99,9%) przy użyciu maszyn wirtualnych Commodity Cloud (Azure) z przyspieszonym TCP, co jest kluczowe w realnych sytuacjach.
  • Garnet opiera się na najnowszej technologii .NET i jest wieloplatformowy, rozszerzalny i nowoczesny. Jest zaprojektowany tak, aby łatwo się rozwijał i rozwijał bez utraty wydajności w typowych sytuacjach. Wykorzystujemy bogaty ekosystem bibliotek .NET do rozszerzenia API i zapewnienia otwartych możliwości optymalizacji. Dzięki starannemu wykorzystaniu .NET Garnet osiąga najnowocześniejszą wydajność zarówno na Linuksie, jak i Windowsie.


Adres open source:Logowanie do linku jest widoczne.
Dokumentacja:Logowanie do linku jest widoczne.

Granat ma następujące kluczowe korzyści:

  • Przepustowość serwera (operacje na sekundę) jest zwiększana o kilka rzędów wielkości dla małych partii i wielu sesji klienckich w porównaniu do porównywalnej otwartoźródłowej pamięci podręcznej.
  • Na komputerach z commodity cloud (Azure) z włączonym przyspieszonym TCP na Windows i Linux opóźnienia na operację są niezwykle niskie (zazwyczaj poniżej 300 mikrosekund przy 99,9%).
  • Wraz ze wzrostem liczby klientów osiąga się lepszą skalowalność, niezależnie od grupowania klientów.
  • Możliwość wykorzystania wszystkich zasobów CPU/pamięci komputera serwerowego przez jedną instancję serwera pamięci współdzielonej (bez potrzeby klastrowania wewnątrzwęzłowego).
  • Wsparcie dla zbiorów danych większych niż pamięć, które przepełniają się do urządzeń magazynujących lokalnie i w chmurze.
  • Funkcje bazy danych, takie jak szybkie punkty kontrolne i odzyskiwanie oraz publikowanie/subskrypcja.
  • Wsparcie dla wielowęzłowego podziału hash sharded (tryb "klasterowy" Redis), migracji stanów oraz replikacji.
  • Dobrze przetestowane z kompleksowym zestawem testów (tysiące testów jednostkowych przeciwko Garnet i jego tierowi pamięci Tsavorite).
  • C# baza kodu, którą łatwo rozwijać i rozszerzać.


Garnet nie obsługuje wszystkich poleceń Redis, a w szczególności poleceń do przeglądania:Logowanie do linku jest widoczne.
Projekt Garnet zawiera narzędzie Benchmark do uruchamiania benchmarków RESP z użyciem różnych klientów, różnych obciążeń i polityk do pomiaru przepustowości, wydajności i opóźnień. Adres:Logowanie do linku jest widoczne.
Protokół RESP:Logowanie do linku jest widoczne.

Ten artykuł wykorzystuje wbudowane narzędzia benchmarkingowe Redis do prostych testów, a środowisko testowe wygląda następująco:

Test wydajności Redis Benchmark
https://www.itsvse.com/thread-9645-1-1.html

pamięć podręcznaWersja
RedisRedis 3.0.504 (00000000/0) 64 bity
GranatGarnet 1.0.2 64 bit; Tryb samodzielny


Benchmarki Redis

Najpierw uruchom pamięć podręczną Redis za pomocą wiersza poleceń:


Polecenie testowe wygląda następująco:


Wyniki są następujące:



====== ZESTAW ======
  5000000 żądań zakończonych w 24,38 sekundy
  100 klientów równoległych
  Ładunek 3 bajtów
  Keep alive: 1

0,03% <= 1 milisekunda
0,25% <= 2 milisekundy
2,65% <= 3 milisekundy
16,49% <= 4 milisekundy
59,95% <= 5 milisekund
99,09% <= 6 milisekund
99,76% <= 7 milisekund
99,86% <= 8 milisekund
99,93% <= 9 milisekund
99,98% <= 10 milisekund
99,99% <= 11 milisekund
100,00% <= 12 milisekund
20512,82 żądań na sekundę

====== SIĘ ======
  5000000 żądań zakończonych w 27,41 sekundy
  100 klientów równoległych
  Ładunek 3 bajtów
  Keep alive: 1

0,03% <= 1 milisekunda
0,19% <= 2 milisekundy
6,44% <= 3 milisekundy
25,82% <= 4 milisekundy
45,65% <= 5 milisekund
98,79% <= 6 milisekund
99,98% <= 7 milisekund
99,98% <= 8 milisekund
99,98% <= 9 milisekund
100,00% <= 9 milisekund
18238,86 żądań na sekundę

Benchmarki granatów

Stwórz nowy projekt konsoli .NET 8 i najpierw odwołaj się do pakietu Microsoft.Garnet za pomocą następującego polecenia:


Kod jest następujący:


Polecenie startowe wygląda następująco:


Używając tego samego polecenia benchmark, wynik wygląda następująco:



====== ZESTAW ======
  5000000 żądań wykonanych w 11,51 sekundy
  100 klientów równoległych
  Ładunek 3 bajtów
  Keep alive: 1

75,51% <= 1 milisekunda
88,24% <= 2 milisekundy
92,04% <= 3 milisekundy
99,46% <= 4 milisekundy
99,98% <= 5 milisekund
99,99% <= 6 milisekund
100,00% <= 12 milisekund
100,00% <= 12 milisekund
43448,04 żądań na sekundę

====== SIĘ ======
  500000 żądań wykonanych w 31,50 sekundy
  100 klientów równoległych
  Ładunek 3 bajtów
  Keep alive: 1

0,01% <= 1 milisekunda
0,90% <= 2 milisekundy
27,25% <= 3 milisekundy
97,65% <= 4 milisekundy
99,82% <= 5 milisekund
99,94% <= 6 milisekund
99,98% <= 7 milisekund
99,98% <= 9 milisekund
99,98% <= 10 milisekund
99,99% <= 11 milisekund
100,00% <= 12 milisekund
100,00% <= 12 milisekund
15872,01 żądań na sekundę

Ze względu na narzędzia testowe, wersje oprogramowania, parametry testowe itd., które dają różne wyniki, testy są wyłącznie referencyjne, a dzięki prostym testom w tym artykule widać, że Garnet ma znacznie niższe opóźnienia niż Redis.

(Koniec)




Poprzedni:.NET/C# odbijający atrybut, który można oceniać za pomocą typów zerowych
Następny:SSE (1) używa ASP.NET Core jako serwera SSE
 Ziemianin| Opublikowano 2024-3-28 18:01:32 |
KeyDB to całkowicie otwartoźródłowa baza danych oparta na Snapie i stanowi szybszą alternatywę dla Redis. Adres:https://docs.keydb.dev/
 Ziemianin| Opublikowano 3.09.2025 09:36:07 |
FASTER: Szybkie, trwałe przechowywanie i logowanie klucz-wartość w C# i C++.
        
Dokumentacja:Logowanie do linku jest widoczne.
Źródło:Logowanie do linku jest widoczne.
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com