项目总结71:Caffeine的基本概念和使用
生活随笔
收集整理的這篇文章主要介紹了
项目总结71:Caffeine的基本概念和使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
項目總結71:Caffeine的基本概念和使用
start
pom引用
<!-- Spring boot Cache-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
<version>1.5.12.RELEASE</version>
</dependency>
<!--for caffeine cache-->
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>2.7.0</version>
</dependency>
application.properties配置
self.caffeine.maxsize=1000 self.caffeine.expire.time=100
CaffeineConfig配置類
import com.github.benmanes.caffeine.cache.Caffeine;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.caffeine.CaffeineCacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.concurrent.TimeUnit;
//https://www.cnblogs.com/fnlingnzb-learner/p/11025565.html
@EnableCaching
@Configuration
public class CaffeineCacheConfig {
@Value("${self.caffeine.maxsize}")
public Long maximumSize;
@Value("${self.caffeine.expire.time}")
public Long expireTime;
@Bean("caffeineCacheManager")
public CacheManager caffeineCacheManager(){
CaffeineCacheManager cacheManager = new CaffeineCacheManager();
cacheManager.setCaffeine(
Caffeine.newBuilder()//創建Caffeine實例(并使用默認配置)
.recordStats()//開啟默認打點監控策略
.expireAfterWrite(maximumSize, TimeUnit.SECONDS)//每次寫入10秒后過期
.maximumSize(expireTime));//緩存最大條數
return cacheManager;
}
}
service類
public interface CaffeineService {
void putValue(String cacheName,Object key, Object value);
<T>T getValue(String cacheName, String key);
}
@Service
public class CaffeineServiceImpl implements CaffeineService {
@Autowired
private CacheManager caffeineCacheManager;
private final static String DEFAULT_CACHE = "default";
@Override
public void putValue(String cacheName,Object key, Object value) {
if(key == null || value == null){
return;
}
if(cacheName == null){
cacheName = DEFAULT_CACHE;
}
Cache cache = caffeineCacheManager.getCache(cacheName);
if(cache != null){
cache.put(key,value);
}
}
@Override
public <T> T getValue(String cacheName, String key) {
if(cacheName == null || key == null){
return null;
}
Cache cache = caffeineCacheManager.getCache(cacheName);
if(cache != null){
Cache.ValueWrapper valueWrapper = cache.get(key);
if(valueWrapper != null){
return (T)valueWrapper.get();
}
}
return null;
}
}
controller類
@RestController
@RequestMapping(value="/caffeine")
public class CaffeineController {
@Autowired
private CaffeineService caffeineService;
//http://localhost:8080/caffeine/put?key=k1&value=v1
@GetMapping("/put")
public String put(
@RequestParam(value="cacheName",required = false)String cacheName,
@RequestParam String key,
@RequestParam String value
){
caffeineService.putValue(cacheName,key,value);
return "success";
}
//http://localhost:8080/caffeine/get?key=k1&cacheName=default
@GetMapping("/get")
public String get(
@RequestParam String cacheName,
@RequestParam String key
){
String value = caffeineService.getValue(cacheName, key);
return "success: " + value;
}
}
end
總結
以上是生活随笔為你收集整理的项目总结71:Caffeine的基本概念和使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在线画图工具
- 下一篇: 【Android架构GPS篇】之定位数据