某次开发碰到使用本地缓存二级缓存,为了以后学习,还是记下来为好。
/**
* 从本地缓存中获取缓存数据
* @param cacheKey 缓存数据的KEY
* @return Object对象,请自行转换类型
*/
public Object get(String cacheKey) {
HashMap<String,Object> cacheMap = localCache.get(cacheKey);
if ( cacheMap != null ) {
long currentTime = System.currentTimeMillis();
if(currentTime < (Long)cacheMap.get(CACHETIME)){
//将数据移至队列尾部
queue.remove(cacheKey);
queue.offer(cacheKey);
return cacheMap.get(CACHEVALUE);
}
}
return null;
}
/**
* 将数据缓存至本地缓存
* @param cacheKey 缓存数据的KEY
* @param cacheValue 缓存数据
* @param intervalTime 缓存有效期Long类型
*/
public Object put(String cacheKey,Object cacheValue,long intervalTime){
//缓存数据
HashMap<String,Object> cacheMap = new HashMap<String,Object>();
long nowTime = System.currentTimeMillis();
long expireTime = nowTime + intervalTime;
cacheMap.put(CACHETIME,expireTime);
cacheMap.put(CACHEVALUE, cacheValue);
//将数据移至队列尾部
queue.remove(cacheKey);
queue.offer(cacheKey);
return localCache.put(cacheKey, cacheMap);
}
/**
* 延长有效期时间
* @param cacheKey 缓存数据的KEY
* @param intervalTime 缓存有效期Long类型
*/
public void expire(String cacheKey,long intervalTime){
long nowTime = System.currentTimeMillis();
long expireTime = nowTime + intervalTime;
HashMap<String,Object> cacheMap = localCache.get(cacheKey);
if(cacheMap==null){
return;
}
cacheMap.put(CACHETIME,expireTime);
}
/**
* 移除本地缓存数据
* @param cacheKey 缓存数据的KEY
*/
public Object remove(String cacheKey){
queue.remove(cacheKey);
return localCache.remove(cacheKey);
}
浏览器的缓存
localStorage=window.localStorage
获取缓存
localStorage.getItem(key);
删除缓存
localStorage.removeItem(key);
放置缓存
localStorage.setItem(key, +new Date() + 24 * 60 * 60 * 60 * 1000);