cache = CacheBuilder.newBuilder()
.recordStats()
.maximumSize(5000000)
.expireAfterWrite(1, TimeUnit.MINUTES)
.build(
new CacheLoader() {
@Override
public Integer load(String key) throws Exception {
//伪代码:
//查询数据库并返回existFlag
//return existFlag;
//数据库中查询不到,返回null
return null;
}
}
);
}
```
#### 手动加载缓存方式
代码示例:
```java
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit;
@Component
public class VehicleNumCache {
private static Logger logger = LoggerFactory.getLogger(VehicleNumCache.class);
private final Integer existFlag = new Integer(1);
private Cachecache = CacheBuilder.newBuilder()
.recordStats()
.maximumSize(5000000)
.expireAfterWrite(1, TimeUnit.MINUTES)
.build();
public Integer get(String vehicleNum){
logger.info(cache.stats().toString());
return cache.getIfPresent(vehicleNum);
}
public void put(String vehicleNum){
cache.put(vehicleNum,existFlag);
}
}
```
#### 如何调用
代码示例:
```java
Integer flag = vehicleNumCache.get(vehicleNum);
//缓存不存在
if(flag == null){
filterVehicleList.add(v);
}
```
调用前记得注入缓存类vehicleNumCache