La caféine est une bibliothèque de mise en cache haute performance, presque optimale. Pour plus de détails, consultez notre guide de l'utilisateur et parcourez les documents API pour la dernière version.
Cache
La caféine fournit un cache en mémoire utilisant une API inspirée de Google Guava. Les améliorations s'appuient sur notre expérience de conception du cache de Guava et de lahashmap concurrent.
LoadingCache < Key , Graph > graphs = Caffeine . newBuilder ()
. maximumSize ( 10_000 )
. expireAfterWrite ( Duration . ofMinutes ( 5 ))
. refreshAfterWrite ( Duration . ofMinutes ( 1 ))
. build ( key -> createExpensiveGraph ( key ));
Caractéristiques en un coup d'œil
La caféine fournit une construction flexible pour créer un cache avec une combinaison des caractéristiques facultatives suivantes:
- Chargement automatique des entrées dans le cache, éventuellement de manière asynchrone
- Expulsion basée sur la taille lorsqu'un maximum est dépassé en fonction de la fréquence et de la récence
- Expiration temporelle des entrées, mesurée depuis le dernier accès ou la dernière écriture
- actualiser de manière asynchrone lorsque la première demande de rassalette pour une entrée se produit
- Clés enveloppées automatiquement dans des références faibles
- Valeurs enveloppées automatiquement dans des références faibles ou douces
- Notification des entrées expulsées (ou autrement supprimées)
- Écriture propagée à une ressource externe
- Accumulation de statistiques d'accès au cache
De plus, la caféine propose les extensions suivantes:
- JSR-107 JCache
- Adaptateurs de goyave
- Simulation
Utilisez de la caféine dans une intégration à condition de communauté:
- Frame de jeu: cadre Web à grande vitesse
- MicronAut: un cadre moderne et complet
- Cache de printemps: au printemps 4.3 et au démarrage 1.4
- Coroutines: extension Kotlin Coroutines
- Botique: une plate-forme Java rapide et simple
- Quarkus: Java subatomique supersonique
- Camel: moteur de routage et de médiation
- SCAFEINE: Emballage Scala pour la caféine
- Scalacache: mise en cache simple dans Scala
- Jhipster: générer, développer, déployer
- Aedile: Kotlin Wrapper pour la caféine
Infrastructure d'alimentation près de chez vous:
- DROPWIZARD: API RESTULS, conviviale, haute performance et reposante
- Cassandra: gérer des quantités massives de données, rapidement
- Cohérence: grille de données en mémoire critique de la mission
- Accumulo: un magasin de clés / valeur trié et distribué
- Kafka: une plate-forme de streaming d'événements distribués
- HBASE: une boutique de big data distribuée et évolutive
- Apache Solr: recherche d'entreprise flamboyante et rapide
- Infinispan: Grille de données en mémoire distribuée
- Redisson: grille de données ultra-rapide en mémoire
- OpenWhisk: plate-forme cloud sans serveur
- Corfu: une plate-forme de cohérence en grappes
- GRAILS: Framework Web basé sur Groovy
- Finagle: système RPC extensible
- Neo4j: graphiques pour tout le monde
- Druid: analytique en temps réel
Dans les nouvelles
- Une description approfondie de l'architecture de la caféine.
- Conception d'un cache moderne: partie n ° 1, partie n ° 2 (diapositives) à la grande échelle
- La caféine est présentée dans le cadre de documents de recherche évaluant sa nouvelle politique d'expulsion.
- Tinylfu: une politique d'admission au cache très efficace par Gil Einziger, Roy Friedman, Ben Manes
- Gestion du cache logiciel adaptatif par Gil Einziger, Ohad Eytan, Roy Friedman, Ben Manes
- Gestion de cache de taille robuste légère par Gil Einziger, Ohad Eytan, Roy Friedman, Ben Manes
Télécharger
Téléchargez depuis Maven Central ou dépend via Gradle:
implementation( " com.github.ben-manes.caffeine:caffeine:3.1.8 " )
// Optional extensions
implementation( " com.github.ben-manes.caffeine:guava:3.1.8 " )
implementation( " com.github.ben-manes.caffeine:jcache:3.1.8 " )
Pour Java 11 ou plus, utilisez 3.x
Utilisez autrement 2.x
Voir les notes de publication pour plus de détails sur les modifications.
Les instantanés de la version de développement sont disponibles dans le référentiel d'instantanés de Sonatype.