期限切れキーを含む Java 時間ベースのマップ/キャッシュ
この質問では、構成可能なタイムアウトに基づいてエントリを自動的に期限切れにする Java 実装を求めます。推奨されるソリューションでは、弱い参照、外部構成ファイル、および手動実装を回避します。
回答
Guava ライブラリは、MapMaker クラスを使用したソリューションを提供します。
ConcurrentMap<Key, Graph> graphs = new MapMaker() .concurrencyLevel(4) .softKeys() .weakValues() .maximumSize(10000) .expiration(10, TimeUnit.MINUTES) .makeComputingMap( new Function<Key, Graph>() { public Graph apply(Key key) { return createExpensiveGraph(key); } });
Guava バージョン 10.0 以降の場合は、CacheBuilder を使用します。
LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder() .maximumSize(10000) .expireAfterWrite(10, TimeUnit.MINUTES) .build( new CacheLoader<Key, Graph>() { public Graph load(Key key) throws AnyException { return createExpensiveGraph(key); } });
この実装では、キーの自動有効期限が切れ、指定された期間後にエントリが確実に削除されます。
以上がJava で時間ベースの有効期限マップ/キャッシュを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。