TTL/年齢に基づいて古いエントリを削除する簡単な方法はありません。 XTRIM/XDEL
を組み合わせて使用できます ストリームをトリミングする他のコマンドを使用します。
XTRIM
の使い方を見てみましょう
XTRIMストリームMAXLEN〜SIZE
XTRIMは、ストリームを指定された数のアイテムにトリミングし、必要に応じて古いアイテム(IDの低いアイテム)を削除します。
削除ポリシーに基づいて毎日または定期的にストリームサイズを生成し、XLEN
を使用してどこかに保存します コマンド
XTRIMを次のように呼び出す定期的なジョブを実行します
XTRIM x-stream MAXLEN ~ (NEW_SIZE - PREVIOUS_SIZE)
たとえば、昨日のストリームサイズは500でしたが、現在は600になっているので、500エントリを削除して、実行できるようにする必要があります
。
XTRIM x-stream MAXLEN ~ 100
削除には、毎日、毎週、週に2回など、さまざまなポリシーを使用できます。
XDELストリームID[ID...]
指定されたエントリをストリームから削除し、削除されたエントリの数を返します。これは、特定のIDが存在しない場合にコマンドに渡されるIDの数とは異なる場合があります。
したがって、サービスBがイベントを消費するときはいつでも、サービスBがストリームIDを知っているため、サービス自体がストリームエントリを削除できますが、コンシューマグループの使用を開始するとすぐには機能しません。したがって、RedisセットまたはRedisマップを使用して確認応答ストリームIDを追跡し、定期的なスイープジョブを実行してストリームをクリーンアップすると言います。
例
サービスAはID1のストリームアイテムをサービスBに送信します。サービスBは、mapack_stream ={ID1:true}のアイテムを消費した後、ストリームアイテムを確認します。たとえば、他のデータを追跡できます。消費者グループの場合はカウントします。
スイープジョブは、毎日午前1時のように定期的に実行され、ack_streamのすべての要素を読み取り、削除が必要なすべてのアイテムを除外します。これで、XDEL
を呼び出すことができます ストリームIDのセットを使用したバッチコマンド。