java中本地缓存,并设置过期时长
时间: 2024-09-21 17:08:23 浏览: 77
java操作Redis缓存设置过期时间的方法
在Java中,本地缓存通常指的是应用级别的内存存储,用于暂时存放常用数据以提高访问速度,如`java.util.concurrent.Cache`接口和`java.util.concurrent.LocalCache`类就是这样的机制。其中`LocalCache`是`ConcurrentHashMap`的一个定制版本,支持自定义加载策略。
为了设置缓存项的过期时长,你可以使用`expireAfterWrite`或`expireAfterAccess`方法。例如:
```java
LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder()
.maximumSize(100) // 设置最大容量
.expireAfterWrite(60, TimeUnit.MINUTES) // 缓存项写入后60分钟后自动失效
.build(key -> loadGraphFromDatabase(key)); // 自定义加载函数
// 使用缓存
Graph graph = graphs.getIfPresent(key); // 如果key存在,获取并返回图,否则触发loadGraphFromDatabase
```
这里,`expireAfterWrite(60, TimeUnit.MINUTES)`表示当新的值写入缓存后60分钟未被访问或修改,该缓存项将失效。
需要注意的是,`expireAfterWrite`关注的是最后一次写入操作,而`expireAfterAccess`则会在最近一次访问之后超出指定时间就过期。选择哪种取决于你的需求,是否希望基于访问频率还是写入频率来控制缓存寿命。
阅读全文