2016-10-17 19 views
0

最大で数百万の6文字の基本36文字列を保持する以下の動作を持つ永続キャッシュが必要です。 - クライアントがN個の文字列をキャッシュから取り出すと、それらはbase36値の順に検索されます。 AAAAAA、AAAAABなど。 - 文字列が取り出されると、それらもキャッシュから削除されるので、他のクライアントは同じ文字列を受け取ることはありません。順序付けられた永続キャッシュ

現在、永続キャッシュとしてMapDBを使用しています(EHCacheを使用しますが、永続ストレージのライセンスが必要です)。

MapDBは、私が要素を置く/取得できるマップを提供し、ディスクへの永続化を処理します。

私はそれが順序を提供し、私も削除/順序で要素を取得するためにpollFirstEntryメソッドを呼び出すことができるので、JavaのConcurrentSkipListMapクラスは、私の問題に役立つことに気づきました。

どのように私はMapDBでこれを使うことができるのか分かりません。誰かが私が概説した行動を達成する助けとなるアドバイスを持っていますか?

おかげ

答えて

1

あなたが記述しているのは、ほとんどの人がキャッシュを検討するだろうかのような音はありません。キャッシュは本質的に共有マップであり、キーは値にマッピングされているため、キャッシュに最も人気のあるアイテム(そのためのもの)が含まれているため、読み込み時に削除することはありません。

あなたが説明しているもの(順序付けられた順序でクライアントによって消費される順序付けされた一連のアイテム)は、作業キューによく似ています。キャッシュソリューションを見るのではなく、RabbitMQ、Kafka、bigqueueなどの永続キューを試してください。