永続的なDBに格納されているデータよりもメモリ内のキャッシュを維持することができます。Javaで周期的にリフレッシュするキャッシュを実装する
データを使用して、UIのエントリのリスト/マップにデータを入力します。任意の時点で、UIに表示されるデータは可能な限り更新されている必要があります(これはキャッシュのリフレッシュ頻度で行うことができます)。
通常のキャッシュ実装とこの特定のキャッシュとの主な違いは、定期的にすべての要素を一括リフレッシュする必要があるため、LRUキャッシュとはかなり異なる点です。
私はこの実装をJavaで行う必要があります。これを構築するために利用できる既存のフレームワークがあれば、それは素晴らしいことでしょう。
私はGoogle Guavaキャッシュライブラリを調べましたが、バルクリフレッシュではなくエントリごとのリフレッシュに適しています。キャッシュ全体をリフレッシュする簡単なAPIはありません。
ご協力いただければ幸いです。
また、リフレッシュを段階的に行うことができる場合は、キャッシュ全体をリフレッシュする際に発生する唯一の制限は、キャッシュのサイズが非常に大きい場合、メモリヒープが少なくとも2回新しいエントリをロードして古いマップを新しいマップに置き換えるためにキャッシュのサイズキャッシュがインクリメンタルであるか、またはチャンクされたリフレッシュ(等しいサイズでリフレッシュ)が行われている場合は、それが素晴らしいでしょう。
@ jtahlborn - EhCacheのBulkLoader API(http://ehcache.org/documentation/apis/bulk-loading)は有用ですが、refreshTimeまたは定期的な間隔の時間オプションを提供していれば素晴らしいでしょうキャッシュリフレッシュのスケジューリングとにかく、いつでも外部スケジューラを使用してバルクロードAPIを定期的に呼び出すことで実現できます。答えをありがとう。 –
EHCacheについては、http://www.ehcache.org/documentation/3.3/thread-pools.htmlおよびhttp://terracotta.org/documentation/4.1/bigmemorymax/api/bulk-loading – Aliuk
をご覧ください。 time-to-liveは単にキャッシュから要素を削除するだけではありませんか?ここで書いたものと同じではありません。 "自動リロード" – javagirl