Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 3522|Ответ: 2

[Источник] Простое сравнение кэша Garnet и Redis, разработанное с .NET

[Скопировать ссылку]
Опубликовано 28.03.2024 18:00:42 | | | |
Garnet — это новый тип удалённого хранилища кэша, разработанный Microsoft Research, который предлагает несколько уникальных преимуществ:

  • Garnet использует популярный линейный протокол RESP в качестве отправной точки, который позволяет использовать Garnet из немодифицированных клиентов Redis, доступных сегодня в большинстве языков программирования, таких как StackExchange.Redis на C#.
  • Garnet предлагает лучшую пропускную способность и масштабируемость благодаря множеству клиентских соединений и небольшим партиям по сравнению с аналогичными открытыми кэшами, что экономит затраты на крупные приложения и сервисы.
  • Garnet продемонстрировал чрезвычайно низкую задержку клиента (обычно менее 300 микросекунд при 99,9%) при использовании виртуальных машин Commodity Cloud (Azure) с ускоренным TCP, что критически важно для реальных сценариев.
  • Garnet основана на новейшей технологии .NET, является кроссплатформенной, расширяемой и современной. Он разработан так, чтобы её было легко развивать и развивать, не жертвуя производительностью в обычных ситуациях. Мы используем богатую библиотечную экосистему .NET для расширения API и предоставления открытых возможностей для оптимизации. Благодаря тщательному использованию .NET Garnet достигает передовой производительности как на Linux, так и на Windows.


Открытый исходный код:Вход по гиперссылке виден.
Документация:Вход по гиперссылке виден.

Гранат обладает следующими ключевыми преимуществами:

  • Пропускная способность сервера (операции в секунду) увеличивается на несколько порядков для небольших партий и множества клиентских сессий по сравнению с сопоставимым открытым кэш-хранилищем.
  • На стандартных облачных машинах (Azure) с ускоренным TCP на Windows и Linux задержка на операцию крайне низкая (обычно менее 300 микросекунд при 99,9%).
  • По мере увеличения числа клиентов достигается лучшая масштабируемость как с пакетированием клиентов, так и без него.
  • Возможность использования всех ресурсов CPU/памяти серверного компьютера через один экземпляр сервера общей памяти (не требуется кластеризация внутриузлов).
  • Поддержка наборов данных, превышающих память, которые переполняются локальными и облачными устройствами хранения.
  • Функции базы данных, такие как быстрая контрольная точка, восстановление и публикация/подписка.
  • Поддержка многоузлового шардированного хеш-разделения (режим Redis «кластер»), миграции состояний и репликации.
  • Хорошо протестирован с комплексным тестовым набором (тысячи модульных тестов против Garnet и его уровня хранения Tsavorite).
  • C# кодовая база, которую легко развивать и расширять.


Garnet не поддерживает все команды Redis, особенно поддерживаемые команды для просмотра:Вход по гиперссылке виден.
Проект Garnet включает инструмент Benchmark для запуска RESP-бенчмарков с использованием разных клиентов, различных рабочих нагрузок и различных политик для измерения пропускной способности, производительности и задержки. Адрес:Вход по гиперссылке виден.
Протокол RESP:Вход по гиперссылке виден.

В этой статье используются встроенные инструменты бенчмаркинга Redis для простого тестирования, а среда тестирования выглядит следующим образом:

Тест производительности Redis Benchmark
https://www.itsvse.com/thread-9645-1-1.html

тайникВерсия
RedisRedis 3.0.504 (00000000/0) 64-битный
ГранатGarnet 1.0.2 64 бит; Автономный режим


Бенчмарки Redis

Сначала запустите кэш Redis с помощью командной строки следующей командой:


Команда тестирования следующая:


Результаты следующие:



====== SET ======
  500000 запросов выполнено за 24,38 секунды
  100 параллельных клиентов
  Полезная нагрузка 3 байта
  Сохранить в живых: 1

0,03% < = 1 миллисекунда
0,25% < = 2 миллисекунды
2,65% < = 3 миллисекунды
16,49% < = 4 миллисекунды
59,95% < = 5 миллисекунд
99,09% <= 6 миллисекунд
99,76% <= 7 миллисекунд
99,86% <= 8 миллисекунд
99,93% < = 9 миллисекунд
99,98% < = 10 миллисекунд
99,99% <= 11 миллисекунд
100,00% <= 12 миллисекунд
20512,82 запроса в секунду

====== ПОЛУЧИТЬ ======
  500000 запросов выполнено за 27,41 секунды
  100 параллельных клиентов
  Полезная нагрузка 3 байта
  Сохранить в живых: 1

0,03% < = 1 миллисекунда
0,19% < = 2 миллисекунды
6,44% <= 3 миллисекунды
25,82% < = 4 миллисекунды
45,65% < = 5 миллисекунд
98,79% <= 6 миллисекунд
99,98% < = 7 миллисекунд
99,98% <= 8 миллисекунд
99,98% < = 9 миллисекунд
100,00% <= 9 миллисекунд
18238,86 запросов в секунду

Бенчмарки Garnet

Создайте новый консольный проект .NET 8 и сначала скажите пакет Microsoft.Garnet следующей командой:


Код таков:


Команда запуска выглядит следующим образом:


Используя ту же команду бенчмарка, результат выглядит следующим образом:



====== SET ======
  500000 запросов выполнено за 11,51 секунды
  100 параллельных клиентов
  Полезная нагрузка 3 байта
  Сохранить в живых: 1

75,51% <= 1 миллисекунда
88,24% <= 2 миллисекунды
92,04% <= 3 миллисекунды
99,46% <= 4 миллисекунды
99,98% < = 5 миллисекунд
99,99% < = 6 миллисекунд
100,00% <= 12 миллисекунд
100,00% <= 12 миллисекунд
43448,04 запроса в секунду

====== ПОЛУЧИТЬ ======
  500000 запросов выполнено за 31,50 секунды
  100 параллельных клиентов
  Полезная нагрузка 3 байта
  Сохранить в живых: 1

0,01% < = 1 миллисекунда
0,90% <= 2 миллисекунды
27,25% <= 3 миллисекунды
97,65% <= 4 миллисекунды
99,82% < = 5 миллисекунд
99,94% <= 6 миллисекунд
99,98% < = 7 миллисекунд
99,98% < = 9 миллисекунд
99,98% < = 10 миллисекунд
99,99% <= 11 миллисекунд
100,00% <= 12 миллисекунд
100,00% <= 12 миллисекунд
15872.01 запросов в секунду

Из-за того, что инструменты тестирования, версии программного обеспечения, параметры тестов и так далее приводят к разным результатам, тесты предназначены только для справки; из простых тестов в этой статье видно, что у Garnet значительно меньшая задержка, чем у Redis.

(Конец)




Предыдущий:.NET/C# атрибут отражения, который можно оценить по нулевым типам
Следующий:SSE (1) использует ASP.NET Core в качестве SSE-сервера
 Хозяин| Опубликовано 28.03.2024 18:01:32 |
KeyDB — это полностью открытая база данных на базе Snap, которая является более быстрой альтернативой Redis. Адрес:https://docs.keydb.dev/
 Хозяин| Опубликовано 2025-9-3 09:36:07 |
FASTER: Быстрое одновременное постоянное хранение ключевых значений и логирование на C# и C++.
        
Документация:Вход по гиперссылке виден.
Источник:Вход по гиперссылке виден.
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com