java中本地缓存,并单独设置过期时长
时间: 2024-09-21 11:08:33 浏览: 36
20190806-深圳-中国平安-Java中级.pdf
在Java中,本地缓存通常指的是应用程序内存级别的数据存储,例如使用`java.util.concurrent.Cache`接口或者`java.util.concurrent.LocalCache`类。`LocalCache`是`ConcurrentHashMap`的一个子类,提供了一个键值对的缓存区域,其中的数据可以在程序运行期间临时存储。
要创建一个本地缓存并设置过期时间,可以按照以下步骤操作:
1. 使用Guava库:如果你项目中使用了Google Guava库,你可以创建一个`LoadingCache`,它支持延迟加载和自动过期。示例:
```java
LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder()
.maximumSize(100) // 设置最大容量
.expireAfterWrite(5, TimeUnit.MINUTES) // 过期时间为5分钟
.build(
new CacheLoader<Key, Graph>() {
@Override
public Graph load(Key key) throws AnyException {
return createExpensiveGraph(key); // 创建成本高的图
}
});
```
这里,`expireAfterWrite`表示数据会在写入后的指定时间内过期。
2. 自定义实现:如果没有使用库,可以自定义一个简单的缓存,利用`WeakHashMap`或`SoftReference`实现弱引用,结合定时任务定期清理。但是这种方式的过期不是精确的,依赖于垃圾回收机制。
注意,过期策略有多种,如`expireAfterAccess`(访问后过期)、`expireAfterWrite`(写入后过期)等,可以根据实际需求选择合适的方式。另外,在清理缓存时应尽量避免阻塞业务线程,通常通过异步方式进行。
阅读全文