Redis Streams 开发进展更新
原文由 Salvatore Sanfilippo 于 发布,订阅该博客
我看到不少用户在问 Streams 的进展如何、什么时候可以用于生产环境,以及这个功能的总体排期和计划是怎样的。这篇文章想稍微说明一下接下来的安排。
首先,目前 Streams 是我的首要任务:我想尽快完成这项我认为对 Redis 社区非常有用的工作,然后马上投入到 Redis Cluster 的改进计划中。事实上,Cluster 相关的工作已经启动,我的同事 Fabio Nicotra 正在把 Cluster 管理工具 redis-trib 移植到我们熟悉的 redis-cli 中。这一步需要把代码从 Ruby 重写为 C。与此同时,几周前我已经完成了 Streams 核心部分的编写,并删除了“streams”特性分支,将所有代码合并到了“unstable”分支。
之后我又反复多次审阅了消费组的规范。几周前我终于对结果感到满意,于是开始着手实现这份规范:https://gist.github.com/antirez/68e67f3251d10f026861be2d0fe0d2f4。请注意,命令名称有不小的变动……现在的 API 大致是这样的:https://gist.github.com/antirez/4e7049ce4fce4aa61bf0cfbc3672e64d。
目前进度过半,在写完最初的 500 行代码后,今天我已经能看到客户端通过 XREADGROUP 命令在拉取历史消息时,只会看到属于自己的本地历史。这算是实现过程中的一个里程碑。XACK 现在也已可用。基本上,支撑 Streams 消费组的所有数据结构都已经就绪,但我还需要完成所有命令的实现、支持 XREADGROUP 中的阻塞操作等,并处理好复制、RDB 和 AOF 持久化。大约再过一个月,一切应该就能就绪。
由于消费组的引入,Streams 的 RDB 格式相比目前“unstable”分支所使用的会有很大变化。既然要打破兼容性,我们也会顺便让 RDB 文件能够持久化键最后访问时间的信息,这样在涉及 RDB 的 Redis 重启(或从节点加载)后,仍能获得继续正确执行键淘汰所需的所有信息。而目前这些信息都会丢失。正因为 RDB 有这样比较大的改动,计划也稍有调整:Streams 将不会在 Redis 4.0 中出现,而是会出现在 Redis 5.0 中,但 5.0 将在大约两个月后以 GA 版本发布:这之所以可行,是因为 5.0 基本上就是 4.0 加上 Streams,除了 RDB 的改动外不会包含其他重大新特性……
所以,简而言之:我现在几乎全职投入在 Streams 上,除了会抽一些时间处理关键的 PR / Issue;在两个月后,如果你升级到 Redis 5.0,就能用上已完全实现消费组、可用于生产环境的 Streams。还有不少文档工作要做,一旦进入 RC1(大约一个月后),我会同时编写命令手册和一篇详尽的 Streams 入门介绍,这样大家在候选发布阶段测试时就有文档可供参考。
希望这能说明 Streams 目前的进展。期待很快在 Redis 5.0 中与大家再见 :-)
随机一篇博客
评论
登录后参与讨论