news 2026/9/3 22:20:26

实战:DragonflyDB 用线程分片跑出百万 QPS 的亚毫秒内存数据库

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
实战:DragonflyDB 用线程分片跑出百万 QPS 的亚毫秒内存数据库

实战:DragonflyDB 用线程分片跑出百万 QPS 的亚毫秒内存数据库

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

Redis 单线程在 16 核服务器上跑不满核,高并发下延迟飙升、吞吐见顶。DragonflyDB 用 shared-nothing 线程分片把内存数据库的吞吐拉到核数线性扩展,响应压到亚毫秒。

它到底怎么跑起来的?

传统内存数据库靠单线程模型保证原子性,代价是整台机器的核都挤在一条指令流上,核越多越浪费。DragonflyDB 因为多线程引入锁会成为新瓶颈,所以改用 shared-nothing 架构:把键空间按哈希切成若干 shard,每个 shard 绑死在一根专用线程(proactor)上,核与核之间互不共享数据。

单键操作天然落在单线程内,不碰任何锁就保证了原子性;多键写操作靠一个无锁的多版本锁管理器(源自 VLL 论文)在几个 shard 间协调,同样不碰互斥锁。客户端连上来后,每条命令走 hiredis 的 RESP 解析器增量喂入(见 resp_parser.h),解析出的命令直接路由到对应 shard 的线程执行。

三个环节串成一条因果链:因为核间不共享数据,所以没有缓存行乒乓;因为执行路径上没有锁,所以延迟抖动被压在微秒级;最终导致整库吞吐随核数近似线性扩展——这正是单线程 Redis 到不了的地方。

DragonflyDB 三个工程上值得看的设计

Dash 哈希表。核心存储没沿用 Redis 的 dict,而是自研 DASH(Dynamic And Scalable Hashing),把大哈希表拆成一组小 segment,用无冲突探测替代传统拉链法。这么做是因为拉链法的指针跳转对 CPU 缓存不友好,而 segment 的局部性更好。效果是 CPU 与内存占用都更低,还顺手支撑了零内存开销的淘汰算法和高效 TTL 过期,见 dash.h。

内存分配与无 fork 快照。全局内存走 mimalloc,项目给它打了补丁,让分配器上报每个内存页的使用率与状态标志。动分配器的原因是:内存库的碎片率和页利用率直接决定真实内存开销。配合增量式的 fork-less 快照算法,备份不再依赖 fork 整块内存,避开了 COW 造成的瞬时内存翻倍,见 1_add_stat_type.patch。

线程-per-core 模型。每根 proactor 线程独占一个 shard,事件驱动,无跨线程共享可变状态。不选线程池加锁,是因为锁竞争和上下文切换在百万 QPS 下就是延迟的敌人。单键与多键原子操作因此共用一套无锁执行路径。

五分钟跑起来

git clone https://gitcode.com/GitHub_Trending/dr/dragonfly cd dragonfly make ./build-release/dragonfly redis-cli -p 6379 set mykey "hello dragonfly" redis-cli -p 6379 get mykey

DragonflyDB 和 Redis 差在哪?

维度RedisDragonflyDB
线程模型单线程命令处理每核一线程 shared-nothing 分片
多核扩展核多也压不满吞吐随核数近似线性
原子性实现靠单线程规避锁无锁(VLL 多版本锁管理器)
快照fork + COW,内存翻倍fork-less 快照,mimalloc 页级统计
协议RESPRESP(hiredis 解析)+ Memcached

适合拿单台多核机扛高并发缓存或会话存储、想从 Redis 平滑迁移的团队;如果你的业务强依赖 Redis 独有数据结构、或需要严格的持久化 ACID 语义,把它当缓存层而非主存储,落地前先评估持久化需求。

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 22:19:34

兵不厌诈双人拿画:名钻赌场豪劫维修工入场全流程攻略

在《GTA Online》的名钻赌场豪劫里,真正拉开玩家差距的不是枪法,而是对入场方案、巡逻路线和任务流程的理解。很多人第一次打赌场豪劫时,喜欢直接选最暴力的“激烈冲突”或“声东击西”,结果不是被保安打成筛子,就是撤…

作者头像 李华
网站建设 2026/9/3 22:17:54

用拼图基准测试VLM空间推理:从评测设计到工程实践的完整指南

多模态大模型(VLM)看起来已经能识图、问答、聊天,但一旦放进需要空间关系的任务,比如判断缺失拼图块位置、识别旋转后的碎片,很多模型的表现会立刻变得非常不可靠。与其在真实业务中被这类问题坑一次,不如提…

作者头像 李华
网站建设 2026/9/3 22:15:48

论文发表前图片检查清单:书霸AI帮你把关,官网www.shubaai.com

投稿前,你有没有认真检查过论文里的每一张图?很多同学写论文时对图很上心,可一到投稿,就只盯着文字改,图反而被忽略了。直到被编辑退回,才发现图有各种问题。今天就把“论文发表前的图片检查清单”整理给你…

作者头像 李华
网站建设 2026/9/3 22:14:29

5款免费高效的macOS效率工具:重新定义你的工作流

5款免费高效的macOS效率工具:重新定义你的工作流 在快节奏的数字时代,macOS用户需要高效工具来提升工作效率。本文精选了5款开源免费的macOS效率工具,涵盖窗口管理、剪贴板增强、自动化操作等核心场景,帮助你重新定义工作流&…

作者头像 李华
网站建设 2026/9/3 22:14:13

告别凑字数内耗✅OKBIYE核心AI写作引擎|本科论文初稿直接封神

谁懂写论文最大的绝望😭!对着空白文档发呆半天,完全无从下笔! 很多同学卡论文根本不是不想写,是没有写作思路、不会搭建框架、内容空洞凑不出字数、写出来全是口水话。普通通用AI写出来的内容,要么逻辑松散…

作者头像 李华
网站建设 2026/9/3 22:11:28

暗区突围5级弹打t枪械对比:穿透、后座与TTK全解析

你带了满改 H416 进电视台,子弹也换成了玩家口中的“5级弹”,结果交火时对面五甲上火花四溅,你被反手一枪放倒。看战报,伤害打了两百多,击穿次数却寥寥无几。这种时候,很多玩家第一反应是“是不是子弹不行”…

作者头像 李华