この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 3522|答える: 2

[出典] .NETで開発されたGarnetキャッシュとRedisの簡単な比較

[リンクをコピー]
2024年3月28日 18:00:42 に投稿 | | | |
ガーネットはマイクロソフトリサーチが開発した新しいタイプのリモートキャッシュストレージで、いくつかの独自の利点を提供します。

  • Garnetは人気のRESPラインプロトコルを出発点としており、これによりStackExchange.Redis(C#)など、今日ほとんどのプログラミング言語で利用可能な未修正のRedisクライアントからGarnetを使用可能にしています。
  • Garnetは、多数のクライアント接続や小規模バッチで、同等のオープンソースキャッシュストレージと比べて、より良いスループットとスケーラビリティを提供し、大規模なアプリケーションやサービスのコスト削減につながります。
  • Garnetは、アクセラレーションTCPが有効なCommodity Cloud(Azure)VMを用いて、クライアントレイテンシが非常に低い(通常300マイクロ秒未満、99.9%)を示し、これは実際のシナリオで極めて重要です。
  • Garnetは最新の.NET技術を基盤としており、クロスプラットフォーム、拡張性、そしてモダンです。 一般的な状況でパフォーマンスを犠牲にすることなく、簡単に開発・進化できるよう設計されています。 私たちは.NETの豊富なライブラリエコシステムを活用し、APIを拡張し、オープンな最適化の機会を提供しています。 .NETの慎重な活用のおかげで、GarnetはLinuxとWindowsの両方で最先端の性能を実現しています。


オープンソースアドレス:ハイパーリンクのログインが見えます。
ドキュメンテーション:ハイパーリンクのログインが見えます。

ガーネットには以下の主要な利点があります:

  • サーバーのスループット(秒あたりの処理数)は、同等のオープンソースキャッシュストレージと比べて、小規模なバッチや多くのクライアントセッションで桁違いに向上します。
  • WindowsやLinuxで加速TCPが有効な汎用クラウド(Azure)マシンでは、1回の操作遅延は非常に低く(通常99.9%で300マイクロ秒未満です)。
  • クライアント数が増えるにつれて、クライアントバッチングの有無にかかわらず、より良いスケーラビリティが実現されます。
  • サーバーコンピュータのすべてのCPU/メモリリソースを単一の共有メモリサーバーインスタンスを通じて使用できること(ノード内クラスタリング不要)。
  • オンプレミスやクラウドストレージデバイスにオーバーフローするメモリ以上のデータセットのサポート。
  • クイックチェックポイントやリカバリー、公開・購読などのデータベース機能も備えています。
  • マルチノードシャーデハッシュパーティショニング(Redisの「クラスタ」モード)、状態移行、レプリケーションのサポート。
  • 包括的なテストスイート(Garnetおよびそのストレージ層のTsavoriteに対する数千件のユニットテスト)でよくテストされています。
  • 進化や拡張が容易なC#コードベース。


GarnetはすべてのRedisコマンド、特に以下の表示コマンドをサポートしているわけではありません:ハイパーリンクのログインが見えます。
Garnetプロジェクトには、異なるクライアント、異なるワークロード、異なるポリシーでRESPベンチマークを実行するベンチマークツールが含まれており、スループット、パフォーマンス、レイテンシを測定します。 住所:ハイパーリンクのログインが見えます。
RESPプロトコル:ハイパーリンクのログインが見えます。

この記事では、Redisの組み込みベンチマークツールを使って簡単なテストを行い、テスト環境は以下の通りです。

Redis ベンチマーク性能テスト
https://www.itsvse.com/thread-9645-1-1.html

キャッシュバージョン
レディスRedis 3.0.504 (00000000/0) 64ビット
ガーネットガーネット 1.0.2 64ビット; スタンドアロンモード


Redis ベンチマーク

まず、以下のコマンドラインでRedisキャッシュを起動します。


テストコマンドは以下の通りです:


結果は以下の通りです。



====== セット======
  50万件のリクエストが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件のリクエスト/秒

====== ======
  50万件のリクエストを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件/秒リクエスト

ガーネットベンチマーク

新しい.NET 8コンソールプロジェクトを作成し、まず以下のコマンドでMicrosoft.Garnetパッケージを参照します:


コードは以下の通りです:


起動コマンドは以下の通りです:


同じベンチマークコマンドを用いると、結果は以下の通りです。



====== セット======
  50万件のリクエストを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ミリ秒
1秒あたり43448.04件のリクエスト

====== ======
  50万件のリクエストが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ミリ秒
1秒あたり15872.01件のリクエスト

テストツール、ソフトウェアのバージョン、パラメータなどによって結果は異なりますが、これらのテストはあくまで参考にあたります。この記事の簡単なテストから、GarnetはRedisよりもレイテンシが大幅に低いことがわかります。

(終わり)




先の:.NET/C# リフレクション属性は、null型で判断できます
次に:SSE(1)は ASP.NET コアをSSEサーバーとして使用しています
 地主| 2024年3月28日 18:01:32 に投稿 |
KeyDBはSnapで駆動される完全オープンソースのデータベースであり、Redisの高速な代替手段です。 住所:https://docs.keydb.dev/
 地主| 2025年9月3日 09:36:07に投稿 |
速く:C#およびC++での高速同時持続キー・値の保存とログ記録。
        
ドキュメンテーション:ハイパーリンクのログインが見えます。
源:ハイパーリンクのログインが見えます。
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com