À propos du projet

Dragonfly est un magasin de données en mémoire open-source développé par DragonflyDB. Le projet le positionne comme un remplacement moderne de Redis et Memcached, ciblant les charges de travail des applications modernes. Selon le README, il est entièrement compatible avec les API Redis et Memcached et ne nécessite aucun changement de code pour être adopté. Il implémente environ 185 commandes Redis, décrites comme comparables à l’API Redis 5.0, et 13 commandes Memcached. Il prend en charge les arguments Redis courants tels que port, bind, requirepass, maxmemory, dir et dbfilename, ainsi que les options spécifiques à Dragonfly, notamment memcached_port, cache_mode, dbnum, snapshot_cron, admin_port et un mode cluster émulé. L’architecture utilise un modèle sans partage : l’espace des clés est partitionné entre les threads, chacun gérant son propre shard de dictionnaire. Pour les opérations atomiques sur plusieurs clés, le README indique que Dragonfly utilise des idées issues du gestionnaire de verrouillage VLL pour éviter les mutex et les spinlocks. Sa table de hachage de base est inspirée du papier Dash et a été adaptée pour préserver les comportements du dictionnaire Redis, tels que le hachage incrémental pendant la croissance et le balayage sans état sous les changements, tout en prenant en charge l’expiration efficace des TTL, un algorithme d’éviction de cache et des snapshots sans fork. Le mode cache est activé avec --cache_mode=true et évince les éléments proches de la limite maxmemory. Sur le plan opérationnel, Dragonfly peut exposer une console HTTP sur son port TCP principal et fournit des métriques compatibles Prometheus à l’adresse :6379/metrics, avec un tableau de bord Grafana inclus. Les snapshots peuvent être planifiés via snapshot_cron. Le README documente également les comparaisons de ressources et de performances : il rapporte jusqu’à 25 fois plus de débit qu’un Redis à processus unique, 3,8 M QPS sur c6gn.16xlarge, 10 M SET et 15 M GET QPS en mode pipeline, et des snapshots économes en mémoire. Ces chiffres sont des benchmarks du projet et n’ont pas été vérifiés de manière indépendante ici. Le projet propose des binaires Docker et CLI, de la documentation, une communauté Discord et des instructions de compilation de la source.