A cafeína é uma biblioteca de cache de alto desempenho e quase ideal. Para mais detalhes, consulte o Guia do nosso usuário e navegue nos documentos da API para obter a versão mais recente.
Cache
A cafeína fornece um cache na memória usando uma API inspirada no Google Guava. As melhorias se baseiam em nossa experiência em projetar cache de goiaba e concorrentelinkedhashmap.
LoadingCache < Key , Graph > graphs = Caffeine . newBuilder ()
. maximumSize ( 10_000 )
. expireAfterWrite ( Duration . ofMinutes ( 5 ))
. refreshAfterWrite ( Duration . ofMinutes ( 1 ))
. build ( key -> createExpensiveGraph ( key ));
Recursos em um olhar
A cafeína fornece construção flexível para criar um cache com uma combinação dos seguintes recursos opcionais:
- Carregamento automático de entradas no cache, opcionalmente de forma assíncrona
- despejo baseado em tamanho quando um máximo é excedido com base na frequência e na recência
- Expiração do tempo de entradas, medidas desde o último acesso ou a última gravação
- Atualizar de forma assíncrona quando ocorre o primeiro pedido obsoleto de uma entrada
- Chaves embrulhadas automaticamente em referências fracas
- Valores embrulhados automaticamente em referências fracas ou suaves
- notificação de entradas despejadas (ou removidas)
- escreve propagados a um recurso externo
- acumulação de estatísticas de acesso ao cache
Além disso, a cafeína oferece as seguintes extensões:
- JSR-107 JCACHE
- Adaptadores de goiaba
- Simulação
Use cafeína em uma comunidade fornecida integração:
- Estrutura de reprodução: estrutura da web de alta velocidade
- Micronaut: uma estrutura moderna e de pilha completa
- Cache da primavera: a partir da primavera 4.3 e inicialização 1.4
- Coroutines: extensão Kotlin Coroutines
- Bootique: uma plataforma java rápida e simples
- Quarkus: Java subatômica supersônica
- Camelo: motor de roteamento e mediação
- Scaffeine: Scala Wrapper para cafeína
- Scalacache: cache simples em scala
- Jhipster: gerar, desenvolver, implantar
- Aedile: Kotlin Wrapper para cafeína
Infraestrutura de alimentação perto de você:
- DropWizard: APIs de alto desempenho, amigáveis para operações, de alto desempenho
- Cassandra: Gerenciar quantidades enormes de dados, rápido
- Coerência: Missão Crítica da Memória Grade
- Accumulo: um armazenamento de chave/valor distribuído e classificado
- Kafka: uma plataforma de streaming de eventos distribuídos
- HBASE: um armazenamento distribuído, escalável e de big data
- Apache Solr: Pesquisa corporativa incrivelmente rápida
- Infinispan: Grade de dados de memória distribuída
- Redisson: grade de dados de memória ultra-rápida
- OpenWhisk: plataforma de nuvem sem servidor
- Corfu: uma plataforma de consistência do cluster
- Grails: estrutura da web baseada em groovy
- Finagle: sistema RPC extensível
- Neo4j: gráficos para todos
- Druid: análise em tempo real
Nas notícias
- Uma descrição detalhada da arquitetura da cafeína.
- Design de um cache moderno: parte 1, parte nº 2 (slides) em alta habilidade
- A cafeína é apresentada como parte dos trabalhos de pesquisa que avaliam sua nova política de despejo.
- Tinylfu: uma política de admissão de cache altamente eficiente de Gil Einziger, Roy Friedman, Ben Manes
- Gerenciamento de cache de software adaptativo por Gil Einziger, Ohad Eytan, Roy Friedman, Ben Manes
- Gerenciamento de cache consciente de tamanho robusto e leve por Gil Einziger, Ohad Eytan, Roy Friedman, Ben Manes
Download
Baixe do Maven Central ou dependa 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 " )
Para Java 11 ou superior, use 3.x
caso contrário, use 2.x
Veja as notas de versão para obter detalhes das alterações.
Os instantâneos da versão de desenvolvimento estão disponíveis no repositório de instantâneos do Sonatype.