2016-05-02 17 views
0

永続的な時間ベースのキューを実装しようとしています。要素は、それに関連付けられた特定の時間とともにキューに追加されます。時間値は、その要素がキューの先頭に留まる時間を表します。複数のクライアントがキューの先頭にある要素にアクセスできるようにする必要があります。キューの先頭にある時間は長くなり、先頭にはどの要素が続くのですか。永続的な時間ベースのキュー

私が処分できるツールは、Redisサーバーとmysqlサーバーです。

このタイプのデータ構造は、キューを管理する何らかのヘルパーサーバーなしで可能ですか?どのように私はredisまたはmysqlでこれを実装できますか?

答えて

1

レディスのソートセットで可能です。並べ替えられたセット内の時間とともにデータを押し続けることができます。たとえば、

zadd queue 1 value1 
zadd queue 2 value2 
zadd queue 3 value3 
zadd queue 4 value4 
zadd queue 5 value5 

ここで、1〜5は値(時間単位)です。 3時間目にクエリを実行すると、このようにクエリが実行されます。

zrangebyscore queue 3 +inf 

これは結果としてあなたに

value3,value4,value5を返します。これは、時間が経過すると、第1の2の値をあなたに与えることはありません。このようにキューを設計することができます。

もあまり栽培されてソートされたセットを避けるために、あなたは

zremrangebyscore queue -inf that_hour-1 

http://redis.io/topics/data-types

詳細をお知りにソートセットについて学ぶを使用して、定期的に不要なデータを削除することができます
関連する問題