Logo

Redis - 听说 Dragonfly 宣称比我快 25 倍

作者

似乎总有几个项目声称他们已经建立了"世界上最快的键/值存储",有时使用的短语甚至更加离谱,比如以下项目:

而根据国外的基准测试结果(30 个线程,每个线程 1 个客户端使用 GET/SET),很明显有些项目夸大其词了,我们来看一下实际的性能对比:

1. Redis:112,100 / 99,892
2. KeyDB:288,931 / 282,997
3. Dragonfly:408,322 / 392,446
4. Skytable:619,992 / 676,091

性能对比

Redis

我愿意将 Redis 将称为原始键/值存储(在 memcached 之后),因为它是最古老且使用最广泛的内存数据库。作为 Redis 的长期追随者,我确实知道它是单线程的(并且从 6.0 开始使用 io-threads),因此与上面列出的其他多线程存储相比,它的吞吐量至少在某种程度上肯定要小。 但 Redis 最大的优点是:它是这里所有系统中功能最完整的,也是最古老的。

KeyDB

KeyDB 宣称是Redis 的多线程分支,速度提高了 5 倍。我真的很喜欢这个想法,因为我之前在同一个节点上运行了多个 Redis 实例,并像“单节点集群”一样代理它们,这样做的原因就是为了提高 CPU 利用率。单个 KeyDB 实例可以取代不需要的代理功能,因此很多人放弃了 Redis 来使用 KeyDB。

Dragonfly

Dragonfly 声称它比 Redis 快 25 倍(很多开发者表示无法重现),并且官网表示 Dragonfly 可能是宇宙中最快的内存存储。它还支持 Redis/Memcache 的命令,但我觉得它很有趣主要是因为性能。此外,大家都想知道为什么它更快,它的官网清楚地概述了底层架构。

Dragonfly 和 Redis 功能对比

DragonflyRedis
适配 Redis API
快照持久化
Lua5.4.45.1
每个实例提供的 QPS3M200K
Async core
LRFU eviction
适配 Memcached API
支持云原生 Open Telemetry 协议

Skytable

在寻找用 Rust 编写的项目时发现它,它同样声称它非常快。 Skytable 的“实验基准”声称它比 Redis 快 10 倍左右,比 KeyDB 快 2-3 倍。我没有听说过 Skytable,而且它似乎没有被广泛的使用。

小结

Redis 不需要过多介绍,可以说在生产系统上使用非常稳定。 KeyDB 似乎"足够稳定”,而且 Snapchat 等企业已经使用它。暂时没有发现 Dragonfly vs Skytable 的基准测试。当然, Redis、KeyDB 和 Skytable 最好的点可能是它们不会对它们运行的系统做出任何离谱的假设。

为什么这么说,主要是因为 Dragonfly 期望运行的服务器拥有最新的硬件和最新的内核。但实际基本不太可能,因为软硬件替换都会有一个过程。而且如果其他三家项目开始采用最新功能,它们也可能会比现在快得多。最后,Dragonfly 和 Skytable 都还处于开发初期,因此将它们的功能与已经存在更长时间的 Redis 和 KeyDB 进行比较可能是不公平的。此外,除了 Skytable,这些项目背后都有公司撑腰。

分享内容