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 个配置项:
| 参数 | 默认值 | 说明 |
|---|---|---|
--port | 6379 | 数据服务端口 |
--memcached_port | 0(关闭) | 启用 Memcached 协议端口 |
--bind | 0.0.0.0 | 监听地址,多网卡按需收窄 |
--maxmemory | 0(不限制) | 内存上限,支持100MB、1GB写法 |
--dbfilename | dump-{timestamp} | 快照文件名 |
--dir | 当前目录 | 快照保存目录 |
--requirepass | 空 | 访问密码,也支持DFLY_PASSWORD环境变量 |
--proactor_threads | CPU 核数 | 工作线程数,一般保持默认 |
一段精简的启动示例:
./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),仅供参考