Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 3522|Respuesta: 2

[Fuente] Una comparación sencilla entre Garnet cache y Redis desarrollado con .NET

[Copiar enlace]
Publicado el 28-3-2024 18:00:42 | | | |
Garnet es un nuevo tipo de almacenamiento remoto de caché desarrollado por Microsoft Research que ofrece varios beneficios únicos:

  • Garnet toma como punto de partida el popular protocolo de línea RESP, lo que permite usar Garnet desde clientes Redis sin modificar disponibles en la mayoría de los lenguajes de programación actuales, como StackExchange.Redis en C#.
  • Garnet ofrece un mejor rendimiento y escalabilidad con muchas conexiones de clientes y pequeños lotes en comparación con almacenamiento en caché de código abierto comparable, ahorrando costes para aplicaciones y servicios grandes.
  • Garnet demostró una latencia de cliente extremadamente baja (normalmente menos de 300 microsegundos al 99,9%) utilizando máquinas virtuales Commodity Cloud (Azure) con TCP acelerado habilitado, lo cual es fundamental para escenarios reales.
  • Garnet está basado en la última tecnología .NET y es multiplataforma, extensible y moderno. Está diseñado para ser fácil de desarrollar y evolucionar sin sacrificar el rendimiento en situaciones comunes. Aprovechamos el rico ecosistema de bibliotecas de .NET para ampliar la API y ofrecer oportunidades de optimización abierta. Gracias a nuestro uso cuidadoso de .NET, Garnet logra un rendimiento de última generación tanto en Linux como en Windows.


Dirección de código abierto:El inicio de sesión del hipervínculo es visible.
Documentación:El inicio de sesión del hipervínculo es visible.

Garnet tiene los siguientes beneficios clave:

  • El rendimiento del servidor (operaciones por segundo) aumenta varios órdenes de magnitud para lotes pequeños y muchas sesiones cliente en comparación con almacenamiento de caché de código abierto.
  • En máquinas cloud comerciales (Azure) con TCP acelerado activado en Windows y Linux, la latencia por operación es extremadamente baja (normalmente menos de 300 microsegundos al 99,9%).
  • A medida que aumenta el número de clientes, se logra una mejor escalabilidad con o sin agrupación de clientes.
  • Capacidad para utilizar todos los recursos de CPU/memoria de un ordenador servidor a través de una única instancia de servidor de memoria compartida (sin necesidad de clústeres intra-nodo).
  • Soporte para conjuntos de datos de mayor tamaño que la memoria que se desbordan a dispositivos de almacenamiento locales y en la nube.
  • Funciones de base de datos como puntos de control rápidos y recuperación y publicación/suscripción.
  • Soporte para particionamiento hash multi-nodo fragmentado (modo "cluster" de Rederis), migración de estados y replicación.
  • Bien probado con una suite de pruebas completa (miles de pruebas unitarias contra Garnet y su nivel de almacenamiento, Tsavorite).
  • Base de código C# que es fácil de evolucionar y ampliar.


Garnet no soporta todos los comandos de Redis, específicamente los comandos soportados para ver:El inicio de sesión del hipervínculo es visible.
El proyecto Garnet incluye una herramienta de benchmark para ejecutar benchmarks RESP usando diferentes clientes, distintas cargas de trabajo y distintas políticas para medir el rendimiento, el rendimiento y la latencia. Dirección:El inicio de sesión del hipervínculo es visible.
Protocolo RESP:El inicio de sesión del hipervínculo es visible.

Este artículo utiliza las herramientas de benchmarking integradas de Redis para pruebas sencillas, y el entorno de prueba es el siguiente:

Prueba de rendimiento Redis Benchmark
https://www.itsvse.com/thread-9645-1-1.html

cachéVersión
RedisRedis 3.0.504 (00000000/0) 64 bits
GranateGarnet 1.0.2 64 bits; Modo independiente


Referencias Redis

Primero, lanza la caché Redis usando la línea de comandos con el siguiente comando:


El comando de prueba es el siguiente:


Los resultados son los siguientes:



====== CONJUNTO ======
  500000 solicitudes completadas en 24,38 segundos
  100 clientes paralelos
  Carga útil de 3 bytes
  Mantener con vida: 1

0,03% <= 1 milisegundo
0,25% <= 2 milisegundos
2,65% <= 3 milisegundos
16,49% <= 4 milisegundos
59,95% <= 5 milisegundos
99,09% <= 6 milisegundos
99,76% <= 7 milisegundos
99,86% <= 8 milisegundos
99,93% <= 9 milisegundos
99,98% <= 10 milisegundos
99,99% <= 11 milisegundos
100,00% <= 12 milisegundos
20512,82 solicitudes por segundo

====== CONSEGUIR ======
  500.000 solicitudes completadas en 27,41 segundos
  100 clientes paralelos
  Carga útil de 3 bytes
  Mantener con vida: 1

0,03% <= 1 milisegundo
0,19% <= 2 milisegundos
6,44% <= 3 milisegundos
25,82% <= 4 milisegundos
45,65% <= 5 milisegundos
98,79% <= 6 milisegundos
99,98% <= 7 milisegundos
99,98% <= 8 milisegundos
99,98% <= 9 milisegundos
100,00% <= 9 milisegundos
18238,86 solicitudes por segundo

Referencias Garnet

Crea un nuevo proyecto de consola .NET 8 y primero haz referencia al paquete Microsoft.Garnet con el siguiente comando:


El código es el siguiente:


El comando de inicio es el siguiente:


Usando el mismo comando de benchmark, el resultado es el siguiente:



====== CONJUNTO ======
  500.000 solicitudes completadas en 11,51 segundos
  100 clientes paralelos
  Carga útil de 3 bytes
  Mantener con vida: 1

75,51% <= 1 milisegundo
88,24% <= 2 milisegundos
92,04% <= 3 milisegundos
99,46% <= 4 milisegundos
99,98% <= 5 milisegundos
99,99% <= 6 milisegundos
100,00% <= 12 milisegundos
100,00% <= 12 milisegundos
43448,04 solicitudes por segundo

====== CONSEGUIR ======
  500000 solicitudes completadas en 31,50 segundos
  100 clientes paralelos
  Carga útil de 3 bytes
  Mantener con vida: 1

0,01% <= 1 milisegundo
0,90% <= 2 milisegundos
27,25% <= 3 milisegundos
97,65% <= 4 milisegundos
99,82% <= 5 milisegundos
99,94% <= 6 milisegundos
99,98% <= 7 milisegundos
99,98% <= 9 milisegundos
99,98% <= 10 milisegundos
99,99% <= 11 milisegundos
100,00% <= 12 milisegundos
100,00% <= 12 milisegundos
15872,01 solicitudes por segundo

Debido a que las herramientas de prueba, versiones de software, parámetros de prueba, etc., dan lugar a resultados diferentes; las pruebas son solo de referencia; a través de las pruebas sencillas de este artículo, se puede ver que Garnet tiene una latencia significativamente menor que Redis.

(Fin)




Anterior:.NET/C# que puede juzgarse por tipos nulos
Próximo:SSE (1) utiliza ASP.NET Core como servidor SSE
 Propietario| Publicado el 28-3-2024 18:01:32 |
KeyDB es una base de datos completamente de código abierto impulsada por Snap y es una alternativa más rápida a Redis. Dirección:https://docs.keydb.dev/
 Propietario| Publicado el 03-09-2025 09:36:07 |
MÁS RÁPIDO: Almacenamiento y registro de clave-valor persistente y concurrente rápido en C# y C++.
        
Documentación:El inicio de sesión del hipervínculo es visible.
Fuente:El inicio de sesión del hipervínculo es visible.
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com