每一天都是特殊的日子,但上周五对于 Redis v4 首个候选版本的发布 来说,是一个真正特殊的日子。新版本包含了 **许多新内容**,虽然它最激动人心的添加是新的模块 API - 它允许几乎任何人都可以立即开始使用 Redis 做一些更有用的事情。它实际上意味着无限的可能性,这也是为什么上周日也是一个特殊日子。
上周日是 Redis 举办的 Redis 模块黑客马拉松的提交截止日期 - 一场围绕新 API 主题的开发者友好型比赛。黑客马拉松持续了 42 天(是的),任何人都可以线上参与。我们还在特拉维夫和旧金山为这些地区的参与者举办了线下现场冲刺。提交指南有意地开放解释 - 基本上任何与模块有关的东西都是合法的。而且,以防仅仅开发模块的纯粹智力满足感不足以激励大家,我们还为获胜的项目设置了丰厚的现金奖励 😉
获胜者从 17 名决赛选手中选出,评审团由 Redis 社区的五位评委组成:Salvatore Sanfilippo、Pedro Melo、Francois-Guillaume Ribreau、Dvir Volk 以及 我自己。每位评委独立评估并对每个提交内容进行排名,评分从 1 到 10。评估标准包括项目的原创性、潜在影响、设计和提交的整体质量。然后将评委给出的分数相加,分数最高的条目被选为获胜者。
分数不会公开,但我可以分享一个关于分数的有趣观察:虽然每位评委都使用了自己的判断来评估提交内容,并根据其个人权衡方法和偏好分配分数,但所有评委对分数产生的排序结果却惊人地相似。当分数汇总后,比赛异常激烈,得分最高者仅相差几分。
话不多说,我想祝贺我们的获奖者,并向您介绍他们的项目。
一等奖授予 Brandur Leach,以表彰他的 redis-cell 模块,该模块在多个方面令人印象深刻。首先,redis-cell 是一个速率限制器,可以轻松用于节省系统的资源并保护系统免受意外负载的影响。虽然速率限制是 Redis 的常见用例,也是一个看似简单的难题,但解决方案的正确实现可能需要“多次尝试才能正确”。使用该模块非常简单,因为它公开了一个新的命令,该命令的输出可以方便地用于构建适当的(HTTP)响应。但该模块还有另一个方面可能与它的预期功能一样有用 - 它使用系统程序员的新宠玩具 Rust 编写。虽然编程语言的选择本身并不一定能得奖,但 Brandur 实际上为可以作为 Rust 编写的 Redis 模块桥梁的独立库(或者说是箱子)奠定了坚实的基础。
二等奖颁发给 Noam Sagi 提交的 RedisModuleTimeSeries。该模块引入了一种新的数据类型,用于聚合时间序列数据,并且可以在单一模式或流模式下使用。Noam 开发该模块的动机是希望在分析结构化数据(主要是数值数据)时实现最佳性能。作者声称,使用最先进框架构建的其他解决方案在处理预定义数值范围内的数据方面效果不佳,并提供了一个基准测试,显示与 Elasticsearch 相比,性能提高了数个数量级。
三等奖颁发给 Roi Lipman,以表彰他的 Redis Graph 模块,这是一个存储在 Redis 本机有序集合数据类型中的图数据库。这个巧妙的技巧是使用 使用六存储表示和查询图 中描述的方法完成的,但真正让这个提交脱颖而出的,是它选择 Neo4j 的 Cypher 作为查询语言。该项目虽然还很年轻,但具有巨大的潜力,我们希望 Roi 能够继续开发它,并为 Redis 社区做出贡献。
旧金山地区挑战赛的冠军是 Nick Chadwick,他编写了 Redis Zstandard 压缩值模块。鉴于其相对较高的价格以及耗尽的含义,RAM 始终是 Redis 用户关注的问题。Nick 的模块试图通过使用 Facebook 新发布的用于压缩存储数据的库来缓解这种情况。它运行多个线程来执行实际的工作,并且可以使用自定义字典来提高特定于域数据的压缩率。
特拉维夫地区奖颁发给 Doron Sadeh,以表彰他的 Pyrecks 模块。Pyrecks 允许在 Redis 沙箱中执行 Python 内核 - 一个用来描述小型计算单元的术语。每个内核都在其自己的线程中运行,并且可以将内核一个接一个地链接起来,前者的输出作为后者的输入,以实现更复杂的流程。Pyrecks 最初是在 Redis TLV 聚会 上作为概念验证,但后来被开发到完整的 Alpha 状态以提交。它展示了模块通过将其与其他语言桥接来扩展 Redis 的潜力,其“未来开发”计划表明未来将有更大的成就。
虽然我们已经没有奖品可以颁发了,但仍然有一些提交值得特别认可。
我想通过感谢所有参与的人来结束这篇文章:参与的开发团队,感谢你们的辛勤工作和宝贵的贡献;HackerEarth 的员工,感谢你们帮助组织一切;当然还有 Redis 团队。正是因为你们,这场活动才能取得如此成功,我相信这仅仅是未来众多活动中的第一个。在任何比赛中都只有少数赢家,但在这种情况下,真正的赢家是 Redis 社区的每位用户。
如果您想开发自己的 Redis 模块,一个好的起点是 这篇博客文章,我们还有一个专门针对模块开发者的邮件列表,地址是 https://groups.google.com/forum/#!forum/redis-module-devs。像往常一样,随时可以 发推 或 给我发邮件 - 我随时待命 😉