//缓存
public static final Map<String, Object> ACCESSTOKENMAP = new ConcurrentHashMap<>(16);
//失效key
public static final String EXPIRE = "BEI";
//毫秒
public static final long TIME_MILLISECOND = 1000;
/**
* @Description:有过期时间的放入,存放时间大于0, 时间单位毫秒
*/
public static void putAccessToken(String key, String value, long expire) {
ACCESSTOKENMAP.put(key, value);
ACCESSTOKENMAP.put(key + EXPIRE, System.currentTimeMillis() + expire);
}
/**
* @Description: 移除某个key的值
*/
public static void remove(String key) {
ACCESSTOKENMAP.remove(key);
ACCESSTOKENMAP.remove(key + EXPIRE);
}
/**
* @Description: 检查缓存对象是否存在,若不存在,则返回false
* 若存在,检查其是否已过有效期,如果已经过了则删除该缓存并返回false
*/
public static boolean removeExpire(String key) {
Object o = ACCESSTOKENMAP.get(key + EXPIRE);
if (o == null) {
return false;
}
Long expire = (Long) o;
if (expire < System.currentTimeMillis()) {
remove(key);
return false;
}
return true;
}
/**
* @Description: 获取值,先移除过期的对象,最后返回有效值
*/
public static String getAccessToken(String key) {
boolean flag = removeExpire(key);
if (flag) {
Object o = ACCESSTOKENMAP.get(key);
if (o != null && o instanceof String) {
return (String) o;
} else {
return null;
}
} else {
return null;
}
}
java 本地储存数据
最新推荐文章于 2024-05-29 18:00:39 发布