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 功能对比

Dragonfly Redis
适配 Redis API
快照持久化
Lua 5.4.4 5.1
每个实例提供的 QPS 3M 200K
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,这些项目背后都有公司撑腰。

本文亦通过 NoOne 的个人博客 发表。

你可能感兴趣的:(后端)