Spring Boot本地缓存
Caffeine使用-显式使用
集成(本人喜欢显式的使用缓存,故示例都是显式的)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>2.8.1</version>
</dependency>
import java.util.concurrent.TimeUnit;
import org.springframework.cache.CacheManager;
import org.springframework.cache.caffeine.CaffeineCacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.github.benmanes.caffeine.cache.Caffeine;
@Configuration
public class CaffeineConfig {
@Bean
public Caffeine<Object, Object> caffeineCache() {
return Caffeine.newBuilder()
// 设置缓存的最大容量为1000
.maximumSize(1000)
// 设置缓存的过期时间为30分钟
.expireAfterWrite(30, TimeUnit.MINUTES);
}
@Bean
public CacheManager cacheManager(Caffeine<Object, Object> caffeineCache) {
CaffeineCacheManager cacheManager = new CaffeineCacheManager();
cacheManager.setCaffeine(caffeineCache);
return cacheManager;
}
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.CacheManager;
import org.springframework.stereotype.Component;
@Component
public class CacheUtil {
//默认的缓存名,如果有多种类型的缓存可以自己定义缓存名
private final static String defalutCacheName = "default";
@Autowired
private CacheManager cacheManager;
public String getCache(String key){
return cacheManager.getCache(defalutCacheName).get(key,String.class);
}
public void putCache(String key,String value){
cacheManager.getCache(defalutCacheName).put(key,value);
}
}
使用:
public class TestService{
@Autowired
private CacheUtil cacheUtil;
public void test(){
cacheUtil.putCache("key","value");
cacheUtil.getCache("key");
}
}
Guava Cache使用-显式使用
@Bean
public Cache<Object, Object> guavaCache() {
return CacheBuilder.newBuilder()
.maximumSize(100) // 设置缓存最大容量
.expireAfterWrite(30, TimeUnit.MINUTES) // 设置写入后过期时间
.build();
}
public class TestService{
@Autowired
private Cache cache;
public void test(){
cache.put("key","value");
cache.getIfPresent("key");
}
}