CacheBuilder.newBuilder().expireAfterAccess
时间: 2024-02-05 09:32:52 浏览: 134
这是 Guava 缓存库中的一个方法调用,用于创建一个新的缓存构建器对象。`expireAfterAccess` 方法用于设置缓存条目在最后一次访问之后一段时间内没有被访问时将被自动移除。可以通过传递一个持续时间和时间单位来指定该时间段的长度。例如,以下代码将创建一个缓存构建器,其中缓存条目将在最后一次访问后的10分钟内没有被访问时被移除:
```
CacheBuilder.newBuilder()
.expireAfterAccess(10, TimeUnit.MINUTES)
...
```
这样设置可以帮助减少缓存中过期或不再需要的数据的数量,从而避免占用过多的内存空间。
相关问题
CacheBuilder.newBuilder
CacheBuilder.newBuilder是Google Guava库中的一个方法,用于创建一个新的CacheBuilder实例。CacheBuilder是构建缓存的构建器,它提供了许多配置选项来自定义缓存的行为。使用CacheBuilder.newBuilder()方法可以创建一个默认的CacheBuilder实例,然后可以使用该实例上的其他方法来进行进一步的配置和构建。
例如,可以使用maximumSize方法设置缓存的最大容量,可以使用expireAfterAccess或expireAfterWrite方法设置缓存项的过期时间,可以使用removalListener方法设置缓存项被移除时的回调函数等等。
在引用中的代码示例中,CacheBuilder.newBuilder()方法被用于创建一个CacheBuilder实例,并在构建时通过链式调用方法设置了maximumSize选项。
注意,引用中提到的asMap视图上的方法不会自动加载缓存项,因此在需要自动加载缓存项的情况下,应该优先使用Cache.get(K, Callable<V>)方法,而不是Cache.asMap().putIfAbsent方法。
引用提到了Cache和LoadingCache接口,Cache是缓存的基本接口,LoadingCache是继承自Cache接口的接口,用于支持自动加载缓存项的缓存。在使用CacheBuilder.newBuilder()方法创建CacheBuilder实例时,可以通过build方法传入一个CacheLoader实例来实现自动加载缓存项的功能。
总之,CacheBuilder.newBuilder()方法是Google Guava库中用于创建CacheBuilder实例的方法,通过该实例可以进行缓存的配置和构建。
Cache<String, List<LoginLog>> cache = CacheBuilder.newBuilder() .initialCapacity(500) .expireAfterWrite(1, TimeUnit.MINUTES) .expireAfterAccess(1, TimeUnit.MINUTES) .removalListener(new RemovalListener<String, List<LoginLog>>() { @Override public void onRemoval(RemovalNotification<String, List<LoginLog>> loginLogs) { loginLogService.saveBatch(loginLogs.getValue()); log.info("login log save count: {}", loginLogs.getValue().size()); } }) .build();
这段代码使用了Google Guava库中的CacheBuilder创建了一个缓存,缓存的键类型为String,值类型为List<LoginLog>。缓存初始容量为500,缓存的条目在写入后1分钟过期,同时也在1分钟内没有被访问过期。当缓存中的条目被移除时,会触发RemovalListener监听器的onRemoval方法,该方法会将移除的条目保存到数据库中,并打印出保存的条目数量。这段代码主要用于实现一个简单的登录日志缓存功能。
阅读全文