An update on Redis Streams development

Salvatore Sanfilippo

Redis Streams開発の近況アップデート

原文は Salvatore Sanfilippo により に公開されました。 このブログを購読する

Streamsが今どうなっているのか、いつ本番利用できるようになるのか、そもそもETAや今後の計画はどうなっているのか、といった質問を複数のユーザーから受けています。この記事では、今後の見通しについて少し整理してお伝えしたいと思います。

まず最初に、現時点で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による永続化への対応などがあります。おおむね1か月ほどですべて準備が整うはずです。

コンシューマグループの導入により、StreamsのRDBフォーマットは現在の「unstable」で使われているものから大きく変わることになります。どうせ互換性が崩れるのであれば、ついでにRDBファイルがキーの最終アクセス情報を永続化できるようにもします。これにより、RDBを伴うRedisの再起動(あるいはスレーブのロード)時にも、キーの退避(eviction)を正しく継続するために必要な情報がすべて引き継がれるようになります。現状では、この情報はすべて失われてしまいます。このようなRDBの大幅な変更に伴い、計画も少し変わりました。StreamsはRedis 4.0ではなく5.0で登場することになりますが、5.0は約2か月後にGAとしてリリースされる予定です。これは5.0が基本的に4.0にStreamsを加えたものであり、RDBの変更を除けば他に大きな新機能がないため可能になります…

要するに、Streamsにはほぼフルタイムで取り組んでおり、合間にクリティカルなPRやIssueの確認をしている状況です。2か月後にRedis 5.0へアップグレードしていただければ、コンシューマグループまで完全に実装された、本番利用可能なStreamsが手に入ります。ドキュメントの作業もかなり残っており、RC1になる約1か月後には、コマンドマニュアルとStreamsに関する詳細なイントロダクションの両方を執筆する予定です。リリース候補の段階でテストを進める際に、皆さんに参考にしていただけるドキュメントを用意するためです。

これでStreamsをめぐる現状が少しでも明確になれば幸いです。Redis 5.0でまたお会いしましょう :-)

この記事は「muse-spark-1.2-contributor」を使用して翻訳されました。

コメント