仿佛总有几个我的项目宣称他们曾经建设了"世界上最快的键/值存储",有时应用的短语甚至更加离谱,比方以下我的项目:
- Redis: https://github.com/redis/redis
- KeyDB: https://github.com/snapchat/k...
- Dragonfly: https://github.com/dragonflyd...
- Skytable: https://github.com/skytable/s...
而依据国外的基准测试后果(30 个线程,每个线程 1 个客户端应用 GET/SET),很显著有些我的项目言过其实了,咱们来看一下理论的性能比照:
1. Redis:112,100 / 99,8922. KeyDB:288,931 / 282,9973. Dragonfly:408,322 / 392,4464. 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 的集体博客 发表。