2016-04-20 12 views
0

私はストリームを使用しています。そのストリームは10秒後にそれを読み取るためにタイムスタンプ付きのデータを保存します(これはプッシュ通知を送信するために使用しています)。特定の範囲のタイムスタンプのリストをredisに問い合わせることができるかどうか疑問に思っていました。Python redisはタイムスタンプに基づいてリストを取得します

例:私は10秒ごとにそのデータをredisから取得するスレッドを実行しています。 7つの新しいメッセージが置かれているとしましょう。つまり、10秒後に、その時間に配置されたメッセージに対して7つの新しいプッシュ通知を送信したいとします(すでに読み込まれているかどうかを確認しますが、それは別のケースです)。

私はレディスに慣れていないので、誰もが知っていることを願っています。私は使用していますthis

答えて

1

各メンバーの得点がunixタイムスタンプであるソートセットを使用することができます。

ZADDを使用し、新しいメッセージを保存するために:

ZADD myzset <timestamp> <data> 

その後ZRANGEBYSCOREを使用し、指定した時刻以降に保存されたメッセージのリストを取得するには:

# return the messages posted since reference_timestamp 
ZRANGEBYSCORE myzset <reference_timestamp> +inf 

あなたは後にメッセージを削除することができます彼らは送信されましたZREMRANGEBYSCORE

# delete the messages older than reference_timestamp (including those at timestamp) 
ZREMRANGEBYSCORE myzset -inf <reference_timestamp> 
+0

ありがとうこれはまさに私が探していたものです – dnsko

関連する問題