提供一个Caffeine的可以设置过期时间工具类
时间: 2024-01-20 18:04:41 浏览: 95
Caffeine工具包
好的,以下是一个基于 Caffeine 缓存库的工具类,可以设置缓存过期时间的示例代码:
```java
import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
import java.util.concurrent.TimeUnit;
public class CaffeineUtil {
private static Cache<String, Object> cache;
static {
cache = Caffeine.newBuilder()
.expireAfterWrite(10, TimeUnit.MINUTES) // 设置缓存过期时间为 10 分钟
.maximumSize(1000) // 设置缓存最大容量为 1000
.build();
}
/**
* 将数据存入缓存,并设置过期时间
* @param key 缓存键
* @param value 缓存值
* @param expireTime 过期时间(单位:秒)
*/
public static void put(String key, Object value, long expireTime) {
cache.put(key, value);
if (expireTime > 0) {
new Thread(() -> {
try {
Thread.sleep(expireTime * 1000);
cache.invalidate(key);
} catch (InterruptedException e) {
e.printStackTrace();
}
}).start();
}
}
/**
* 从缓存中获取数据
* @param key 缓存键
* @return 缓存值
*/
public static Object get(String key) {
return cache.getIfPresent(key);
}
/**
* 从缓存中删除数据
* @param key 缓存键
*/
public static void remove(String key) {
cache.invalidate(key);
}
}
```
使用方法:
```java
CaffeineUtil.put("key1", "value1", 60); // 将数据存入缓存,并设置过期时间为 60 秒
Object value = CaffeineUtil.get("key1"); // 从缓存中获取数据
CaffeineUtil.remove("key1"); // 从缓存中删除数据
```
在 `put` 方法中,我们启动了一个新线程,等待指定的过期时间后再从缓存中删除数据。当过期时间小于等于 0 时,数据将永久保存在缓存中。您可以根据自己的需求调整过期时间的单位和缓存最大容量等属性。
阅读全文