dot Redis 8 发布了——而且是开源的

了解更多

首届 Redis 模块黑客马拉松

First-Ever Redis Modules Hackathon

每一天都是特别的一天,但上周五尤其特别,因为Redis v4 的第一个候选版本发布了。新版本包含了许多新内容,但迄今为止最令人兴奋的补充是新的模块 API——它允许任何人直接使用 Redis 做更多有用的事情。它实际上意味着无限的可能性,这也是为什么之前的周日也是一个非常特别的日子。

上周的周日是 Redis 举办的 Redis 模块黑客马拉松的提交截止日期——这是一场围绕新 API 主题的友好的开发者竞赛。黑客马拉松持续了 42 天(是的),任何人都可以在线参与。我们还在特拉维夫和旧金山举办了现场冲刺活动,以方便这些地区的参与者。提交指南有意地开放解释——基本上任何与模块相关的内容都是合法的。并且,为了防止仅仅开发模块的纯粹智力满足感不够激励,我们还为获奖项目设立了丰厚的奖金😉

获奖者是从 17 名决赛选手中选出的,评审团由 Redis 社区的五位评委组成:Salvatore SanfilippoPedro MeloFrancois-Guillaume RibreauDvir Volk我自己。每位评委独立评估并对每个提交的作品进行评分,范围从 1 到 10。评估标准包括项目的原创性、其潜在影响、设计和提交的整体质量。然后将评委给出的分数相加,得分最高的条目被选为获胜者。

分数不会公开,但我可以分享一个关于它们的有趣的观察:尽管每位评委都使用自己的判断来评估提交的作品,并根据他个人的权重方法和偏好给他们分配分数,但所有评委的分数所产生的顺序却非常相似。一旦分数被统计出来,这是一场非常接近的比赛,最高得分者之间的差异仅为一小部分。

事不宜迟,我想祝贺我们的获奖者,并向您介绍他们的项目

一等奖授予 Brandur Leach 的 redis-cell 模块,该模块在多个方面都表现出色。首先,redis-cell 是一个速率限制器,可以随时用于节省系统资源并保护它免受意外负载的影响。虽然速率限制是 Redis 的常见用例,并且是一个看似简单的问题,但解决方案的正确实现可能“需要多次尝试才能正确”。使用该模块非常简单,因为它公开了一个新的命令,其输出可以方便地用于构建适当的 (HTTP) 响应。但是该模块的另一个方面可能与其预期功能一样有用——它是使用系统程序员闪亮的新玩具 Rust 编写的。虽然仅编程语言的选择本身并不值得加分,但 Brandur 实际上为可以作为 Rust 编写的 Redis 模块的桥梁的独立库(或 crate,如果你愿意的话)奠定了坚实的基础。

二等奖授予 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 Meetup 上的概念证明,但从那时起已发展到完整的 alpha 状态,以便提交。它是模块扩展 Redis 的潜力的绝佳演示,通过将其与其他语言连接起来,并且它的“未来发展”计划表明将会有伟大的事情发生。

虽然我们已经没有奖品可以颁发了,但仍有一些提交的作品值得特别认可

  • Reji,由 Alexey Kobozev 和 Ilan Bronshtein 开发,在黑客马拉松中排名第四。该模块是用 CPP 开发的,并使用本机数据类型实现了索引 JSON 文档存储。
  • ReDe,由 Adam Lev-Libfeld 开发,是一个用于脱水数据(“一个花哨的延迟队列”)的模块,排名第五。
  • PopRank,由 Sanket More、Louis Valencia、Matthew Kerns 和 Brian Hoang 开发。该模块允许根据实体(例如博客文章)的受欢迎程度和最新程度对其进行排序,并因其投入的努力和思考而受到评委的特别表扬。
  • Redis 的共享内存支持,由 Edgars Irmejs 开发,通过共享内存将修改后的 hiredis 客户端连接到本地服务器,以实现无与伦比的低延迟。虽然有效地利用这项技术在现实生活中非常困难,但由于其“额外的黑客性”,因此受到了特别表扬。

我想通过感谢所有参与者来结束这篇文章:参与的开发团队感谢你们的辛勤工作和宝贵的贡献,HackerEarth 的工作人员感谢你们帮助协调一切,当然,还有 Redis 团队。正是因为你们,这次活动才如此成功,而且我确信这只是未来众多活动中的第一个。在每次比赛中只有少数获胜者,但在这种情况下,真正的获胜者是 Redis 社区中的每个用户。

如果您想开发自己的 Redis 模块,一个好的起点是这篇博文,我们还有一个面向模块开发人员的邮件列表,网址为 https://groups.google.com/forum/#!forum/redis-module-devs。与往常一样,请随时 发推文给我发电子邮件——我非常容易联系 😉