このプロジェクトについて

Dragonflyは、DragonflyDBによって開発されたオープンソースのインメモリデータストアです。このプロジェクトは、RedisおよびMemcachedの現代的な代替として位置付けられ、最新のアプリケーションワークロードを対象としています。READMEによると、RedisおよびMemcachedのAPIと完全に互換性があり、採用するためにコード変更は必要ありません。約185のRedisコマンド(Redis 5.0 APIに匹敵する)と13のMemcachedコマンドを実装しています。ポート、バインド、requirepass、maxmemory、dir、dbfilenameなどの一般的なRedis引数、およびmemcached_port、cache_mode、dbnum、snapshot_cron、admin_port、エミュレートされたクラスタモードなどのDragonfly固有のオプションをサポートしています。 設計は共有なしアーキテクチャを使用しています。キー空間はスレッド間で分割され、各スレッドは独自の辞書シャードを管理します。アトミックな複数キー操作のために、DragonflyはVLLロックマネージャー論文のアイデアを使用して、ミューテックスやスピンロックを回避します。コアハッシュテーブルはDash論文に基づいており、Redis辞書の動作(成長時のインクリメンタルハッシュ、変更下でのステートレススキャン)を維持しながら、効率的なTTL期限切れ、キャッシュ退避アルゴリズム、フォークレススナップショットをサポートするように適応されています。キャッシングモードは--cache_mode=trueで有効になり、maxmemory制限に近いアイテムを退避します。 運用面では、DragonflyはメインのTCPポートでHTTPコンソールを公開し、:6379/metricsでPrometheus互換のメトリクスを提供します(Grafanaダッシュボードが含まれています)。スナップショットはsnapshot_cronでスケジュールできます。READMEには、リソースとパフォーマンスの比較も記載されています。単一プロセスのRedisよりも最大25倍のスループット、c6gn.16xlargeで3.8M QPS、パイプラインモードで10M SETおよび15M GET QPS、メモリ効率の高いスナップショットが報告されています。これらの数値はプロジェクトのベンチマークであり、ここでは独立して検証されていません。プロジェクトは、DockerおよびCLIバイナリ、ドキュメント、Discordコミュニティ、ソースビルド手順を提供しています。