Trabalhem juntos para criar e crescer juntos! Este é o 18º dia da minha participação no "Nuggets Daily New Plan · August Update Challenge", clique para ver os detalhes do evento
Introdução à cafeína
Endereço do site oficial: github.com/ben-manes/c…
Cafeína é uma biblioteca de cache local de alto desempenho.
Configuração do ambiente do programa de exemplo
A configuração do ambiente dependente deste programa de amostra é a seguinte:
- Versão do JDK: 1.8
- Versão com cafeína: 2.9.3
- Versão SpringBoot: 2.7.0
Etapas para integrar cafeína no projeto SpringBoot
O SpringBoot integra o Caffeine das duas maneiras a seguir:
- Método 1: introduza diretamente dependências de cafeína e, em seguida, use o método de cafeína para implementar o cache.
- Método 2: introduza as dependências do Caffeine e do Spring Cache e use os métodos de anotação do SpringCache para implementar o cache.
Apresentamos apenas o método um aqui .
1. Introduza as dependências relevantes no pom.xml
arquivo .caffeine
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
</dependency>
复制代码
2. Escreva uma classe de configuração de cache - CacheConfig.java
import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.concurrent.TimeUnit;
@Configuration
public class CacheConfig {
@Bean
public Cache<String, Object> caffeineCache() {
return Caffeine.newBuilder()
// 设置最后一次写入或访问后两个小时后过期
.expireAfterWrite(7200, TimeUnit.SECONDS)
// 初始的缓存空间大小
.initialCapacity(100)
// 缓存的最大条数
.maximumSize(1000)
.build();
}
}
复制代码
Na classe de configuração de cache fizemos as seguintes configurações:
- Definido para expirar duas horas após a última gravação ou acesso
- Defina o tamanho do espaço de cache inicial
- Defina o número máximo de caches
Algumas configurações comuns de cafeína:
configurar | tipo de valor | Descrição |
---|---|---|
expireAfterAccess | duração | Especifica quanto tempo expira após a última gravação ou acesso |
expireAfterWrite | duração | Especifica quanto tempo após a última gravação o cache expira |
capacidade inicial | inteiro | Tamanho do espaço de cache inicial |
tamanho máximo | grandes | Número máximo de caches |
peso máximo | grandes | O peso máximo do cache |
atualizarDepoisEscrever | duração | Depois que o cache é criado ou o cache é atualizado pela última vez, o cache é atualizado após o intervalo de tempo especificado |
Perceber:
maximumSize
emaximumWeight
não podem ser usados simultaneamente.expireAfterWrite
eexpireAfterAccess
ambos existem, o que querexpireAfterWrite
que exista.
3. Acesso a dados
// 1. 注入
@Resource
private Cache<String, Object> caffeineCache;
// 2. 存储数据
caffeineCache.put("access_token", token);
// 3. 读取数据
String token = (String) caffeineCache.asMap().get("access_token");
复制代码
Ao ler os dados, precisamos primeiro injetar o cache de cafeína, ou seja, o cache que configuramos na classe de configuração de cache no passo 2. O método da classe de cache é chamado para armazenar os dados, e o put(...)
método da classe de cache é chamado para ler os dados get(...)
.