データ ストリームに対して何らかの分析を実行し、その結果を Redis チャネルで公開しています。消費者はこれらのチャネルに登録し、リアルタイムのデータ フィードを取得します。履歴データの分析結果はすべて失われます。
ここで、Redis に履歴データを保存する機能を追加して、コンシューマーがこの履歴データを (主に時間ごとに) クエリできるようにします。分析結果は時間ごとに分割されるため、結果を Redis に保存するのに適した設計は何でしょうか?
データ ストリームに対して何らかの分析を実行し、その結果を Redis チャネルで公開しています。消費者はこれらのチャネルに登録し、リアルタイムのデータ フィードを取得します。履歴データの分析結果はすべて失われます。
ここで、Redis に履歴データを保存する機能を追加して、コンシューマーがこの履歴データを (主に時間ごとに) クエリできるようにします。分析結果は時間ごとに分割されるため、結果を Redis に保存するのに適した設計は何でしょうか?
redis sorted setsを使用します。
ソートされたセットは「スコア」に基づいてデータを保存するため、あなたの場合はミリ秒単位のタイムスタンプを使用してください。データは自動的に並べ替えられ、開始日と終了日の範囲を使用して履歴項目を取得できます。例を次に示します...
ソート済みセットに項目を追加...
zadd historical <timestamp> <dataValue>
..いくつかのサンプルデータを追加..
zadd historical 1 data1
zadd historical 2 data2
zadd historical 3 data3
zadd historical 4 data4
zadd historical 5 data5
zadd historical 6 data6
zadd historical 7 data7
..開始/終了範囲を使用して項目のサブセットを取得します...
zrangebyscore historical 2 5
..戻り値...
1) "data2"
2) "data3"
3) "data4"
4) "data5"
したがって、あなたの場合、最終日のすべての履歴アイテムを取得したい場合は、これを行うだけです...
zrangebyscore historical <currentTimeInMillis - 86400000> <currentTimeInMillis>