An update on Redis Streams development

Salvatore Sanfilippo

Redis Streams開発の進捗について

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による永続化にも対応する必要があります。おおむね1か月で、すべて準備できるはずです。

コンシューマーグループの導入に伴い、StreamsのRDB形式は、現在「unstable」が使っているものから大きく変わることになります。互換性が壊れることになるため、RDBファイルにキーの最終アクセス情報も永続化できるようにします。これにより、RDBを使ったRedisの再起動(またはスレーブによるロード)が発生しても、キーのエビクションを正しく継続するために必要な情報がすべて保持されます。現状では、その情報はすべて失われてしまいます。このRDBの大幅な変更により、計画も少し変わりました。StreamsはRedis 4.0ではなくRedis 5.0に搭載されます。ただし、5.0は約2か月後にGA版としてリリースされる予定です。これは、5.0がStreamsを加えた4.0に相当するバージョンであり、RDBの変更を除けば、ほかに大きな機能を含まないため実現できます。

つまり、私はほぼフルタイムでStreamsに取り組んでいます。重大な問題に関するPRやIssueを確認する時間を除いて、ほとんどの時間をこの作業に充てています。2か月後にRedis 5.0へアップグレードすれば、コンシューマーグループを完全に実装した、本番利用可能なStreamsを使えるようになります。ドキュメント作成もかなり必要です。約1か月後にRC1へ移行したら、コマンドのマニュアルとStreamsの詳しい入門記事の両方を執筆します。リリース候補の段階でテストを行う人たちが、そのテストを支えるドキュメントを利用できるようにするためです。

これで、Streamsで何が起きているのかが少し明確になったと思います。それでは、Redis 5.0でまたお会いしましょう :-)

原文は Salvatore Sanfilippo により に公開されました。

この記事は「gpt-5.6-luna」を使用して翻訳されました。