2016-06-30 9 views
2

Javaで簡単に統合可能な軽量キャッシングを実装したいと思っています.Javaアプリケーションで簡単に実装できるはずです。Javaでのカスタムキャッシングの実装

キャッシュ層は、アプリケーションとデータベース層なしデータベース・キャッシング、無春、無休止状態、ないのEHcache、私たちは、ファイルシステムやナノデータベースを使用することができます

なしHTTPキャッシュの間になりますキャッシュを復元して、プロセスの再起動後にキャッシュを復元できるようにします。

データベースが速く、インサートに使用する方がよいであろう(私は

http://stackoverflow.com/questions/224868/easy-simple-to-use-lru-cache-in-java

http://www.programcreek.com/2013/03/leetcode-lru-cache-java/

.. LRUキャッシュを試してみました。しかし、私は、私はデータベースにデータベースを保存する必要がありますどのようにオーバーフロー後に確認していませんデータのシーク)またはファイルシステムを使用する必要がありますか?

Javaのキャッシュメカニズムを実装するには、どんなものが良い入力を持っていますか?シェアしてください !! 乾杯!

+0

あなたのケースでどちらが速いのかを判断するには、それを測定する必要があります。データベースとファイルシステムの速度は、多くの要因に依存します。あなたが使用するハードドライブやSSDの種類、そのドライブで使用するファイルシステム...。そのため、複数の方法を試した場合は、テストデータで速度を測定するだけです。 – MrSmith42

+0

これは主な関心事ではありませんが、私はナノデータベースを使うことができます...しかしここでの質問は、Javaでカスタムキャッシュを実装する方法ですか?どのナノデータベースを使用するのが最適でしょうか? – shiva

+0

キャッシュを使用しても(キャッシュが 'Map'インタフェースを実装している場合)、永続的なキャッシュを実装するのは簡単ではありません。だから、本当にホイールを再発明したいのですか?なぜあなたはEHcacheを使用できませんか? – PeterMmm

答えて

1

しかし、データベースをデータベースに保存すると、オーバーフロー後の方法がわかりません(データベースを高速に挿入するために使用する方がよいでしょう)か、ファイルシステムを使用する必要がありますか?

使用状況によって異なります。キャッシュされた値が非常に大きい場合は、その値をファイルに格納し、キャッシュキーのハッシュをファイル名として使用できます。

値が小さい場合は、別々のファイルとして保存するとオーバーヘッドが大きくなるため、キャッシュされたエントリを1つまたは2つのファイルに格納する方がよいでしょう。これを実装するには、「外部インデックス」や「メモリ管理」や「フリースペース管理」(たとえば、ベストフィット、次のフィット、圧縮戦略)について学ぶ必要があります。これは実際には小さなデータベースの実装につながるので、使用するかもしれません:) LevelDB、MapDB、LMDB、RocksDB

キャッシング操作はアプリケーションから同時に行われるので、キャッシュは値を退去させることがあり、同じキーに対する要求は同時に発生する可能性がある。 Cache.getCache.putのような基本的な操作を実装するか、Cache.putIfAbsentのようなCAS操作を実装しますか?今日は一般的なマルチコアシステムを効率的に使いたいですか?

小さなデータベースを使用する場合は、数カ月の工学的作業を準備する必要があります。

Javaでキャッシュメカニズムを実装するには、どんなものが良い入力を持っていますか?シェアしてください !!乾杯!

cruftex.netで私のブログを読むことができます。これは、軽量で高速なキャッシュをJavaで実装するための入力です。

オーバーフローでキャッシュを実装する場合は、imcacheを参照してください。しかしimcache例えばCAS-操作が欠落しているので、本格的な汎用的なキャッシュではありません、Cache interface

私自身の高性能Javaキャッシュの実装cache2kを参照して、CAS-オペレーションを備え、イベントなど、&作家、有効期限をローダーやがてディスクにオーバーフローすることになります。しかし、私は時間枠についてはわかりません...あなたがこの分野で働くことに興味があるときは、貢献は大歓迎です!

+0

ありがとうございますcruftex ..間違いなく私は入力をします。はい、間違いなく私はCAS操作が必要です。私はcache2Kのドキュメントを見ていますが、どうすれば私のプロジェクトに統合できますか? – shiva

+0

こんにちはcruftex、私はどのようにJavaプロジェクトとcache2Kを統合するための適切な文書を見つけることですか?手伝ってくれませんか? – shiva

+0

https://github.com/cache2k/cache2k/blob/master/doc/src/docs/asciidoc/user-guide/sections/_start.adoc – cruftex