stream-node-max-bytesパラメーターを変更して、ストリーム内の各マクロノードで使用できる最大メモリ量を指定できます。 stream-node-max-entriesパラメーターを変更して、各マクロノードに保存できるストリームエントリの最大数を指定することもできます。
前提条件
インスタンスのエンジンバージョンはRedis 5.0以降です。
インスタンスは標準のマスター /レプリカアーキテクチャを使用します。
Redis ストリームとマクロノードの関係
Streamは、Redis 5.0で導入された新しいデータ型です。 Redisストリームは、基数ツリーで接続されたデルタ圧縮マクロノードにデータを格納します。 各マクロノードには、複数のストリームエントリが保存されます。 このデータ構造を使用して、ランダム要素に効率的にアクセスし、指定された範囲内の要素を取得し、キャップ付きストリームを作成できます。 このデータ構造は、メモリ使用量も大幅に最適化します。
stream-node-max-entriesパラメーターを指定して、各マクロノードでサポートされるストリームエントリの最大数を制限できます。 stream-node-max-bytesパラメーターを指定して、各マクロノードで消費できるメモリの最大量を制限できます。
stream-node-max-entries: デフォルト値は100です。これは、各マクロノードが最大100のストリームエントリを格納できることを指定します。 有効な値: 0 ~ 999,999,999,999,999 0の値は、限界が存在しないことを示す。 マクロノードに格納されたストリームエントリの数が上限に達すると、新しいストリームエントリが新しいマクロノードに格納されます。
stream-node-max-bytes:単位はバイトです。 デフォルト値は4096です。これは、各マクロノードが最大4,096バイトのメモリを消費できることを示します。 有効な値: 0 ~ 999,999,999,999,999 0の値は、限界が存在しないことを示す。
一般的なシナリオ
stream-node-max-entriesパラメーターを指定して、固定長のメッセージキューの長さの偏差を調整できます。
アプリケーションでメッセージを永続的に保存する必要がない場合は、XADDコマンドを実行してストリームにメッセージを追加するときに、MAXLENパラメーターを使用してストリームに保存できるメッセージの最大数を指定できます。 例:
XADD cappedstream MAXLEN 5000 * field value5001 // Add a value of value5001 to field1 of cappedstream and set the maximum number of messages to 5,000.ストリーム内のメッセージ数が上限に達すると、新しいメッセージが追加されるたびに最も古いメッセージが削除されます。 ストリームの最大長は、ストリームに追加されるメッセージの数に関係なく変更されません。 さらに、削除されたメッセージによって消費されたメモリが解放されます。
マクロノードからメッセージを削除すると、メッセージは削除済みとしてマークされますが、メッセージによって消費されたメモリはすぐには解放されません。 Tair (Redis OSS互換) は、マクロノードを削除し、マクロノード上のすべてのメッセージが削除済みとしてマークされた場合にのみ、消費されたメモリを解放します。
最大長を5,000メッセージなどの正確な値に設定すると、パフォーマンスが大幅に低下します。 メモリ使用量を最適化するために、Redisストリームは、基数ツリーで接続されたデルタ圧縮マクロノードにデータを格納します。 Tair (Redis OSS互換) がメッセージを削除するたびに、マクロノードでメッセージを検索し、メッセージを削除済みとしてマークする必要があります。 このメカニズムは、メッセージが頻繁に追加および削除されるハイスループットTair (Redis OSS互換) インスタンスには最適ではありません。 Tair (Redis OSS互換) がメッセージを頻繁に削除すると、サービスのパフォーマンスが低下します。 したがって、XADD コマンドにチルダ (~) を追加して、概算の最大長を指定することを推奨します。 例:
XADD cappedstream MAXLEN ~ 5000 * field value1 // Add a value of value5001 to field1 of cappedstream and set the maximum number of messages to approximately 5,000.このようにして、ストリームの実際の長さは、指定された値以上の近似値になります。 たとえば、ストリームには 5000、5050、5060 のメッセージが含まれるとします。 5000からの逸脱は、ストリーム内のマクロノードの数と、各マクロノードに保存できるメッセージの最大数に依存します。 Tair (Redis OSS互換) は、stream-node-max-entriesパラメーターに基づいて近似値を計算します。 このパラメーターには、各マクロノードに保存できるメッセージの最大数を指定します。 ストリームに保存されているメッセージの数がこの概算値を超える場合、Tair (Redis OSS互換) は、特定のメッセージを削除するのではなく、最も古いメッセージを保存しているマクロノードを削除します。
stream-node-max-entriesパラメーターの値は、固定長のメッセージキューの長さの偏差を決定します。 偏差を減らすには、パラメーターを適切な小さな値に設定します。
手順
コンソールにログインし、[インスタンス] ページに移動します。 上部のナビゲーションバーで、管理するインスタンスが存在するリージョンを選択します。 次に、インスタンスを見つけて、インスタンスIDをクリックします。
左側のナビゲーションウィンドウで、パラメーター設定をクリックします。
表示されるページで、stream-node-max-bytesパラメーターを見つけ、[操作] 列の [変更] をクリックします。
表示されるダイアログボックスで、次の手順を実行します。
ビジネス要件に基づいて、stream-node-max-bytesパラメーターの値を変更します。
[OK] をクリックします。

関連する API 操作
API 操作 | 説明 |
インスタンスの設定および操作パラメーターを照会します。 | |
インスタンスのパラメーター設定を変更します。 |