Dragonfly 入门实践:10 分钟跑通一个 Redis/Memcached 替代品
2026/9/3 9:14:14 网站建设 项目流程

Dragonfly 入门实践:10 分钟跑通一个 Redis/Memcached 替代品

【免费下载链接】dragonflyA modern replacement for Redis and Memcached项目地址: https://gitcode.com/GitHub_Trending/dr/dragonfly

Dragonfly(仓库中又称 DragonflyDB)是一个用 C++ 编写的内存数据存储引擎,同时兼容 Redis 与 Memcached 协议,应用零改造即可接入。它面向多核设计,吞吐可随核心数线性扩展,适合需要替代 Redis/Memcached、又希望榨干多核 CPU 的开发者。

拿到代码并构建出二进制

Dragonfly 没有发行版软件包,官方推荐两条路:直接跑官方镜像,或从源码编译。新手建议先用镜像跑通,再回头编译。

方式一:Docker 镜像(最快)

仓库的 快速上手文档 给出的启动命令如下:

docker run --network=host --ulimit memlock=-1 docker.dragonflydb.io/dragonflydb/dragonfly

--ulimit memlock=-1用于解除内存锁定限制,Dragonfly 依赖大页内存,缺了它初始化可能报错。

方式二:源码编译

git clone https://gitcode.com/GitHub_Trending/dr/dragonfly cd dragonfly make release

构建完成后,可执行文件在build-release/目录下,主程序是dragonfly,附带一个压测工具dfly_bench。构建细节(含依赖安装)可参考仓库内docs/build-from-source.md,以最新文档为准。

三步验证服务跑起来了

假设已用方式二编译出二进制,最小启动命令是:

./build-release/dragonfly

不加任何参数时,它监听6379端口,同时应答 Redis 协议和 HTTP 请求(管理接口)。三个最常用的参数:

  • --port:数据端口,默认6379
  • --admin_port:管理端口,HTTP API、监控指标走这里;
  • --bind:绑定地址,容器内常用0.0.0.0

启动后另开一个终端,用任意 Redis 客户端验证:

redis-cli -p 6379 set hello world redis-cli -p 6379 get hello

返回world即说明服务正常。也可以用浏览器访问http://localhost:6379,Dragonfly 原生提供 HTTP 接口,这是它和 Redis 的一个区别。

常用配置项对照

Dragonfly 的配置全部是命令行参数,没有 TOML/INI 配置文件。两种等效写法:

  • 命令行:./dragonfly --maxmemory=100MB
  • 环境变量:DFLY_maxmemory=100MB ./dragonfly(下划线自动映射为参数名)

服务运行时还能通过redis-cli执行CONFIG GET / CONFIG SET动态调整部分参数,参数注册逻辑见 config_registry.h。

新手最常用的 6 个配置项:

参数默认值说明
--port6379数据服务端口
--memcached_port0(关闭)启用 Memcached 协议端口
--bind0.0.0.0监听地址,多网卡按需收窄
--maxmemory0(不限制)内存上限,支持100MB1GB写法
--dbfilenamedump-{timestamp}快照文件名
--dir当前目录快照保存目录
--requirepass访问密码,也支持DFLY_PASSWORD环境变量
--proactor_threadsCPU 核数工作线程数,一般保持默认

一段精简的启动示例:

./build-release/dragonfly \ --port 6379 \ --admin_port 6380 \ --maxmemory 2GB \ --dbfilename dump-$(date +%s).rdb \ --dir /var/lib/dragonfly \ --requirepass 'MyPass'

需要定期落盘时再加--snapshot_cron(cron 表达式),替代了 Redis 里save的写法。

目录结构速览

只保留对新手最有认知价值的几个位置:

  • src/server/:核心所在。命令实现(string、hash、zset 等 family 文件)、事务、快照、集群逻辑都在这里;
  • src/facade/:协议层。RESP 解析器、Redis/Memcached 协议适配、回复构建;
  • src/core/:自研数据结构与内存管理,如 Dash 哈希表、段式分配器;
  • docs/:设计文档,differences.md讲清了它与 Redis 的行为差异,cluster-mode.md讲集群;
  • tests/:Python 集成测试,跑一个测试就是最真实的使用示例。

下一步

遇到具体行为差异,先翻 docs/differences.md;集群用法看 docs/cluster-mode.md,更完整的参数清单以官方最新文档为准。一个新手常踩的坑:Dragonfly 默认没有开启快照,--maxmemory设为 0 表示不限制也不淘汰,生产环境建议同时配好--dir--snapshot_cron,否则重启即丢数据。

【免费下载链接】dragonflyA modern replacement for Redis and Memcached项目地址: https://gitcode.com/GitHub_Trending/dr/dragonfly

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询