import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import org.springframework.beans.factory.InitializingBean;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
public class TestCacheService implements InitializingBean {
private Cache<String,String> localCache;
public String getKey(String key) throws ExecutionException {
//在缓存中获取
return localCache.get(key, () -> {
//没有值时调用
return initCache(key);
});
}
private String initCache(String key){
Map<String,String> map=new HashMap<>();
map.put("name","fsk");
localCache.putAll(map);
return map.get(key);
}
//设置大小 和失效策略
@Override
public void afterPropertiesSet() throws Exception {
CacheBuilder.newBuilder().maximumSize(1000).expireAfterWrite(30, TimeUnit.SECONDS)
.removalListener(record-> System.out.println("缓存移除"+record.toString())).build();
}
}
关于缓存一点点使用
最新推荐文章于 2025-03-31 18:46:23 发布
该代码示例展示了如何在Java中利用GoogleGuava库创建一个本地缓存,并集成到Spring应用中。TestCacheService类实现了InitializingBean接口,以在应用启动时配置缓存的大小和过期策略。当从缓存中获取键值对时,如果不存在则调用initCache方法初始化。缓存项将在写入后30秒过期,并在被移除时触发监听器打印日志。
2841

被折叠的 条评论
为什么被折叠?



