设置guava 缓存失效时间和缓存移除
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import java.util.concurrent.TimeUnit;
/**
* @Description:
* @Param:
* @return:
* @Author: fuguowen
* @date: 2019-07-30 17:23
* @email: fuguowen@fantaike.ai
*/
public class GuavaUtils {
private static Cache<String, String> loadingCache = CacheBuilder.newBuilder()
/*设置缓存容器的初始容量大小为10*/
.initialCapacity(100)
/*设置缓存容器的最大容量大小为100*/
.maximumSize(200)
/*设置记录缓存命中率*/
.recordStats()
/*设置并发级别为8,智并发基本值可以同事些缓存的线程数*/
.concurrencyLevel(20)
/*设置过期时间为2秒*/
.expireAfterWrite(60*10, TimeUnit.SECONDS)
//设置缓存的移除通知
.removalListener(notification -> {
CommonLogger.info("","",notification.getKey() + " " + notification.getValue() + " 被移除,原因:" + notification.getCause());
}).build();
public static void setKeyVal(String key, String value){
loadingCache.put(key, value);
}
public static String getValByKey(String key){
String value = loadingCache.getIfPresent(key);
return value;
}
public static void delKey(String key){
loadingCache.invalidate(key);
}
}