Carte/cache Java basé sur le temps avec clés expirantes
Cette question recherche une implémentation Java qui expire automatiquement les entrées en fonction d'un délai d'expiration configurable. La solution privilégiée évite les références faibles, les fichiers de configuration externes et la mise en œuvre manuelle.
Réponse
La bibliothèque Guava fournit une solution avec sa classe 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); } });
Pour Guava version 10.0 et supérieure, utilisez 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); } });
Cette implémentation fournit une expiration automatique des clés, garantissant que les entrées sont supprimées après une période spécifiée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!