mrkeyoor.com_
Mon 07 Sept 07:13 UTC
Dataevaluationupdated 07 Sept 2026

dragonfly review

Dragonfly is a C++ in-memory data store that accepts Redis and Memcached clients while using multiple CPU cores on one server. It is meant for teams replacing a cache or Redis-compatible store without rewriting application calls, though its compatibility and license both have boundaries.

Verdict

Our Dragonfly test command exited 1 after 10 seconds with 0 tests passed and 3 collection errors, so commit 00693a0 did not clear our source-verification gate. Dragonfly still deserves a production trial for Linux teams constrained by a single Redis process, but our run did not measure its throughput claims. Adopt it only after testing command compatibility, failure handling, and the BSL 1.1 terms against the service you operate.

We ran it

Lab card: what happened when we ran dragonflyScreenshot of dragonfly (www.dragonflydb.io)
Install✓ · 27s36 packages · 37 MB
Build✓ · 11s
Tests✗ · 10s0 passed · 0 failed · 24 skipped · 3 errors of 3 (pytest)
Known vulns0(pip-audit)
Repo1514 files~365,085 lines of source · 18.2 MB · 20 CI workflows · tests dir

Answers from our run

Does dragonfly build from source?

Dependencies installed in 27 seconds (36 packages), and the build succeeded in 11 seconds. We cloned commit 00693a0 into a clean Debian container with 3 CPUs and no project-specific setup.

Do dragonfly's tests pass?

Yes: 0 of 3 passed when we ran the project's own test command (pytest), with 3 collection errors. Some failures need services or credentials a bare container does not have.

Does dragonfly have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use dragonfly?

Managed cache vendors or hosted services that may compete with Dragonfly: the BSL 1.1 grant restricts offering the software as a competing service before its license changes.

What are the alternatives to dragonfly?

Valkey, Redis, Memcached. Our Dragonfly test command exited 1 after 10 seconds with 0 tests passed and 3 collection errors, so commit 00693a0 did not clear our source-verification gate.

Setup3/527-second install and 11-second build; tests failed during collection
Docs4/5Setup and Redis differences are clear; the quick start is thin
Community5/531,439 stars with September 2026 issue, release, and push activity
Maturity4/5v1.40.2 is active, but compatibility and HA limits need testing

Who it’s for

Linux infrastructure teams that have outgrown a single Redis process and want to test vertical scaling.
Applications already using Redis or Memcached clients for caching, sessions, queues, or shared state.
Operators prepared to test command behavior, persistence, replication, and failover against their own workload.
Product teams using Dragonfly as an internal component within the BSL 1.1 additional-use grant.

Who it’s NOT for

Managed cache vendors or hosted services that may compete with Dragonfly: the BSL 1.1 grant restricts offering the software as a competing service before its license changes.
Applications that require exact Redis behavior: the differences document caps strings at 256 MB, limits expirations to 8 years, and uses Lua 5.4.4.
Multi-datacenter systems expecting the database to enforce failure-domain write acknowledgements: open issue 8231 says rack or availability-zone identity and fencing remain outside Dragonfly.
Teams that require a clean generic source-verification run before evaluation: our test command collected 0 passing tests and stopped on 3 setup errors.

Setup reality

Our fresh sandbox installed 36 Python packages in 27 seconds and used 37 MB, then completed the build in 11 seconds. Tests exited 1 after 10 seconds: 0 passed, 0 failed, 24 skipped, and 3 collection/setup errors. The log named missing pymemcache and pytest_asyncio, plus tools/defrag_mem_test.py; pip-audit found 0 known vulnerabilities.

Running the database is separate from that Python tooling. The quick start pulls Dragonfly's published container and exposes port 6379; a source build needs CMake, Ninja, a C++ compiler, and listed system libraries. Production needs deliberate bind, password, memory, persistence, and backup settings.

Native docs target Linux and recommend kernel 5.11 or later. The container example requests unlimited memlock, and the troubleshooting note suggests privileged mode for some initialization failures. HTTP shares port 6379 by default, so operators exposing Redis traffic must disable the console or keep the port inside a trusted network.

About 185 Redis commands do not mean identical Redis behavior

Dragonfly's README says it implements about 185 Redis commands and 13 Memcached commands. Existing clients can connect through the familiar protocols, while the server partitions its keyspace across threads to use more of one machine. That makes Dragonfly interesting when a Redis workload is limited by one process and adding another node creates unwanted operational work. The repository also includes cache mode, snapshotting, replication, metrics, and an HTTP console, so this is a database service rather than a small caching library.

Compatibility has specific edges. Strings stop at 256 MB, expiration ranges stop at 8 years, and millisecond deadlines beyond 2^28 ms are rounded to the nearest second. Dragonfly uses Lua 5.4.4, which differs from Redis scripting behavior in some cases. The README calls cluster mode emulated, and the differences file documents semantic gaps that a client library will not hide. Run the commands your application actually uses, including scripts, ACL rules, expiry, transactions, and recovery paths.

What happened when we ran it

Our sandbox installed 36 Python packages in 27 seconds, consuming 37 MB on disk. The build succeeded in 11 seconds. The test command then exited 1 after 10 seconds: pytest reported 0 passed, 0 failed, 24 skipped, and 3 collection or setup errors. Two errors were ModuleNotFoundError for pymemcache and pytest_asyncio. The supplied log tail also listed tools/defrag_mem_test.py as an error without showing its exception, so we cannot assign that third error a cause.

The checkout at commit 00693a0 contained 1,514 files, about 365,085 lines of source, and used 18.2 MB before installation. We found 20 CI workflow files and a tests directory, but no Dockerfile. Pip-audit reported 0 known vulnerabilities among the installed Python packages. These results cover repository setup in an unprivileged 3-CPU, 8 GB Debian container; they do not measure Dragonfly request throughput, latency, memory efficiency, Redis command coverage, or failover behavior.

Linux 5.11 is recommended, while the container needs memlock access

The native build guide says Dragonfly runs on Linux and recommends kernel 5.11 or later. Building from source requires Ninja, CMake, a C++ compiler, Boost context, OpenSSL, libunwind, and other listed system packages. The documented configure command uses the Helio build script, followed by Ninja. Despite the absence of a Dockerfile in our measured checkout, the quick start pulls a published Dragonfly image, which is the shorter evaluation path for someone who only wants to exercise the server.

The Linux container command uses host networking and requests memlock=-1; macOS and Windows use an explicit port mapping because host networking differs there. A note says privileged mode can resolve some initialization errors, which is a broad permission increase and deserves investigation before use in production. Source builders can toggle AWS, GCP, search, tiered storage, and extension support. Those options make reproducible build flags and an owned artifact more important than copying one generic command.

Port 6379 serves RESP and HTTP unless you turn HTTP off

Dragonfly listens for Redis traffic on port 6379 by default and can recognize HTTP on that same port. Its README says the HTTP console belongs on a safe network and tells operators to disable it when the TCP port is exposed. The default requirepass value is empty. A production configuration therefore needs an intentional bind address, authentication, a memory ceiling, snapshot storage, and a decision about whether the main port should answer HTTP at all.

BSL 1.1 restricts competing hosted use until the change date

The checked-in license is Business Source License 1.1, with a stated change date of November 1, 2030 and Apache 2.0 as the later license. Its additional-use grant permits Dragonfly inside products outside the in-memory data-store category. It restricts making the software available as a competing hosted or managed service. This is source-available software with production-use conditions, so a cloud cache vendor has a different adoption decision from a retailer running an internal session store.

Emulated cluster mode leaves failure domains to outside software

Open issue 8231 says WAIT 1 can be satisfied by a replica in the same rack because Dragonfly does not store availability-zone identity. The report says health checks, promotion, and fencing are delegated to an external cluster manager; during a partition, missing fencing can permit split brain or acknowledged-write loss. That is a direct warning for multi-datacenter designs. A successful Redis client connection says nothing about whether the surrounding operator provides the recovery guarantees the application expects.

Recent reports also show where compatibility testing bites. Issue 8247 says source keys in read-one-write-one commands can be denied unless the user has write permission, contrary to the expected Redis 7 ACL split. Issue 8217 describes about 40 GiB charged to a cgroup but not mapped into the Dragonfly process on a particular v1.39.0 workload. The reporter did not identify a cause, so it is evidence to monitor cgroup memory separately from process RSS, not a general memory benchmark.

v1.40.2 shipped with an upgrade advisory for journal correctness

Release v1.40.2 arrived on September 3, 2026. Its notes advise upgrading because of a journal correctness bug and list fixes across tiered storage, replication, protocol handling, and memory accounting. GitHub recorded the last push on September 6, three days after the release. That short release-to-push gap, together with issue updates on September 6, shows active maintenance rather than a repository coasting on an older tag.

GitHub listed 31,439 stars and 299 combined open issues and pull requests when fetched. Separate searches counted 251 open issues and 48 open pull requests. The queue includes fresh ACL, cluster, and memory reports, while recent closed work includes protocol and remote-allocation fixes. Dragonfly is mature enough to merit a workload trial, but replacing a stateful service should finish with command-level regression tests, restore drills, and a partition test under the operator that will own promotion and fencing.

Alternatives

ProjectWhat it isPick it when
Valkey gh↗A community-run Redis-compatible data store descended from Redis 7.2.4.pick this instead when permissive licensing and close continuity with Redis behavior matter more than Dragonfly's single-node multicore design.
Redis gh↗The original data-structure server behind the protocol Dragonfly implements.pick this instead when exact Redis behavior, modules, and operational familiarity outweigh testing a different server architecture.
MemcachedA focused distributed memory cache with a much smaller feature surface.pick this instead when simple ephemeral key-value caching is enough and Redis data types or persistence are unnecessary.

What people are saying

  1. [velocity-scout] dragonflydb/dragonfly

Sources

  1. Dragonfly repository and README
  2. Dragonfly Redis compatibility differences
  3. Dragonfly Business Source License 1.1
  4. Dragonfly v1.40.2 release notes
  5. Dragonfly issue 8231: failure-domain acknowledgements
  6. Dragonfly issue 8247: ACL source-key permissions
  7. Dragonfly issue 8217: cgroup memory accounting report

More data reviews

TVAPP · timescaledb · dns-blocklists · markitdown · numpy · datasets · the whole board →