帮我用Java写一个缓存用于存储过期时间
以下是一个基本的Java缓存实现,可以存储key-value对,并设置过期时间。在添加一个key-value对时,可以指定过期时间,这个过期时间是从当前时间开始计算的。
import java.util.HashMap;
import java.util.Map;
public class Cache {
private Map<String, CacheObject> cacheMap;
public Cache() {
this.cacheMap = new HashMap<>();
}
public void put(String key, Object value, int expirationInSeconds) {
long expirationTime = System.currentTimeMillis() + expirationInSeconds * 1000L;
CacheObject cacheObject = new CacheObject(value, expirationTime);
cacheMap.put(key, cacheObject);
}
public Object get(String key) {
CacheObject cacheObject = cacheMap.get(key);
if (cacheObject != null && cacheObject.expirationTime > System.currentTimeMillis()) {
return cacheObject.value;
}
cacheMap.remove(key);
return null;
}
private class CacheObject {
private Object value;
private long expirationTime;
public CacheObject(Object value, long expirationTime) {
this.value = value;
this.expirationTime = expirationTime;
}
}
}
使用示例:
Cache cache = new Cache();
// 添加一个key-value对,设置过期时间为10秒钟
cache.put("key", "value", 10);
// 获取key对应的value
Object value = cache.get("key");
// 等待10秒钟,再次获取key对应的value
Thread.sleep(10000);
Object value2 = cache.get("key"); // 返回null,因为已经过期
``
原文地址: https://www.cveoy.top/t/topic/cvEW 著作权归作者所有。请勿转载和采集!