Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 3522|Resposta: 2

[Fonte] Uma comparação simples entre o cache Garnet e o Redis desenvolvida com .NET

[Copiar link]
Postado em 28-03-2024 às 18:00:42 | | | |
Garnet é um novo tipo de armazenamento remoto em cache desenvolvido pela Microsoft Research que oferece vários benefícios únicos:

  • O Garnet toma o popular protocolo de linha RESP como ponto de partida, o que torna possível usar Garnet de clientes Redis não modificados disponíveis na maioria das linguagens de programação atualmente, como o StackExchange.Redis em C#.
  • O Garnet oferece melhor throughput e escalabilidade com muitas conexões de clientes e pequenos lotes em comparação com armazenamento em cache open-source comparável, economizando custos para grandes aplicações e serviços.
  • A Garnet demonstrou latência extremamente baixa do cliente (tipicamente menos de 300 microssegundos a 99,9%) usando VMs Commodity Cloud (Azure) com TCP acelerado habilitado, o que é fundamental para cenários do mundo real.
  • O Garnet é baseado na mais recente tecnologia .NET e é multiplataforma, extensível e moderno. Ele foi projetado para ser fácil de desenvolver e evoluir sem sacrificar o desempenho em situações comuns. Aproveitamos o rico ecossistema de bibliotecas do .NET para expandir a API e oferecer oportunidades de otimização aberta. Graças ao nosso uso cuidadoso do .NET, a Garnet alcança desempenho de ponta tanto no Linux quanto no Windows.


Endereço de Código Aberto:O login do hiperlink está visível.
Documentação:O login do hiperlink está visível.

A granada possui os seguintes benefícios principais:

  • A taxa de transferência do servidor (operações por segundo) é aumentada em várias ordens de magnitude para pequenos lotes e muitas sessões de cliente em relação ao armazenamento em cache open source comparável.
  • Em máquinas em nuvem comum (Azure) com TCP acelerado ativado no Windows e Linux, a latência por operação é extremamente baixa (tipicamente menos de 300 microssegundos a 99,9%).
  • À medida que o número de clientes aumenta, uma melhor escalabilidade é alcançada com ou sem lote de clientes.
  • Capacidade de usar todos os recursos de CPU/memória de um computador servidor por meio de uma única instância de servidor de memória compartilhada (sem necessidade de clustering intra-nós).
  • Suporte para conjuntos de dados maiores que a memória que transbordam para dispositivos de armazenamento local e em nuvem.
  • Recursos de banco de dados como checkpoint rápido e recuperação e publicação/assinatura.
  • Suporte para particionamento de hash multi-nós (modo "cluster" Rederis), migração de estado e replicação.
  • Bem testado com uma suíte de testes abrangente (milhares de testes unitários contra o Garnet e seu nível de armazenamento Tsavorite).
  • base de código C# que é fácil de evoluir e expandir.


O Garnet não suporta todos os comandos Rederis, comandos especificamente suportados para visualização:O login do hiperlink está visível.
O projeto Garnet inclui uma ferramenta de Benchmark para executar benchmarks de RESP usando diferentes clientes, diferentes cargas de trabalho e diferentes políticas para medir taxa de transferência, desempenho e latência. Endereço:O login do hiperlink está visível.
Protocolo RESP:O login do hiperlink está visível.

Este artigo utiliza as ferramentas de benchmarking integradas da Redis para testes simples, e o ambiente de teste é o seguinte:

Teste de desempenho Redis Benchmark
https://www.itsvse.com/thread-9645-1-1.html

cacheVersão
RedisRedis 3.0.504 (00000000/0) 64 bits
GranadaGarnet 1.0.2 64 bits; Modo Standalone


Benchmarks Redis

Primeiro, inicie o cache Redis usando a linha de comando com o seguinte comando:


O comando de teste é o seguinte:


Os resultados são os seguintes:



====== CONJUNTO ======
  500000 solicitações concluídas em 24,38 segundos
  100 clientes paralelos
  Carga útil de 3 bytes
  Mantenha Vivo: 1

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

====== SE ======
  500000 solicitações concluídas em 27,41 segundos
  100 clientes paralelos
  Carga útil de 3 bytes
  Mantenha Vivo: 1

0,03% <= 1 milissegundo
0,19% <= 2 milissegundos
6,44% <= 3 milissegundos
25,82% <= 4 milissegundos
45,65% <= 5 milissegundos
98,79% <= 6 milissegundos
99,98% <= 7 milissegundos
99,98% <= 8 milissegundos
99,98% <= 9 milissegundos
100,00% <= 9 milissegundos
18.238,86 pedidos por segundo

Benchmarks Garnet

Crie um novo projeto de console .NET 8 e primeiro faça referência ao pacote Microsoft.Garnet com o seguinte comando:


O código é o seguinte:


O comando de inicialização é o seguinte:


Usando o mesmo comando de benchmark, o resultado é o seguinte:



====== CONJUNTO ======
  500000 solicitações concluídas em 11,51 segundos
  100 clientes paralelos
  Carga útil de 3 bytes
  Mantenha Vivo: 1

75,51% <= 1 milissegundo
88,24% <= 2 milissegundos
92,04% <= 3 milissegundos
99,46% <= 4 milissegundos
99,98% <= 5 milissegundos
99,99% <= 6 milissegundos
100,00% <= 12 milissegundos
100,00% <= 12 milissegundos
43448,04 solicitações por segundo

====== SE ======
  500000 solicitações concluídas em 31,50 segundos
  100 clientes paralelos
  Carga útil de 3 bytes
  Mantenha Vivo: 1

0,01% <= 1 milissegundo
0,90% <= 2 milissegundos
27,25% <= 3 milissegundos
97,65% <= 4 milissegundos
99,82% <= 5 milissegundos
99,94% <= 6 milissegundos
99,98% <= 7 milissegundos
99,98% <= 9 milissegundos
99,98% <= 10 milissegundos
99,99% <= 11 milissegundos
100,00% <= 12 milissegundos
100,00% <= 12 milissegundos
15872,01 solicitações por segundo

Devido às ferramentas de teste, versões de software, parâmetros de teste, etc., todos levam a resultados diferentes; os testes são apenas para referência; através dos testes simples neste artigo, pode-se ver que o Garnet tem latência significativamente menor que o Redis.

(Fim)




Anterior:.NET/C# atributo de reflexão, que pode ser julgado por tipos nulos
Próximo:SSE (1) usa ASP.NET Core como servidor SSE
 Senhorio| Postado em 2024-3-28 18:01:32 |
KeyDB é um banco de dados totalmente open-source alimentado pelo Snap e é uma alternativa mais rápida ao Redis. Endereço:https://docs.keydb.dev/
 Senhorio| Postado em 09-03-2025 09:36:07 |
MAIS RÁPIDO: Armazenamento e registro persistente de chave-valor e concorrentes rápidos em C# e C++.
        
Documentação:O login do hiperlink está visível.
Fonte:O login do hiperlink está visível.
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com