用 Rust 编写的多线程内存键值数据库,兼容 Redis 与 Valkey 协议,内置全文与向量搜索。
- Star
- 31,798
- Fork
- 1,283
- 未关闭 Issue
- 276
- 最近提交
- 9小时前
这是什么?
Dragonfly 是一个内存数据存储,实现了 Redis 与 Memcached 协议,现有客户端和应用无需修改代码即可接入。项目使用 C++ 编写,采用 shared-nothing 架构,将键空间按线程切分,让单个实例能够利用多个 CPU 核心,而不像 Redis 进程那样通常只依赖单线程。
项目适用于缓存和键值类负载,支持通过参数开启自适应缓存淘汰模式、基于 TTL 的过期机制,以及用于备份的快照功能。快照可通过 cron 表达式定时执行。Dragonfly 还提供兼容 Prometheus 的指标接口,并在主端口上内置 HTTP 控制台,暴露在不可信网络中的部署可以将其关闭。
项目公布了在 AWS 实例上与 Redis、Memcached 的基准测试对比,吞吐与延迟数据随实例规格和负载而变化。这些数据来自项目自身的测试,建议结合自己的业务负载进行验证。
核心功能
- 01兼容 Redis 与 Memcached 协议,现有客户端无需改代码。
- 02多线程设计,将键分片到各线程以利用多个 CPU 核心。
- 03自适应缓存淘汰模式,在接近内存上限时淘汰数据。
- 04支持基于 cron 表达式的定时快照,并提供兼容 Prometheus 的指标。
- 05主端口内置 HTTP 控制台,可按需关闭。
适用场景
- 替换因单线程 CPU 瓶颈而遇到性能上限的 Redis 部署。
- 作为数据库前的缓存层,沿用现有 Redis 或 Memcached 客户端。
- 在核心数较多的云服务器上运行键值存储。
- 结合 Prometheus 与 Grafana 监控内存存储的运行状态。
快速上手
- 1
按照文档中的快速入门指南获取 Dragonfly 二进制文件
- 2
使用示例启动参数运行 Dragonfly
./dragonfly-x86_64 --logtostderr --requirepass=youshallnotpass --cache_mode=true -dbnum 1 --bind localhost --port 6379 --maxmemory=12gb --keys_output_limit=12288 --dbfilename dump
使用前须知
- 元数据中的许可证显示为 NOASSERTION,使用前需直接在仓库中核实许可证条款。
- 大于 2^28 毫秒的过期时间会被四舍五入到最近的秒,可能不适合所有使用场景。
标签
常见问题
- dragonfly 是什么?
- 与 Redis 和 Memcached API 兼容的内存数据存储,可直接替换两者使用。 Dragonfly 是一个内存数据存储,实现了 Redis 与 Memcached 协议,现有客户端和应用无需修改代码即可接入。项目使用 C++ 编写,采用 shared-nothing 架构,将键空间按线程切分,让单个实例能够利用多个 CPU 核心,而不像 Redis 进程那样通常只依赖单线程。
- dragonfly 可以免费使用吗?用的什么许可证?
- dragonfly 以 Other 许可证开源。用于商业产品前,请先确认许可证条款。
- dragonfly 还在维护吗?
- 活跃维护中。dragonfly 最近一次提交是在 2026年10月19日。
- dragonfly 适合用来做什么?
- 替换因单线程 CPU 瓶颈而遇到性能上限的 Redis 部署。 作为数据库前的缓存层,沿用现有 Redis 或 Memcached 客户端。 在核心数较多的云服务器上运行键值存储。 结合 Prometheus 与 Grafana 监控内存存储的运行状态。
- dragonfly 怎么安装和运行?
- 按照文档中的快速入门指南获取 Dragonfly 二进制文件 使用示例启动参数运行 Dragonfly: ./dragonfly-x86_64 --logtostderr --requirepass=youshallnotpass --cache_mode=true -dbnum 1 --bind localhost --port 6379 --maxmemory=12gb --keys_output_limit=12288 --dbfilename dump
- 在哪里获取 dragonfly?
- 源代码和安装说明在 GitHub 上:https://github.com/dragonflydb/dragonfly
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
Apache IoTDB 是面向物联网场景的时序数据库,支持数据采集、存储与分析,提供类 SQL 查询和 JDBC 接口。
原生数据库 IDE,支持 macOS、Windows 和 Linux,统一连接 PostgreSQL、MySQL、SQLite、Redis 等多种数据库。
基于 Postgres 的开发平台,提供托管数据库、认证、自动生成的 API、文件存储等功能,可作为 Firebase 的开源替代。
跨平台 SQL 编辑器与数据库管理工具,支持 Linux、macOS 和 Windows,可连接 MySQL、PostgreSQL、SQLite 等多种数据库。
Apache Druid 是一个高性能实时分析数据库,支持快速查询与数据摄入,可作为数据仓库的开源替代方案。