Dragonfly: Modern in-memory data store
In-memory data store with Redis/Memcached API compatibility and multi-threaded C++.
Learn more about Dragonfly
Dragonfly is an in-memory key-value data store that serves as a drop-in replacement for Redis and Memcached. The system is implemented in C++ with a multi-threaded architecture using fiber-based concurrency, allowing it to scale vertically across multiple CPU cores. It maintains full API compatibility with Redis and Memcached protocols, requiring no application code changes for adoption. The database supports features like vector search, message brokering, and various data persistence options including snapshotting.
Multi-threaded Architecture
Uses fiber-based concurrency and multi-threading to utilize multiple CPU cores, unlike Redis's single-threaded design. This allows throughput to scale with instance size rather than hitting CPU bottlenecks.
Memory Efficiency
Implements a custom data structure called Dashtable that reduces memory overhead. Shows 30% better memory efficiency compared to Redis in idle state and minimal memory increase during snapshot operations.
API Compatibility
Maintains full compatibility with Redis and Memcached APIs and protocols. Applications can migrate without code changes while gaining access to additional features like vector search capabilities.
# Basic benchmark command for testing Dragonfly performance
memtier_benchmark --ratio 1:0 -t 4 -c 20 --test-time 100 -d 256 --distinct-client-seed
# Advanced benchmark with pipeline mode for higher throughput
memtier_benchmark --ratio 1:0 -t <threads> -c 30 -n 200000 --distinct-client-seed -d 256 --pipeline=30 --expiry-range=500
# GET operations benchmark
memtier_benchmark --ratio 0:1 -t 6 -c 20 --test-time 100 -d 256 --distinct-client-seed1. Support Global Vector index #6103
- –actions: Add a volume mount to container by @abhijat in
- –chore: remove RecvProvided from dragonfly connection by @kostasrim in
- –fix(rdb_load): Store streamed items per rdb lodaer by @dranikpg in
- –fix(search): Result set cutoff by @dranikpg in
- –fix: remove duplicate expired/evicted metric header by @romange in
v1.35.1
- –fix(tiering): improvements around tiering stability #6040 #6086 #6067
- –fix(server): replica rejects replicating from itself #6097
It is strongly advised to update to this version if you use 1.34.0 / 1.34.1 due to regression when Dragonfly runs in cache mode
- –fix(evicition): Don't accumulate deleted bytes if there is no RSS evi… by @BorysTheDev in
Top in Backend & APIs
Related Repositories
Discover similar tools and frameworks used by developers
laravel
Full-stack PHP framework with ORM and dependency injection.
evolution-api
Node.js REST API for programmatic WhatsApp control.
PHPMailer
SMTP client and MIME message builder for PHP.
Spring Framework
Comprehensive framework for building enterprise Java applications with infrastructure support.
rails
Convention-driven Ruby framework for full-stack web applications.