package com.ketayao.fensy.cache;
import java.io.Serializable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* 缓存助手
*/
public class CacheManager {
private final static Logger log = LoggerFactory.getLogger(CacheManager.class);
private static CacheProvider provider;
static {
initCacheProvider("com.ketayao.fensy.cache.EhCacheProvider");
}
private static void initCacheProvider(String prvName) {
try {
CacheManager.provider = (CacheProvider) Class.forName(prvName).newInstance();
CacheManager.provider.start();
log.info("Using CacheProvider : " + provider.getClass().getName());
} catch (Exception e) {
log.error("Unabled to initialize cache provider:" + prvName + ", using ehcache default.", e);
CacheManager.provider = new EhCacheProvider();
}
}
private final static Cache getCache(String cacheName, boolean autoCreate) {
if (provider == null) {
provider = new EhCacheProvider();
}
return provider.buildCache(cacheName, autoCreate);
}
/**
* 获取缓存中的数据
*
* @param name
* @param key
* @return
*/
public final static Object get(String name, Serializable key) {
if (name != null && key != null)
return getCache(name, true).get(key);
return null;
}
/**
* 获取缓存中的数据
*
* @param <T>
* @param resultClass
* @param name
* @param key
* @return
*/
@SuppressWarnings("unchecked")
public final static <T> T get(Class<T> resultClass, String name,
Serializable key) {
if (name != null && key != null)
return (T) getCache(name, true).get(key);
return null;
}
/**
* 写入缓存
*
* @param name
* @param key
* @param value
*/
public final static void put(String name, Serializable key,
Serializable value) {
if (name != null && key != null && value != null)
getCache(name, true).put(key, value);
}
/**
* 清除缓冲中的某个数据
*
* @param name
* @param key
*/
public final static void evict(String name, Serializable key) {
if (name != null && key != null)
getCache(name, true).remove(key);
}
/**
* 清除缓冲中的某个数据
*
* @param name
* @param key
*/
public final static void justEvict(String name, Serializable key) {
if (name != null && key != null) {
Cache cache = getCache(name, false);
if (cache != null)
cache.remove(key);
}
}
/**
* 清楚所有的缓存 描述
*
* @param name
*/
public final static void clear(String name) {
if (name != null)
getCache(name, true).clear();
}
}