如果需要移除监听器,请使用RemovalListeners.asynchronous(RemovalListener, Executor)方法来装饰 RemovalListener,这样可以以异步的方式运行。 3.6、数据清理时机 使用CacheBuilder 构建的缓存不会“自动”执行清理和逐出值,也不会在值过期后立即执行清理和逐出值,也不会执行任何类似操作。相反,它会在写入操作期间执行少量维护,...
请勿在用于高吞吐量的缓存中调用Cache::cleanUp方法。当设置了removalListener、expireAfterWrite、expireAfterAccess、weakKeys、weakValues、softValues后,会导致维护任务运行。 由CacheBuilder创建的缓存可以被序列化和反序列化。序列化时会写入所有的配置信息,但是不会写入任何缓存数据信息。 CacheBuilder方法说明 initialCapacity...
通过CacheBuilder.removalListener(RemovalListener),你可以声明一个监听器,以便缓存项被移除时做一些额外操作。缓存项被移除时,RemovalListener会获取移除通知RemovalNotification,其中包含移除原因RemovalCause、键和值。 举个例子: RemovalListener<String, String> myRemovalListener = notification -> { System.out.println(notifi...
通过CacheBuilder.maximumSize(long)方法可以设置Cache的最大容量数,当缓存数量达到或接近该最大值时,Cache将清除掉那些最近最少使用的缓存 代码如下: private LoadingCache<String,Long> thirdShopMap = CacheBuilder.newBuilder(). expireAfterWrite(5L, TimeUnit.MINUTES). maximumSize(5000L). build(new CacheLoader<...
监听器:CacheBuilder.removalListener(RemovalListener) 清理缓存时间:只有在获取数据时才或清理缓存LRU,使用者可以单起线程采用Cache.cleanUp()方法主动清理。 刷新:主动刷新方法LoadingCache.referesh(K) 信息统计:CacheBuilder.recordStats()开启Guava Cache的统计功能。Cache.stats()返回CacheStats对象。(其中包括命中率等相...
cache = CacheBuilder.newBuilder()//缓存池大小,在缓存项接近该大小时, Guava开始回收旧的缓存项.maximumSize(1000)//设置时间对象没有被读/写访问则对象从内存中删除.expireAfterAccess(1, TimeUnit.HOURS)//移除监听器,缓存项被移除时会触发.removalListener(newTestCacheRemoveListener())//.recordStats()//开...
Cache是通过CacheBuilder对象来build出来的,build之前可以设置一系列的参数 LoadingCache LoadingCache继承自Cache,当从缓存中读取某个key时,假如没有读取到值,LoadingCache会自动进行加载数据到缓存 @Test public void loadingCacheTest() throws ExecutionException { LoadingCache<String,String> loadingCache = CacheBuilder.new...
@Slf4j public class GuavaCache { private static Cache<String, Object> cache = CacheBuilder.newBuilder() .maximumSize(1000000) .expireAfterWrite(60, TimeUnit.SECONDS) .concurrencyLevel(4) .initialCapacity(1000) //配置上recordStats,cache.stats()才能生效 //.recordStats() .removalListener(new RemovalL...
Builder配置简单示例ManualCache模式下面以用户服务为例,我们看下如何在增删改查方法中使用缓存:private Cache<String, User> cache = CacheBuilder.newBuilder() .expireAfterWrite(3, TimeUnit.SECONDS)//写入多久没更新自动过期,先删除,后load .removalListener(new RemovalListener<Object, Object>() {@Overr...
通过CacheBuilder.removalListener(RemovalListener),你可以声明一个监听器,以便缓存项被移除时做一些额外操作。缓存项被移除时,RemovalListener会获取移除通知RemovalNotification,其中包含移除原因RemovalCause、键和值。 举个例子: RemovalListener<String, String> myRemovalListener = notification -> { ...