public class CacheDemo{
private static final Map<String, Object> CACHE_MAP = new ConcurrentHashMap<>();
public static void put(String cacheName, String authorization, long expireIn) {
CACHE_MAP.put(cacheName, authorization);
CACHE_MAP.put(cacheName + "_" + Constants.EXPIRES_IN, LocalDateTime.now().plus(expireIn, ChronoUnit.SECONDS));
log.info("{} :is successfully stored in the cache!expires in:{}", cacheName, expireIn);
}
public static Object get(String cacheName) {
if (checkCacheName(cacheName)) {
return CACHE_MAP.get(cacheName);
}
return null;
}
private static boolean checkCacheName(String cacheName) {
LocalDateTime cacheHoldTime = (LocalDateTime) CACHE_MAP.get(cacheName + "_" + Constants.EXPIRES_IN);
if (cacheHoldTime == null) {
return false;
}
if (LocalDateTime.now().isAfter(cacheHoldTime)) {
log.info("cache:{} has been expired!", cacheName);
remove(cacheName);
return false;
}
return true;
}
public Integer size() {
return CACHE_MAP.size();
}
public boolean isExist(String cacheName) {
if (!checkCacheName(cacheName)) {
return Boolean.FALSE;
}
return CACHE_MAP.containsKey(cacheName);
}
public static void remove(String cacheName) {
CACHE_MAP.remove(cacheName);
CACHE_MAP.remove(cacheName + "_" + Constants.EXPIRES_IN);
}
}