redis sorted setsを使用してください。
ソートセットは「スコア」に基づいてデータを格納します。したがって、場合によってはミリ秒単位でタイムスタンプを使用してください。データはあなたが開始/終了日付の範囲を使用して、履歴項目を取得することができ、自動的にソートされますが、ここでの例だ...
はソートセットに項目を追加...
zadd historical <timestamp> <dataValue>
は、いくつかを..addサンプルデータ..開始/終了範囲を使用してアイテムのサブセット..retrieve
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
..returns。 ..あなたのケースではそう
1) "data2"
2) "data3"
3) "data4"
4) "data5"
、あなただけのこの操作を行う、最後の日のためのすべての歴史的なアイテムを取得したい場合は...
zrangebyscore historical <currentTimeInMillis> <currentTimeInMillis - 86400000>
はRedisのキー取得のパフォーマンスが直線的に低下することを警戒してくださいあなたが得ている個々のキーの数と一緒に。したがって、大部分の(ほとんど)連続したデータのリストを保存すると、データの時系列の単一文字列表現よりもフェッチするのにN時間かかることになります。 (300の値では問題ありませんが、100kの値には数倍のレイテンシが追加されます)。 –
@ニサン - 私は完全に理解するとは思わない。私は30秒ごとに日付を保存している場合、アプローチ(以下のzsetsを使用)はこのパフォーマンスのペナルティを持ちますか? –
あなたが予想しているサイズのリストを作成し、そこから読み取るのにかかる時間を測定してみてください。リスト全体を文字列として保存してみてください(たとえば、シリアル化されたJSONオブジェクトとして、より多くの圧縮/実行オプションがあります)。私の経験では、均質なデータ型(例えば、最大K桁の整数)の非常に大きなリスト(50k〜500k要素など)の場合、リスト全体をtimeseriesの文字列表現として格納するのは約1000倍高速でしたそれはレディスから読んだ後です。 –