Dragonfly 安装与使用快速上手:10 分钟跑通 Redis 兼容的高性能内存数据存储
【免费下载链接】dragonflyA modern replacement for Redis and Memcached项目地址: https://gitcode.com/GitHub_Trending/dr/dragonfly
如果你的服务还在用 Redis 当缓存、被单线程 QPS 卡住了上限,或者想把 Redis 和 Memcached 两套协议合并成一套,Dragonfly 值得直接试:它是一个与两者协议完全兼容的高性能内存数据存储,应用代码一行不用改。全文路线很简单——先花 2 分钟认识仓库,再把一个实例跑起来,然后调好关键配置,最后绕开新手必踩的 3 个坑。
仓库速览:一张图看懂 Dragonfly 源码结构
上手前先把目录摸熟,之后看到报错和配置项,你知道该去哪个目录翻答案。
dragonfly/ ├── src/ # 全部 C++ 源码的主体 │ ├── core/ # 地基:Dash 哈希表、内存分配器、事务队列 │ ├── server/ # 你写的每条命令在哪落地,都看这里 │ ├── facade/ # 客户端连接与 RESP / Memcached 协议解析 │ └── redis/ # 从 Redis 移植的 C 代码:sds、ziplist、RDB 序列化 ├── contrib/ # 部署物料:docker-compose、K8s Helm chart ├── docs/ # 设计文档 + 快速入门教程 ├── tests/ # Python 集成测试与协议模糊测试种子 ├── Makefile # 一键构建:make release └── README.md # 基准数据、完整参数清单、设计说明日常最常用的是 src/server/ 和 docs/ 两个目录,其余的先知道存在即可。
🚀 把它跑起来:Docker 或源码编译,二选一
认识完仓库,直接开跑。下面两条路任选其一,跑通标准一样。
准备:拿到代码
Docker 路线什么都不用装;想编译源码的话,先执行git clone https://gitcode.com/GitHub_Trending/dr/dragonfly,机器上备好 cmake、ninja、g++ 和 openssl 开发库。
启动命令:只演示 2 个核心参数
# 路线 A:Docker 一条命令起服务(Linux 用 --network=host,macOS/Windows 换成 -p 6379:6379) docker run --network=host --ulimit memlock=-1 docker.dragonflydb.io/dragonflydb/dragonfly # 路线 B:源码编译后直接运行 cd dragonfly && make release ./build-release/dragonfly --logtostderr --port 6379 --bind 127.0.0.1--logtostderr让日志直接打到终端,排错最方便;--port是 Redis 协议端口,机器上已有 Redis 就换个号;--bind 127.0.0.1限定只接本地连接。其余参数(requirepass、memcached_port、cache_mode等)完整以--help为准。
验证方法:redis-cli 三步确认跑通
启动后打开终端,依次输入redis-cli -h 127.0.0.1 -p 6379、set hello world、get hello——你应当依次看到OK和"world",到这就通了。再顺手在浏览器访问http://127.0.0.1:6379/metrics,能看到一页 Prometheus 指标,说明 HTTP 控制台也正常(同一端口会自动识别 Redis 与 HTTP 协议)。官方快速入门可对照 docs/quick-start/README.md。
⚙️ 配置怎么改:端口、绑定地址、内存上限这 3 项
跑通之后,你大概不想每次改行为都重敲命令行。Dragonfly 的配置方式是「一个 flag 一行」,写进文件后用--flagfile加载,例如./build-release/dragonfly --flagfile ./dfly.conf --logtostderr:
# ./dfly.conf 示例:每行一个 flag,--flagfile 加载 port=6380 # 换掉默认 6379,避免和机器上现存的 Redis 抢端口 bind=127.0.0.1 # 只监听本机;要对外服务就改成服务器 IP,并同时设置 requirepass maxmemory=4gb # 显式限内存;留 0 代表自动取系统可用内存的 80%,多服务混跑时风险大上面示例是通用写法,各配置项的确切语义与默认值以官方最新文档为准。其余常用项一句话带过:requirepass设 AUTH 密码,dbfilename与dir控制快照文件名和保存目录,--cache_mode=true打开自适应缓存淘汰,--memcached_port额外开放 Memcached 协议端口。所有参数清单在 README.md 的 Configuration 一节,也可以用环境变量DFLY_参数名(大小写敏感)单独覆盖某一项。
⚠️ 新手避坑:3 个高频问题与排查思路
- 端口被占:启动日志出现
Could not open port 6379,基本可断定是已有 Redis 占着。先跑ss -lntp | grep 6379看占用者,再用--port换个号。 - systemd 下悄悄只绑了本机:以服务方式运行、又没配
--bind和密码时,Dragonfly 只会监听 127.0.0.1,远端连接全部超时。排查思路是看启动日志里实际监听的地址,然后显式给 bind 或密码补上。 - maxmemory=0 不是没限制:它是「我自己帮你定」,默认吃 80% 可用内存。机器上还跑着别的进程时,务必显式设上限,否则可能被挤占资源。
排完这些坑,下一步建议直接读 src/server/ 里任意一条命令的实现,再翻 docs/differences.md 对照它与 Redis 的行为差异——然后动手把--cache_mode=true和--memcached_port 11211加进你的启动参数,亲眼看它和老栈的区别。
【免费下载链接】dragonflyA modern replacement for Redis and Memcached项目地址: https://gitcode.com/GitHub_Trending/dr/dragonfly
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考