package jef.database.cache;
import java.util.List;
import java.util.concurrent.TimeUnit;
import com.google.common.cache.CacheBuilder;
/**
* 缓存存储的最后一道
*
* 参数 <-> 缓存
* @author jiyi
*
*/
final class DimCacheExpImpl extends DimCache{
private final com.google.common.cache.Cache<List<?>, List<?>> sqlCache;
/**
* 构造
* @param seconds 缓存过期时间,单位秒
*/
DimCacheExpImpl(int seconds){
sqlCache=CacheBuilder.newBuilder().expireAfterWrite(seconds, TimeUnit.SECONDS).build();
}
/**
* 加载缓存
* @param params
* @return
*/
public List<?> load(List<?> params) {
return sqlCache.getIfPresent(params);
}
/**
* 删除缓存
* @param params
*/
public void remove(List<?> params) {
sqlCache.invalidate(params);
}
/**
* 将结果放入缓存
* @param params 查询参数
* @param obj 查询结果(不可修改的List)
*/
public void put(List<?> params, List<?> obj) {
sqlCache.put(params, obj);
}
@Override
public String toString() {
return sqlCache.toString();
}
@Override
public void clear() {
sqlCache.invalidateAll();
}
}