跳转到主要内容

关于 KeyDB

我们相信性能最终能为用户带来自由——KeyDB 速度快,开箱即用,提供高吞吐量,而且您无需成为数据库专家即可使用。KeyDB 在底层做了很多工作,让您能专注于最重要的事情。

如果您要搬新家,您愿意用一辆轿车还是一辆 40 英尺的卡车?一种方法需要仔细考虑带什么以及如何打包,另一种方法则是您不假思索地把所有东西都扔进去就走。

这类似于数据库领域的开发。虽然一些数据库需要分片和运行多个进程来进行基本设置,但 KeyDB 专注于从每个节点中榨取最大性能。这意味着活动部件更少,并且对于大多数工作负载,无需分片或使用哨兵节点进行监控。对于需要分片的超大型工作负载,KeyDB 也可以用更少的节点进行水平扩展,并提供亚毫秒级的延迟。

我们的故事#

KeyDB 项目始于 2019 年,此前我们创建了一个 Redis 的多线程分支。我们对它没有被完全优化以利用多个服务器核心感到困惑。我们不得不在一台机器上运行一个节点集群,才能达到服务器的峰值吞吐量。Redis 的维护者坚信要维持一个简单的代码库,包括一个单线程引擎,并因此拒绝了一些很棒的社区请求。虽然我们热爱 Redis,但我们对代码库应如何演进有着截然不同的理念。我们认为,易用性、高性能和“开箱即用”的方法是创造良好用户体验的最佳方式,即使这会增加代码库的复杂性。由于这种意见分歧,适合 KeyDB 的功能可能不适合 Redis。我们努力确保与上游 Redis 的兼容性,同时在 KeyDB 中构建我们认为用户在应对当今挑战时所必需的功能。

当我们引入 KeyDB 的多线程和 MVCC 架构时,单节点吞吐量实现了数量级的提升。从那时起,我们一直致力于在 KeyDB 的设计中榨取每一分性能,使其成为性能领域的领导者。我们的架构使我们能够设计出功能、命令和配置,为用户提供强大的工具,而不会产生性能损失。自 KeyDB 创立以来,我们已经增加了对非阻塞查询、FLASH 存储、子键过期等功能的支持。随着我们不断发展,我们将支持更多的数据结构和配置选项。

随着 KeyDB 的发展和开始商业化,我们一直在纠结于哪些功能应该开源,哪些功能需要用于商业化以支持公司的发展。2021 年,Snap Inc. 与我们接触,希望有机会将 KeyDB 带到一个运营规模宏大的公司。这时我们发现,Snap 希望将所有东西都开源,以便与社区分享和协作,而 KeyDB 则继续作为 Snap 后端缓存层的重要组成部分进行开发!2021 年底,KeyDB 在 Snap Inc. 找到了它的永久归宿。

在 Snap 的新家#

我们非常激动能在 2021 年底加入 Snap 团队。我们不仅能够深入底层,为一些最大的工作负载提供动力,还能与社区分享我们所有的进步(包括我们过去商业化的产品)!Snap 希望将我们的整个代码库开源,以便与开源社区协作和共同开发。他们明白众人拾柴火焰高,多样化的工作负载和才华横溢的社区开发者将有助于推动 KeyDB 成为最好的产品。只维护一个社区版本也意味着我们的团队可以专注于我们最擅长的事情——编写高性能的数据库代码!

自从我们来到 Snap,我们很高兴地发现他们真正践行了他们的价值观,我们也很兴奋能在这家伟大的公司工作。对于有兴趣加入 Snap 团队的人,他们正在招聘,我们鼓励您申请

我们的团队#

KeyDB 维持着一个 C++ 开发者团队(包括所有原始开发者)来继续构建这个开源项目,并且还扩大了团队,引进了在规模化开发应用方面经验丰富的 Snap 工程师。