Redis - 听说 Dragonfly 宣称比我快 25 倍
- 作者
似乎总有几个项目声称他们已经建立了"世界上最快的键/值存储",有时使用的短语甚至更加离谱,比如以下项目:
- Redis: https://github.com/redis/redis
- KeyDB: https://github.com/snapchat/keydb
- Dragonfly: https://github.com/dragonflydb/dragonfly
- Skytable: https://github.com/skytable/skytable
而根据国外的基准测试结果(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,这些项目背后都有公司撑腰。
分享内容